Titlul: Lucrul cu fisiere Scris de: Tanase din Martie 04, 2013, 16:32:56 Buna ziua.Am gasit doua probleme cu fisiere carora nu le dau de capat.Poate nu sunt asa de grele insa nu reusesc sa le finalizez.
1.De pe un rand al fisierului exemplu.txt se citeste un text care poate sa contina orice caractere(litere mari, litere mici , cifre, cactere speciale).Sa se tipareasca textul obtinut prin transformarea in litere mici a literelor mari aflate pe pozitii pare in cadrul textului dat. Cod: #include <iostream> 2.Se citeste din fisierul date.in de pe prima linie un sir de caractere care poate sa contina numai litere si cifre.Afisati in fisierul date.out numarul literelor mari, numarul literelor mici si numarul cifrelor din text ,pe randuri diferite. Aici momentan nu am prea multe insa vreau sa stiu daca merge calea cu ascii sau ma complic. Multumesc anticipat daca cineva poate sa imi ofere orice indiciu. Titlul: Răspuns: Lucrul cu fisiere Scris de: Prehari Romica din Martie 04, 2013, 17:28:05 la prima problema ai putea face asa:
Cod: #include <iostream> La cum ai facut tu programul, mai ai mult de invatat... Titlul: Răspuns: Lucrul cu fisiere Scris de: Tanase din Martie 04, 2013, 17:43:34 Scuze acum vad nu s.au copiat vectorii .Era a si sir peste tot.Stiu ca mai am de invatat ,insa nu stiam ca poti sa scrii sir+=32; si am incercat sa transform totul in codurile ASCII si sa pun in vectorul a, pentru ca apoi sa transform invers ,din ASCII in caractere.Multumesc.
ps: nu imi posteaza parantezele patrate indiferent cum le pun Titlul: Răspuns: Lucrul cu fisiere Scris de: fdproxy din Martie 04, 2013, 17:48:41 - "a[256];" Nu ai nevoie de niciun vector. Citesti caracterul, il convertesti, daca-i cazul si il afisezi.
- "fstream f1("exemplu.txt",ios::in);" De ce nu ai folosit "ifstream is("exemplu.txt");"? In mod traditional un stream de intrare se noteaza cu "is". - "f1>>sir" Citeste din f1 pana la primul blanc (exclusiv) - "a=(int)sir;" Ce ai vrut sa faci aici? O rezolvare posibila: Cod: #include <fstream> Titlul: Răspuns: Lucrul cu fisiere Scris de: Tanase din Martie 04, 2013, 17:55:46 am folosit vectorul "a" pentru a memora codurile ASCII in el , iar prin a = int(sir) am vrut sa transform caracterele in codurile aferente , am inteles de ce nu mergea sa scriu cu paranteze patrarte, trebuia sa selectez secventa cod
deci calea a fost gresita, nu imi placea inceputul care il facusem insa am incercat sa folosesc while (sir != /n ) insa nu am vazut vreo schimbare Titlul: Răspuns: Lucrul cu fisiere Scris de: fdproxy din Martie 04, 2013, 18:23:35 Din textul problemei: "se citeste un text". Nu spune cate caractere. Secventa:
Cod: for(i=0;i<256;i++) Ceva nu-ti este clar, dar nu am inteles ce anume. Titlul: Răspuns: Lucrul cu fisiere Scris de: Tanase din Martie 04, 2013, 18:38:01 am inteles in mare parte , asta intrebam deci am facut alegerea gresita cu codurile ASCII ,mai bine foloseam o functie
imi e neclar 256 ala.. pentru ca nu stiu cate caractere are, poate sa aiba mai multe sau mai putine , incerc sa folosesc indiciile date aici ,sa vad ce iese, multumesc! Titlul: Răspuns: Lucrul cu fisiere Scris de: Prehari Romica din Martie 04, 2013, 20:25:13 am editat putin codul lui fdproxy
Cod: #include <fstream> iar pentru a doua problema ai putea inlocui ce ai in while cu: Cod: if(c>='a'&&c<='z') Titlul: Răspuns: Lucrul cu fisiere Scris de: Tanase din Martie 04, 2013, 20:28:24 multumesc amandurora!
Titlul: Răspuns: Lucrul cu fisiere Scris de: FMI Razvan Birisan din Martie 04, 2013, 21:52:37 Citat 1.De pe un rand al fisierului exemplu.txt se citeste un text care poate sa contina orice caractere(litere mari, litere mici , cifre, cactere speciale).Sa se tipareasca textul obtinut prin transformarea in litere mici a literelor mari aflate pe pozitii pare in cadrul textului dat. Nu aș vrea să vă spun asta :-' , dar cred că citirea ar trebui făcută doar pe primul rând. :) (așa cred că era și enunțul). Merge....cu o mică modificare. Cod: #include <fstream> Titlul: Răspuns: Lucrul cu fisiere Scris de: Tanase din Martie 04, 2013, 21:58:04 TheNechiz da banuiesc ca de pe primul rand desi cerinta spuen ca de pe un rand.Multumesc tuturor .Sa vad la ce rezultat ajung.Scuzati-mi insistenta si poate greutatea cu care am inteles.
Titlul: Răspuns: Lucrul cu fisiere Scris de: FMI Razvan Birisan din Martie 04, 2013, 22:17:09 Dacă nu citești primul rând,ar trebui să ai ca dată de intrare: numărul rândului pe care trebuie să-l citești.
Deși ...este puțin probabil.:) Titlul: Răspuns: Lucrul cu fisiere Scris de: fdproxy din Martie 05, 2013, 14:15:57 Scuzati-mi insistenta si poate greutatea cu care am inteles. N-ai pentru ce-ti cere scuze. Nimeni nu s-a nascut invatat iar fara efort ma indoiesc ca poti realiza ceva.Textul problemei este interpretabil. De exemplu, daca numarul randului ar fi fost specificat, atunci ar fi trebuit sa numeri caracterele "new-line" (sau altul care desemneaza sfarsitul de linie, in functie de formatul fisierului). Cum randul nu este specificat, poate ca vrea o functie care sa ia ca argument numarul randului. Poti anticipa gradul de complexitate al exercitiului in functie de cunostintele predate pana acum. Daca ultima lectie se refera la codurile ASCII, atunci poate ca profesorul se asteapta sa folosesti comparatii in loc de "toupper". Si tot asa. O ultima observatie legata de codul postat de Razvan. Daca ati invata despre "break", poate fi rescris asa: Cod: char c; Spor la invatat. Titlul: Răspuns: Lucrul cu fisiere Scris de: FMI Razvan Birisan din Martie 05, 2013, 16:12:58 BREAK È™i CONTINUE sunt utile,dar sunt folosite rar.Dacă le folosim,în cele mai multe cazuri se încalcă principiile programării structurate.
is >> c; nu citește caracterele albe,deci chiar cred că acel get(); e necesar. :) Titlul: Răspuns: Lucrul cu fisiere Scris de: fdproxy din Martie 05, 2013, 17:32:35 Corect: sare peste "whitespaces" (blanc, tab, CR, NL). Se poate rescrie asa:
Cod: while ( is.get( c ) ) sau asa (mai complicat): Cod: is >> noskipws; Codul in care folosesc break mi s-a parut mai usor de inteles decat varianta originala si este mai usor de inteles si decat codul de mai jos (care respecta teorema programarii structurate): Cod: is >> noskipws; sau Cod: while ( is.get( c ) && c != '\n' ) Titlul: Răspuns: Lucrul cu fisiere Scris de: Tanase din Martie 11, 2013, 15:13:02 multumesc tuturor ! nu am mai putut sa intru o perioada
|