Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Daca nu ar conta salariul, ce mes...

Racordare la apa termosemineu

Mi-am luat 4x4 si vreau sa-l testez

Recomandare laptop cu luminozitat...
 Cautarea pe google android nu merge

Caut serviciu serios de captura v...

Frauda magazin online

AC Woods Venezia Smart - nu races...
 podea ciment denivelata

Îndepartare bule folie reflectoriz...

Revista imobiliara cu poze... cir...

Recomandare soundbar pentru laptop
 Veți renunța in 2025 la...

Coaxial pentru cablare casa

"Gipane" cu girofar care ...

Mai e cineva pe forum, in afara d...
 

Extragere numar din fisier C++

- - - - -
  • Please log in to reply
27 replies to this topic

#1
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,237
  • Înscris: 06.03.2011
Va salut!

Ma chinui la o problema de C++, daca aveti ceva sugestii, as aprecia daca ati impartasi.

Ce vreau sa fac:
Am un fisier .txt ce contine ceva de genul acesta:

------------------------------------------------------------------------------
hji started at: 00096110  Number: 1
kuy completed at: 00100857  Number: 1
------------------------------------------------------------------------------
------------------------------------------------------------------------------
opi started at: 00095972  Number: 2
uyt completed at: 00098694  Number: 2
------------------------------------------------------------------------------
------------------------------------------------------------------------------

Si asa mai departe.

Eu vreau sa extrag strict numerele acelea care in cazul de fata reprezinta secundele.
Retin numarul de la completed intr-o variabila din care scad numarul retinut din linia ce contine "started" si afisez rezultat in alt fisier.

Ceea ce am reusit sa fac:

int n,i,j,k,f,x,y;
i=0; j=0; k=0; f=1; x=8; y=8;
n=strlen(s); //lungimea liniei;
for(i=0;i<n;i++)
{
if(a[i]=='s'); //din moment ce mereu imi apare o singura data litera "s" pe linie, am hotarat sa o iau ca reper, la fel si cu litera "c" mai jos; mai tarziu o sa incerc sa retin intr-un vector "started" si sa fac cu functia strchr, dar deocamdata imi trebuie altceva, dupa cum urmeaza sa va explic la final;
{
  for(i=0;i<n;i++)
  {
   if((a[i]=='0')||(a[i]=='1')||(a[i]=='2')||(a[i]=='3')||(a[i]=='4')||(a[i]=='5')||(a[i]=='6')||(a[i]=='7')||(a[i]=='8')||(a[i]=='9'))
   {
v[j]=v[j]+(10^x)*a[i];
j++;
x--;
   }
  }
else if(a[i]=='c')
{
  for(i=0;i<n;i++)
  {
   if((a[i]=='0')||(a[i]=='1')||(a[i]=='2')||[i]=='3')||(a[i]=='4')||(a[i]=='5')||(a[i]=='6')||(a[i]=='7')||(a[i]=='8')||(a[i]=='9'))
   {
z[k]=z[k]+(10^y)*a[i];
k++;
y--;
   }
  }
}
}
for(j=0;j<8;j++)
{
for(k=0;k<8;k++)
d[f]=z[k]-v[j];
f++;
cout<<"Timpul in care s-a efectuat procesul numarul"<< f <<"este"<< d[f] <<endl;
}
}
Oricum, tocmai am observat ca n-o sa iasa, fiindca mai este o cifra pe care o s-o ia de la "Number ... ", acolo, o sa indrept problema asta mai tarziu.
Nu am mai lucrat in C++ din liceu si nu mai retin chichitele alea, cum ar fi:

1) Citirea si afisarea din/in fisier. Cum trebuie sa declar la inceput si la sfarsit ce trebuie pus (din cate imi mai aduc aminte ceva de genul f.close()Posted Image;

2) Afisarea unei variabile (nu cred ca e bine cum am facut eu la cout ul din final);

3) Citirea si parcurgerea primei linii din fisier sub forma unui sir de caractere;

4) Declararea unui vector;

In principal la aceste chestiuni v-as ruga, pe cat posibil sa-mi dati niste raspunsuri punctuale, sunt chestii de baza pe care nu le mai retin plus ca nu sunt prea priceput oricum. Posted Image

Va multumesc anticipat si daca mai gasesc ceva o sa mai adaug pe parcurs!

Edited by vlad29marko, 12 August 2015 - 20:00.


#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,661
  • Înscris: 10.08.2005

Quote

Nu am mai lucrat in C++ din liceu si nu mai retin chichitele alea, cum ar fi:
1) Citirea si afisarea din/in fisier. Cum trebuie sa declar la inceput si la sfarsit ce trebuie pus (din cate imi mai aduc aminte ceva de genul f.close(););
2) Afisarea unei variabile (nu cred ca e bine cum am facut eu la cout ul din final);
3) Citirea si parcurgerea primei linii din fisier sub forma unui sir de caractere;
4) Declararea unui vector;
si nu crezi ca ar fi foarte util sa aprofundezi teoria respectiva?

#3
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,237
  • Înscris: 06.03.2011
Am iesit din ciclul studiilor, mi-ar ramane doar varianta netului, dar informatiile sunt diferite si mai tare devin confuz. Aici speram sa fiu indrumat oarecum de voi. :)

#4
VladBtz

VladBtz

    Active Member

  • Grup: Members
  • Posts: 1,702
  • Înscris: 24.09.2014
Cum adica ai iesit din ciclul studiilor? Foloseste si tu butonul code <> cand pui cod ca se vede urat

#5
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,237
  • Înscris: 06.03.2011
Adica am terminat cu scoala, facultatea, etc. de multa vreme.

Am sa tin cont, ms!

#6
VladBtz

VladBtz

    Active Member

  • Grup: Members
  • Posts: 1,702
  • Înscris: 24.09.2014
if((a[i]=='0')||(a[i]=='1')||(a[i]=='2')||[i]=='3')||(a[i]=='4')||(a[i]=='5')||(a[i]=='6')||(a[i]=='7')||(a[i]=='8')||(a[i]=='9'))

ce Dumnezeu e asta? nu puteai sa pui >='0' && <='9' ? Daca in loc de cifre aveai alfabetu puneai 23 de ||  ? si daca se facea distinctia intre mari si mici puneai 46? faceai un if kilometric? sa inteleg ca nu ai facut facultatea in domeniu? de unde pasiunea asta intarziata ptr c++?

i=0; j=0; k=0; f=1; x=8; y=8; puteai sa le initializezi direct in int . Ai citit datele din fisier? Modifica codul si mai posteaza-l odata cu CODE(butonu <>  ) . E pentru noobi, dar oamenii au o anumita prestanta si nu se uita la cod daca il scrii in halul asta.

vrei sa iti facem noi selectia informatiilor pe care sa le citesti sau ce? iti inchipui ca nu iti predam siruri de caractere si pointeri aici .

Edited by VladBtz, 12 August 2015 - 22:48.


#7
modoran

modoran

    Senior Member

  • Grup: Senior Members
  • Posts: 8,503
  • Înscris: 08.02.2011
Eu as folosi un regex pentru a extrage alea ( stiu, probabil unii imi vor sari in cap ca vezi doamne nu e eficient bla bla bla, dar isi face treaba ).

#8
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,237
  • Înscris: 06.03.2011
# include <iostream>
# include <conio>
# include <string>
# include <stdlib>
# include <fstream>
using namespace std;
int main ()
{
  ifstream f;
  ofstream g;
  f.open("fisier.txt");
int n,i=0,j=0,k=0,f=1,x=8,y=8;
n=strlen(s);
for(i=0;i<n;i++)
{
if(a[i]=='s');
{
  for(i=0;i<n;i++)
  {
   if((a[i]>='0')&&(a[i]<='9'))
   {
	v[j]=v[j]+(10^x)*a[i];
	j++;
	x--;
   }
   if(a[i+1]==' ')
	break;
  }
else if(a[i]=='c')
{
  for(i=0;i<n;i++)
  {
   if((a[i]>='0')&&(a[i]<='9'))
   {
	z[k]=z[k]+(10^y)*a[i];
	k++;
	y--;
   }
   if(a[i+1]==' ')
	break;
  }
}
}
for(j=0;j<8;j++)
{
for(k=0;k<8;k++)
d[f]=z[k]-v[j];
f++;
cout<<"Timpul in care s-a efectuat procesul"<< f <<"este"<< d[f] <<endl;
}
f.close();
g.close();
gethce();
}


Am rezolvat problema pe care o remarcasem aseara cand prelucra si numarul de dupa " Number ... " cu acel break dupa ce termina de parcurs numarul.
Am gasit si am completat un pic cu inceputul abordarii citirii din fisier, dar eu vreau sa citesc linie cu linie fiecare sir, aici ma blochez.

Multumesc de indicatii!

#9
VladBtz

VladBtz

    Active Member

  • Grup: Members
  • Posts: 1,702
  • Înscris: 24.09.2014
Scrie le net probleme siruri de caractrre si o sa gasesti rezolvare la faza cu randurile

#10
andreim77

andreim77

    Senior Member

  • Grup: Senior Members
  • Posts: 4,248
  • Înscris: 11.04.2006

View Postmodoran, on 13 august 2015 - 05:12, said:

Eu as folosi un regex pentru a extrage alea ( stiu, probabil unii imi vor sari in cap ca vezi doamne nu e eficient bla bla bla, dar isi face treaba ).
Si e destul de eficient, dar pentru incepatori e indicata o rezolvare algoritmica.

#11
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,237
  • Înscris: 06.03.2011
Am tot lucrat la el, l-am scapat de erori si am reusit sa afisez ceva in fisier.
Codul arata acum cam asa:
# include <iostream>
# include <fstream>
using namespace std;
int main ()
{
   
	ifstream f;
	ofstream g;
	f.open("Procese.txt");
	g.open("RezultateProcese.txt");
   
	long n,z=0,v=0,s=1,m=1,u=0,i=0,j=0,k=0,p=1,x=7,y=7,a[1000],q[1000],r[1000],d[1000];
   
	while(f>>n)
	{
	for(i=0;i<n;i++)
	{
					if(a[i]=='d')
					{u=i+6;
					for(i=u;i<=u+7;i++)
					{
									   v=v+(10^x)*a[i];
									   x--;
					}
					r[m]=v;
					m++;
	}}
   
	for(i=0;i<n;i++)
	{
					if(a[i]=='c')
					{u=i+14;
					for(i=u;i<=u+7;i++)
					{
									   z=z+(10^y)*a[i];
									   y--;
					}
					q[s]=z;
					s++;
	}}
}
for(p=1;p<4;p++)
{
				 d[p]=q[s]-r[m];
				 s++;
				 m++;
				 g<<"Timpul in care s-a efectuat procesul"<<" "<< p <<" "<<"este"<<" "<< d[p] <<endl<<endl;
}
f.close();
g.close();
}


Fisierul cu datele de intrare arata asa:

started at: 00000005  Number: 1
completed at: 00000005  Number: 1
------------------------------------------------------------------------------
------------------------------------------------------------------------------
started at: 00000000  Number: 2
completed at: 00000100  Number: 2
------------------------------------------------------------------------------
------------------------------------------------------------------------------
started at: 09999999  Number: 3
completed at: 10000000  Number: 3


Imi afiseaza in fisier urmatoarele:

Timpul in care s-a efectuat procesul 1 este 0
Timpul in care s-a efectuat procesul 2 este 0
Timpul in care s-a efectuat procesul 3 este 0

Nu inteleg de ce. E ceva in neregula si nu imi dau seama unde. De ce da 0 peset tot? Ma puteti ajuta va rog?

#12
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
long n,z=0,v=0,s=1,m=1,u=0,i=0,j=0,k=0,p=1,x=7,y=7,a[1000],q[1000],r[1000],d[1000];

Serios? Si eu cum aflu ce faci tu cu fiecare variabila? :|

#13
andreim77

andreim77

    Senior Member

  • Grup: Senior Members
  • Posts: 4,248
  • Înscris: 11.04.2006
hai ca asa programai si tu la inceput, mai exact toti faceam la fel :)

#14
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
Sunt sincer si iti zic ca si acum mai programez asa cand vreau sa testez ceva, dar am 2-3 variabile si codul ala in cateva minute il sterg, daca nu-mi iese si vreau sa cer ajutorul cuiva atunci redenumesc variabilele sa inteleaga si cei care vor sa ma ajute ce vreau sa fac...

#15
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,237
  • Înscris: 06.03.2011
d=vectorul in care se retin valorile finale care ma intereseaza
q=vectorul in care se retin valorile la care s-a finalizat procesul
r=vectorul in care se retin valorile la care a inceput procesul
a=vectorul ce contine toate elementele fisierului cu datele de intrare

x,y=exponentii folositi pentru construirea numerelor ce vor fi puse in vectorii q si r

p=contorul vectorului d
s=contorul vectorului q
m=contorul vectorului r
i=contorul vectorului a
u=contorul care retine pozitia de la care incepe sa apara secventa care ma intereseaza, respectiv numarul

k si j pot fi stersi, acum am observat ca nu-i folosesc;

v si z sunt variabilele in care se retin numerele pentru fiecare proces in parte - v pentru valoarea de start si z penru valoarea de stop, ele sunt puse in vectorii mai sus amintiti

n=numarul de elemente din fisierul de intrare

Hai ca nu-i chiar asa urat. Posted Image

Am inteles ce vrei sa subliniezi, EnachescuAlin, ai dreptate, o sa tin cont si de asta pe viitor.
Am postat "legenda" de data asta. Posted Image

Edited by vlad29marko, 13 August 2015 - 15:20.


#16
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,672
  • Înscris: 30.07.2003

View Postvlad29marko, on 13 august 2015 - 13:58, said:

Nu inteleg de ce. E ceva in neregula si nu imi dau seama unde. De ce da 0 peset tot? Ma puteti ajuta va rog?
Mediul de dezvoltare pe care-l folosesti are si un debugger integrat. Acesta te ajuta sa rulezi pas cu pas prin instructiuni, sa inspectezi valorile variabilelor, vezi fluxul de execute, pe unde intra ori nu s.a.m.d. Asta inseamna ca singur poti deslusi misterele. E mult mai ok ca tu sa faci asta indrumat de noi decat sa-ti dam la milimetru cauza. Cand tu descoperi iti ramane pe viata. Asa ca spune ce IDE folosesti sa-ti spunem care-i tasta magica pentru debug.

Edited by neagu_laurentiu, 13 August 2015 - 15:23.


#17
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,237
  • Înscris: 06.03.2011
Dev-C++ 4.9.9.2

#18
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,672
  • Înscris: 30.07.2003
Nu stiu de ce mai exista acesta pe lumea asta !

Deschide proiectul, mergi in meniul Project si optiunea Project Options, acolo selectezi tab-ul Compiler, selectezi in stanga Linker iar in stanga Generate debug information = Yes si Ok la final.

In fisierul cu al tau cod megi in main la acel while si pune cursorul acolo, apasa Ctrl+F5 si-ti va selecta acea linie. Apoi compilezi si pornesi debuggerul cu F8 dupa care folosind F7 mergi pas cu pas. Toate aceste taste le ai in meniul Debug si mai vezi si alte optiuni acolo. La Add Watch cu F4 adaugi numele unei variabile care te intereseaza ori mai multe.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate