Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: fisiere  (Citit de 2513 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
mihai.plesa
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« : Ianuarie 22, 2011, 09:59:25 »

 Banana
Doi amici pricepuţi într-ale informaticii scriu fiecare câte un fişier cu numere. Profesorul le spune că în marea majoritate a cazurilor, primul elev scrie numere mai mici decât cel de-al doilea. Pentru a le demonstra acest fapt, el le cere sa îi spună câte dintre numerele primului elev sunt mai mici decât toate numerele scrise de al doilea elev. Primele două fişiere au fost uşor de comparat, deoarece aveau numere puţine, dar când au gasit fişiere de 10000 de numere s-au cam încurcat.

Cerinţe
Ajutaţi-i pe cei doi să determine numărul cerut. Scrieţi în fişierul RĂSPUNS.TXT câte numere din UNU.TXT sunt strict mai mici decât toate numerele din DOI.TXT.

Date de intrare
În fişierele UNU.TXT şi DOI.TXT se afla cel puţin 3 şi cel mult 10000 numere.

Date de ieşire
În fişierul RĂSPUNS.TXT se va scrie câte numere din UNU.TXT sunt strict mai mici decât toate numerele din DOI.TXT. Banana



Cum ar trebui sa procedez cand am doua fisiere de intrare (ca in problema de mai sus)? Daca vreau spre exemplu sa citesc primul element din fisierul unu.txt si al treilea element din fisierul doi.txt cum ar trebui sa scriu in c++?

Poate sa existe o problema in care sa ni se dea n fisiere de intrare? Cum am scrie asta in c++ daca ar fi sa fac o suma care sa aiba ca termeni primul numar din fiecare fisier  (primul nr din fisierul de intrare 1 + primul nr din fisierul de intrare 2 +..... + primul nr din fisierul de intrare n) ?
Multumesc mult!
« Ultima modificare: Ianuarie 22, 2011, 10:27:48 de către Plesa Mihail Iulian » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #1 : Ianuarie 22, 2011, 10:53:06 »

Ai 2 variante :
1. Poti face cu vectori, asa folosesti un singur fisier.
2. Poti face cu 2 fisiere, adica fisierele f si g, amandoua deschise asa :
Cod:
FILE *f = fopen ( "UNU.TXT", "r" ) ;
FILE *g = fopen ( "DOI.TXT", "r" ) ;
Si acum fiecare fisier e pe "cont propriu", adica daca citesti 10 elemente din primul, si vrei sa citesti un element din al doilea, iti ia primul element din al doilea, nu are treaba cu primul fisier.
Citat
Daca vreau spre exemplu sa citesc primul element din fisierul unu.txt si al treilea element din fisierul doi.txt cum ar trebui sa scriu in c++?
Pentru primul element faci asa : fscanf ( f, "%d", &x ) ; Pentru al doilea trebuie sa citesti 3 elemente din al doilea fisier :
Cod:
for ( int i = 0; i < 3; ++i ) 
    fscanf ( g, "%d", &x ) ;
Memorat
mihai.plesa
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #2 : Ianuarie 22, 2011, 11:03:05 »

Ai 2 variante :
1. Poti face cu vectori, asa folosesti un singur fisier.
2. Poti face cu 2 fisiere, adica fisierele f si g, amandoua deschise asa :
Cod:
FILE *f = fopen ( "UNU.TXT", "r" ) ;
FILE *g = fopen ( "DOI.TXT", "r" ) ;
Si acum fiecare fisier e pe "cont propriu", adica daca citesti 10 elemente din primul, si vrei sa citesti un element din al doilea, iti ia primul element din al doilea, nu are treaba cu primul fisier.
Citat
Daca vreau spre exemplu sa citesc primul element din fisierul unu.txt si al treilea element din fisierul doi.txt cum ar trebui sa scriu in c++?
Pentru primul element faci asa : fscanf ( f, "%d", &x ) ; Pentru al doilea trebuie sa citesti 3 elemente din al doilea fisier :
Cod:
for ( int i = 0; i < 3; ++i ) 
    fscanf ( g, "%d", &x ) ;


si pentru n fisiere trebuie sa scriem de n ori " FILE*nume..." ?
multumesc!
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #3 : Ianuarie 22, 2011, 11:07:35 »

Da, dar nu cred ca ai tu nevoie de atatea fisiere Smile)) ( doar schimbi literele de dupa *, si la fscanf pui primul argument acea litera ).
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #4 : Ianuarie 22, 2011, 11:43:09 »

Daca chiar o sa ai nevoie de n fisiere poti sa faci ceva de genu :

Cod:
FILE* files[NMax];
daca lucrezi cu fscanf si fprintf sau

Cod:
fstream files[NMax];
daca lucrezi cu obiecte.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines