Sunteți pe pagina 1din 22

Fiiere

Variante 2009

BAC 2009 - Fiiere


1.Fiierul text bac.txt conine, pe o singur linie, cel mult 1000 de numere naturale nenule cu cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n 999 i numerele din fiierul bac.txt i care afiea! pe ecran, separate prin cte un spaiu, toate numerele din fiier care sunt di"i!i#ile cu n. $ac fiierul nu conine niciun astfel de numr, atunci se "a afia pe ecran mesa%ul NU EXISTA. Exemplu: dac fiierul bac.txt conine numerele& 3 100 40 70 25 5 80 6 3798, pentru n=10 atunci pe ecran se "a afia& 100 40 70 80 2.Fiierul text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel mult 100 de numere ntregi, fiecare numr a"nd cel mult 4 cifre. Scriei un program C/C++ care citete numerele din fiierul NR.TXT i afiea! pe ecran, separate prin cte un spaiu, 'n ordine cresctoare, toate numerele naturale nenule din fiier. $ac nu exist astfel de numere se "a afia pe ecran mesa%ul NU EXISTA. Exemplu: dac fiierul NR.TXT conine numerele& (3 -10 0 7 -5 7 51 -800 6 3798, atunci pe ecran se "a afia& 6 7 7 51 3798 ).Fiierul text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel mult 100 de numere naturale, fiecare numr a"nd cel mult 4 cifre. Scriei un program C/C++ care citete toate numerele din fiier i afiea! pe ecran, separate prin cte un spaiu, 'n ordine cresctoare, toate numerele din fiier care au cel puin 3 cifre. $ac fiierul nu conine astfel de numere se "a afia pe ecran mesa%ul NU EXI !A. ".Fiierul text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel mult 100 de numere naturale, fiecare numr a"nd cel mult 4 cifre. Scriei un program C/C++ care citete numerele din fiierul NR.TXT i afiea! pe ecran, separate prin cte un spaiu, 'n ordine descresctoare, toate numerele din fiier care au cel mult 2 cifre. $ac fiierul nu conine astfel de numere se "a afia pe ecran mesa%ul NU EXISTA. #.Scriei un program C/C++ care citete de la tastatur un numr natural n cu cel mult 8 cifre (n 10 i care creea! fiierul text NR.TXT ce conine numrul n i toate prefixele nenule ale acestuia, pe o singur linie, separate prin cte un spaiu, 'n ordine descresctoare a "alorii lor. Exemplu: pentru n=10305 fiierul NR.TXT "a conine numerele& 10305 1030 103 10 1 $.Se consider definite urmtoarele su#programe& ( s1, cu doi parametri& a, b dou numere 'ntregi cu cel mult 4 cifre fiecare* su#programul intersc+im# "alorile a dou "aria#ile transmise prin intermediul parametrilor a i b. ( s2, cu trei parametri& a, un ta#lou unidimensional cu exact 100 de elemente, numere 'ntregi cu cel mult 4 cifre fiecare, p, un numr natural (p100 , q, un numr natural (q100 . Su#programul caut primul element di"i!i#il cu 5 'n sec"ena ap,ap+1, ..., aq, i returnea! po!iia acestuia, dac exist un astfel de element, sau "aloarea -1 'n ca! contrar. a% Scriei numai antetul su#programului s1. &% Scriei definiia complet a su#programului s2. '% Scriei programul C/C++ care citete de la tastatur o "aloare natural n (0<n100 i apoi un ta#lou unidimensional a, cu n elemente, numere 'ntregi cu cel mult 4 cifre fiecare. ,rogramul determin, folosind apeluri utile ale su#programului s2, primul element (i)i*i&il 'u 5 (dac exist i ultimul element (i)i*i&il 'u 5 (dac exist al ta#loului a, intersc+im# "alorile elementelor gsite, folosind apelul su#programului s1, i apoi scrie pe prima linie a fiierului text BAC.TXT elementele ta#loului a, astfel transformat, separate prin cte un spaiu, sau "aloarea 0 dac ta#loul conine mai puin de dou elemente (i)i*i&ile 'u 5. Exemplu: pentru n=7 i ta#loul a=(6,10,4,15,2,5,8), programul "a scrie 'n fiier& 6 5 4 15 2 10 8 +.Se consider irul definit de urmtoarea relaie de recuren&

Fiiere

Variante 2009

a% Scriei numai antetul unui su#program sub, care primete prin intermediul parametrului n un numr natural de maximum 8 cifre, i care returnea! cel mai mare termen al irului de mai sus mai mic sau cel mult egal cu n. Exemplu: dac n=83 atunci su#programul "a returna "aloarea 80. ,"p.% &% Scriei un program C/C++ care citete de la tastatur un numr natural s (s10000000 i determin un ir de numere distincte a cror sum este egal cu s, folosind apeluri utile ale su#programului sub. -umerele determinate se "or scrie 'n fiierul Numere.txt, pe prima linie a acestuia, separate prin cte un spaiu. Exemplu: dac "aloarea citit de la tastatur este 63, atunci fiierul Numere.txt "a conine "alorile urmtoare, nu neaprat 'n aceast ordine& 40 20 3. ..Scriei un program C/C++ care citete de la tastatur un numr natural n (n50 i care afiea! pe prima linie a fiierului BAC.TXT primele n numere pare, pe a doua linie primele n-1 numere pare, ..., pe linia n primul numr par. -umerele "or fi afiate pe fiecare linie 'n ordine cresctoare i "or fi separate prin cte un spaiu. Exemplu: dac n=3 fiierul BAC.TXT "a a"ea coninutul alturat. 0 2 4 0 2 0 9..Se consider definite dou su#programe& ( Su#programul s1, cu 3 parametri, care primete prin intermediul parametrului a un ta#lou unidimensional cu exact 100 de elemente, numerotate de la 0 la 99, numere 'ntregi de cel mult 4 cifre fiecare, iar prin intermediul parametrilor p i q (0p<q<100 po!iiile a dou elemente ale ta#loului. Su#programul furni!ea! prin intermediul parametrului p po!iia primului element par (dac exist , i prin intermediul parametrului q po!iia ultimului element impar (dac exist , din sec"ena ap,ap+1, ..., aq. $ac aceast sec"en nu conine niciun element par su#programul "a furni!a prin intermediul lui p "aloarea -1, iar dac nu conine niciun element impar, "a furni!a prin intermediul lui q "aloarea -1. ( Su#programul s2, cu doi parametri, a i b, dou numere 'ntregi cu cel mult 4 cifre fiecare* su#programul intersc+im# "alorile a dou "aria#ile transmise prin intermediul parametrilor a i b. a% Scriei numai antetul su#programului s2. &% Scriei definiia complet a su#programului s1. '% Scriei un program C/C++ care& ( citete de la tastatur un numr natural nenul n (0n<100 , apoi cele n elemente ale unui ir a. Fiecare dintre aceste elemente este un numr 'ntreg cu cel mult 4 cifre i cel puin un element al irului este par* ( determin rearan%area elementelor irului astfel 'nct toate "alorile pare s fie plasate la sfritul irului a, folosind apeluri utile ale su#programelor s1 i s2* ( scrie elementele irului re!ultat 'n urma acestei transformri pe o singur linie a fiierului text BAC.TXT, separate prin cte un spaiu. Exemplu: pentru n=5 i a=(2,3,4,7,5) fiierul ar putea a"ea coninutul& 7 5 3 4 2. /0.Fiierul BAC.TXT conine pe prima linie un numr natural n (0<n1000000 i pe a doua linie, separate prin cte un spaiu, n numere naturale nenule (cu cel mult 7 cifre fiecare ordonate cresctor. a% Scriei un program C/C++ care citete toate numerele din fiier i, utili!nd un algoritm eficient din punct de "edere al memoriei utili!ate i al timpului de executare, determin pentru fiecare numr citit de pe a doua linie a fiierului, cea mai mic "aloare mai mare sau egal cu acesta ce repre!int o putere a lui 2. 0n numr natural x este putere a lui 2 dac exist un numr natural k astfel 'nct x=2k. -umerele astfel determinate "or fi scrise pe ecran, separate prin cte un spaiu. Exemplu& dac fiierul are coninutul de mai %os 5 3 5 8 9 12 pe ecran se "a afia& 4 8 8 16 16 &% $escriei succint, 'n lim#a% natural, algoritmul pe #a!a cruia a fost scris programul de la punctul a%, explicnd 'n ce const eficiena metodei folosite.

Fiiere

Variante 2009

//.Fiierul BAC.TXT conine pe prima linie un numr natural n (0<n1000 i pe a doua linie, separate prin cte un spaiu, n numere naturale nenule (cu cel mult 9 cifre fiecare . Scriei un program C/C++ care citete toate numerele din fiier i afiea! pe ecran cte numere prime conine irul citit de pe a doua linie a fiierului. Exemplu: dac fiierul are coninutul 5 12 3 9 7 1 se "a afia& 3 7 /2.Fiierul BAC.TXT conine pe prima linie dou "alori naturale, m i n (m100, n100 , pe a doua linie un ir de m numere 'ntregi, iar pe a treia linie un ir de n numere 'ntregi. Fiecare dintre aceste iruri sunt ordonate strict cresctor, iar elementele lor au cel mult 9 cifre fiecare. -umerele de pe acelai rnd sunt separate prin cte un spaiu. Se cere s se afie!e pe ecran cte dintre elementele celui de al doilea ir nu se regsesc i 'n primul ir. Exemplu: dac fiierul are coninutul 67 1 2 3 4 7 20 3 5 7 8 9 20 24 se "a afia "aloarea 4 (numerele care respect condiia sunt 5 8 9 24 . a% $escriei un algoritm de re!ol"are a acestei pro#leme, eficient din punct de "edere al timpului de executare, explicnd 'n ce const eficiena acestuia. &% Scriei programul C/C++ corespun!tor algoritmului descris. /).Se consider su#programul P care primete ca parametri un numr natural n cu maximum 9 cifre i o cifr c i care "a returna numrul o#inut din n dup eliminarea tuturor apariiilor cifrei c. a% Scriei doar antetul su#programului P. &% ,e prima linie a fiierului text BAC.IN se gsesc, separate prin cte un spaiu, mai multe numere naturale de cel mult 9 cifre fiecare. Scriei un program C/C++ care citete numerele din acest fiier, elimin toate cifrele impare din fiecare dintre aceste numere i apoi scrie 'n fiierul text BAC.OUT numerele astfel o#inute, separate prin cte un spaiu. Se "or folosi apeluri utile ale su#programului P. $ac un numr din fiierul BAC.IN nu conine nicio cifr par nenul, acesta nu "a mai aprea deloc 'n fiierul de ieire. Exemplu: dac fiierul BAC.IN conine numerele 25 7 38 130 45127 0 35 60 15, atunci BAC.OUT "a a"ea coninutul& 2 8 42 60. /1.Fiierul text BAC.TXT conine mai multe numere naturale cu cel mult 6 cifre fiecare, cte un numr pe fiecare linie a fiierului. Scriei un program C/C++ care afiea! pe ecran toate numerele din fiier, 'n aceeai ordine, cte 'in'i numere pe fiecare linie, separate prin cte un spaiu, cu excepia ultimei linii care poate conine mai puin de cinci numere. Exemplu: dac fiierul are coninutul alturat, pe ecran se afiea!& 11 21 30 40 51 16 17 10 1 /2.3n fiierul text BAC.IN se gsesc, pe o singur linie, separate prin cte un spaiu, mai multe numere naturale de cel mult 6 cifre fiecare. Se cere s se determine i s se afie!e pe ecran ultimul numr impar din fiierul BAC.IN. $ac 'n fiier nu exist niciun numr impar se "a scrie pe ecran mesa%ul Nu exist numere impare. Exemplu: dac fiierul BAC.IN conine "alorile: 12 6 25 68 13 8 24 31 42 se "a afia 31. a% $escriei 'n lim#a% natural un algoritm eficient, din punct de "edere al spaiului de memorie i al timpului de executare, pentru re!ol"area acestei pro#leme, explicnd 'n ce const eficiena acestuia. &% Scriei programul C/C++ corespun!tor algoritmului descris. /4.Su#programul cifrak are 2 parametri, n, prin care primete un numr natural cu maximum 9 cifre, i k, prin care primete un numr natural (k 9 . Su#programul returnea! numrul de cifre ale numrului n care sunt egale cu "aloarea k. Exemplu: dac n=233433, iar k=3, su#programul "a returna "aloarea 4. a% Scriei definiia complet a su#programului cifrak. &% 3n fiierul numere.txt sunt memorate mai multe numere naturale (maximum 1000 de numere cu maximum 9 cifre fiecare . Fiecare linie a fiierului conine cte un numr. Scriei programul C/C++ care, folosind apeluri ale

Fiiere

Variante 2009

su#programului cifrak, afiea! pe ecran, separate prin cte un spaiu, toate numerele din fiier care conin exact trei cifre de 0. Exemplu: dac fiierul numere.txt conine 260070 39008 70009 se "or afia, nu neaprat 'n aceast ordine, numerele 260070 70009. /5.,e prima linie a fiierului numere.txt sunt memorate cel mult 90 de numere 'ntregi cu cel mult dou cifre fiecare, separate prin cte un spaiu. Scriei programul C/C++ care s determine i s afie!e pe ecran, media aritmetic a numerelor strict po!iti"e din fiier. $ac fiierul nu conine numere strict po!iti"e se afiea! pe ecran mesa%ul NU EXISTA. Exemplu: dac fiierul numere.txt conine numerele 6 -26 0 9 -7 se "a afia "aloarea 7.5. /..3n fiierul numere.txt sunt memorate cel puin 4 i cel mult 90 de numere 'ntregi cu cel mult patru cifre fiecare, separate prin cte un spaiu. Scriei un program C/C++ care afiea! pe ecran patru numere aflate pe po!iii consecuti"e 'n fiier, care sunt 'n ordine strict cresctoare. $ac exist mai multe astfel de sec"ene programul afiea! una dintre acestea, iar dac 'n fiier nu exist astfel de sec"ene se afiea! mesa%ul NU EXISTA. Exemplu: dac fiierul numere.txt conine, 'n aceast ordine, numerele 60 12 15 25 110 45 25 se "or afia numerele 12 15 25 110. /9.3n fiierul numere.txt sunt memorate mai multe numere reale separate prin cte un spaiu. Scriei un program C/C++ care "erific dac printre numerele din fiier exist cel puin 10 numere naturale. ,rogramul afiea! pe ecran mesa%ul DA 'n ca! afirmati" i NU 'n ca! contrar. Exemplu: dac fiierul numere.txt conine numerele 60 -12.67 15 -1 -22.3 4 se afiea! mesa%ul NU. 20.3n fiierul numere.txt sunt memorate cel puin 4 i cel mult 90 de numere 'ntregi cu cel mult patru cifre fiecare, separate prin cte un spaiu. Scriei un program C/C++ care afiea! pe ecran patru numere aflate pe po!iii consecuti"e 'n fiier, care sunt 'n ordine strict descresctoare. $ac exist mai multe astfel de sec"ene programul afiea! una dintre acestea, iar dac 'n fiier nu exist astfel de sec"ene se afiea! mesa%ul NU EXISTA. Exemplu: dac fiierul numere.txt conine, 'n aceast ordine, numerele 60 120 15 5 2 45 25 se "or afia numerele 120 15 5 2. 2/.Fiierul text BAC.TXT conine pe prima linie dou numere naturale, n i k, separate de un spaiu (3 n 10000, 2 k n/2 , iar pe a doua linie un ir de n numere naturale, x1, x2, ..., xn, separate prin cte un spaiu, fiecare numr din acest ir a"nd cel mult patru cifre. a% Scriei un program C/C++ care citete numerele din fiier i determin, utili!nd o metod eficient din punct de "edere al timpului de executare, cel mai mic indice i (1 i n-k+1 pentru care suma termenilor xi, xi+1, ..., xi+k-1 este maxim. ,rogramul afiea! "aloarea lui i pe ecran. Exemplu& pentru fiirul alturat se afiea! 2, deoarece suma maxim se o#ine pentru 9+4+7. 8 3 2 9 4 7 5 2 9 9 &% 6xplicai succint, 'n lim#a% natural, metoda utili!at la punctul a, %ustificnd eficiena acesteia. 22.Scriei programul C/C++ care citete din fiierul text BAC.TXT numrul 'ntreg n (1 n 10000 i un ir de n perec+i de numere 'ntregi a b (1 a b 32000 , fiecare perec+e fiind scris pe o linie nou a fiierului, cu un spaiu 'ntre cele dou numere. ,rogramul afiea! pe ecran pentru fiecare perec+e a,b cel mai mare numr natural din inter"alul 'nc+is [a,b] care este o putere a lui 2 sau numrul 0 dac nu exist nicio putere a lui 2 'n inter"alul respecti". -umerele afiate pe ecran se scriu 'n linie, separate prin cte un spaiu. 0n numr p este putere a lui 2 dac exist un numr natural k astfel 'nct p=2k.

Fiiere

Variante 2009

Exemplu: dac fiierul BAC.TXT conine numerele 3 2 69 10 20 19 25 se "a afia& 64 16 0. 2).Fiierul text BAC.TXT conine pe prima linie un numr natural nenul n (1 n 1000 , iar pe fiecare dintre urmtoarele n linii cte dou numere 'ntregi a i b (1 a b 32000 , fiecare perec+e repre!entnd un inter"al 'nc+is de forma [a,b]. Scriei un program C/C++ care citete numerele din fiier i determin un inter"al dintre cele citite care conine cel mai mare numr de numere 'ntregi i afiea! pe o linie a ecranului, separate printr(un spaiu, numerele care repre!int capetele inter"alului determinat. 3n ca!ul 'n care sunt mai multe inter"ale care 'ndeplinesc aceast proprietate, se "or afia informaiile referitoare la acel inter"al la care numrul care repre!int captul din dreapta este minim. Exemplu& dac fiierul BAC.TXT are coninutul alturat, pe ecran se "a afia& 8 15 (pentru c numrul maxim de numere 'ntregi aflate 'ntr(un inter"al este 8. Sunt dou inter"ale care conin 8 numere& [17;24] i [8;15]. $intre acestea, [8;15] are captul din dreapta cel mai mic . 4 17 24 -2 3 9 15 8 15 21.Fiierul text bac.txt conine pe prima linie numrul natural n, 1 n 10000, pe a doua linie, dou numere 'ntregi a i b (a b separate de un spaiu, iar pe urmtoarele n linii un ir de n numere 'ntregi. Fiecare dintre cele n numere, precum i "alorile a i b, au cel mult patru cifre. Scriei un program C/C++ care afiea! pe ecran cel mai mic numr natural din inter"alul 'nc+is [a,b] care se gsete 'n irul dat. $ac nu exist un astfel de numr, programul afiea! textul NU. Exemplu: dac fiierul bac.txt are coninutul alturat, programul afiea! "aloarea 14. 4 8 35 -2 72 14 25 22.Fiierul text NUMAR.TXT conine pe prima linie un numr real po!iti" x care are cel mult (-u. cifre la partea 'ntreag i cel mult apte cifre dup punctul !ecimal. a% Scriei un program C/C++ care, utili!nd un algoritm eficient din punct de "edere al timpului de executare i al memoriei utili!ate, afiea! pe ecran, separate printr(un spaiu, dou numere naturale al cror raport este egal cu x i a cror diferen a#solut este minim. Exemplu: dac fiierul conine "aloarea alturat 0.375, se "or afia pe ecran numerele 3 8. &% $escriei 'n lim#a% natural metoda utili!at i explicai 'n ce const eficiena ei. 2$.a% Scriei definiia complet a unui su#program sterge, cu trei parametri, care& ( primete prin parametrii& ( v un ta#lou unidimensional cu maximum 100 de elemente 'ntregi din inter"alul [-1000;1000] ( n o "aloare natural repre!entnd numrul de elemente din ta#loul v ( i o "aloare natural cu 1in ( elimin din ta#loul v elementul v[i]i actuali!ea! "aloarea lui n. 7a#loul modificat este furni!at tot prin parametrul v. &% Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (1n100 i pe urmtoarea linie n numere 'ntregi din inter"alul [-1000;1000], separate prin cte un spaiu. Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n, construiete 'n memorie un ta#lou unidimensional v cu cele n numere 'ntregi aflate pe linia a doua 'n fiier i utili!ea! apeluri utile ale su#programului sterge pentru a elimina din ta#lou un numr minim de elemente astfel 'nct s nu existe dou elemente alturate cu aceeai "aloare. 6lementele ta#loului o#inut se afiea! pe ecran, separate prin cte un spaiu.

Fiiere

Variante 2009

Exemplu: $ac fiierul NUMERE.IN are coninutul& 12 10 10 2 2 19 9 9 9 9 15 15 15 atunci se afiea! 10 2 19 9 15. 25.Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (2n100 i pe urmtoarea linie n numere reale po!iti"e, aflate 'n ordine strict cresctoare, separate prin cte un spaiu. a% Scriei un program C/C++ care, utili!nd un algoritm eficient din punct de "edere al memoriei utili!ate, determin i afiea! pe ecran, separate printr(un spaiu, dou numere naturale x i y cu proprietatea c toate cele n numere aflate pe linia a doua 'n fiierul NUMERE.IN se gsesc 'n inter"alul [x;y] i diferena y-x este minim. Exemplu: dac fiierul NUMERE.IN are coninutul& 6 3.5 5.1 9.2 16 20.33 100 atunci se afiea! 3 100 &% $escriei 'n lim#a% natural metoda utili!at i explicai 'n ce const eficiena ei.

2/.a% Scriei definiia complet a unui su#program primul, care ( primete prin singurul su parametru, a, o "aloare natural din inter"alul [2,10000] ( returnea! o "aloare natural repre!entnd cel mai mic di"i!or al numrului a mai mare strict dect 1. &% Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (1n100 i pe urmtoarea linie n numere naturale din inter"alul [2,10000] separate prin cte un spaiu. 0n numr natural n se numete 8apr-ape prim9 dac este egal cu produsul a dou numere prime distincte. $e exemplu, numrul 14 este 8aproape prim9 pentru c este egal cu produsul numerelor prime 2 i 7. Scriei un program C/C++ care determin i afiea! pe ecran (dac exist , separate prin cte un spaiu, folosind apeluri utile ale su#programului primul, numerele 8aproape prime9 de pe linia a doua a fiierului NUMERE.IN. Exemplu: dac fiierul NUMERE.IN are coninutul& 6 100 14 21 8 77 35 atunci se afiea! pe ecran 14 21 7735 29.Se consider dou ta#louri unidimensionale A i B cu elemente numere naturale din inter"alul [1;10000]. Spunem c ta#loul A :0e p-ate re(u'e1 la ta#loul B dac exist o 'mprire a ta#loului A 'n sec"ene dis%uncte i adiacente de cte trei elemente aflate pe po!iii consecuti"e astfel 'nct, prin 'nlocuirea sec"enelor cu suma elementelor din sec"en, s se o#in, 'n ordine, elementele ta#loului B. $e exemplu ta#loul se poate reduce la ta#loul

a% Scriei definiia complet a su#programului suma, cu trei parametri, care& ( primete prin parametrii& ( A un ta#lou unidimensional cu maximum 100 elemente numere naturale din inter"alul [1;10000] ( i i j dou "alori naturale (1ij100)* ( returnea! suma Ai+Ai+1++Aj. ,$p.% &% Fiierul text NUMERE.IN conine pe prima linie dou numere naturale nenule n i m

Fiiere

Variante 2009

(1mn100 , pe linia a doua n numere naturale din inter"alul [1;10000] i pe linia a treia alte m numere naturale din inter"alul [1;10000]. ,e fiecare linie numerele sunt separate prin cte un spaiu. Scriei un program C/C++ care citete cele dou numere naturale n i m din fiierul NUMERE.IN, construiete 'n memorie dou ta#louri unidimensionale A i B cu elementele aflate 'n fiier pe a doua, respecti" a treia linie i "erific, utili!nd apeluri utile ale su#programului suma, dac ta#loul A se poate reduce la ta#loul B. ,rogramul afiea! pe ecran mesa%ul DA 'n ca! afirmati" i mesa%ul NU 'n ca! negati". )0.Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (1n100 i pe urmtoarea linie n numere reale po!iti"e -r(-nate 're0'.t-r, separate prin cte un spaiu. a% Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n, i determin, utili!nd un algoritm eficient din punct de "edere al timpului de executare i al memoriei utili!ate, numrul de "alori reale distincte de pe linia a doua din fiier. Exemplu: dac fiierul NUMERE.IN are coninutul& 6 2.3 2.3 2.8 5.7 5.7 6.3 atunci se afiea! "aloarea 4 (sunt 4 "alori distincte& 2.3, 2.8, 5.7, 6.3 . &% $escriei 'n lim#a% natural metoda utili!at i explicai 'n ce const eficiena ei. )/.3n fiierul numere.txt, se afl memorate, pe prima linie un numr natural n (1 n 100 , iar pe fiecare dintre urmtoarele n linii, cte dou numere 'ntregi x,y (-100 x y 100 , repre!entnd capetele cte unui segment [x,y] desenat pe axa Ox de coordonate. a% Scriei 'n lim#a%ul C/C++ un program eficient din punct de "edere al timpului de executare i al spaiului de memorare, care citete din fiier datele existente, determin segmental re!ultat 'n urma interseciei tuturor celor n segmente date i afiea! pe ecran dou numere desprie printr(un spaiu ce repre!int capetele segmentului cerut. $ac segmentele nu au niciun punct comun se "a afia pe ecran "aloarea 0. &% $escriei 'n lim#a% natural algoritmul utili!at, %ustificnd eficiena acestuia. Exemplu: dac fiierul numere.txt are coninutul alturat, 5 -7 10 3 20 -5 5 0 12 -8 30 se "a afia pe ecran 3 5 )2.Fiierul numere.txt conine mai multe numere 'ntregi (cel mult 100), fiecare numr a"nd cel mult 9 cifre. Se cere s se afie!e pe ecran, desprite printr(un spaiu, cele mai mari dou "alori pare memorate 'n fiier. $ac 'n fiier nu se afl memorate dou astfel de "alori, pe ecran se "a afia "aloarea 0. a% $escriei 'n lim#a% natural o metod de re!ol"are eficient din punct de "edere al gestionrii memoriei i al timpului de executare. &% Scriei programul C/C++ corespun!tor metodei descrise la punctul a. Exemplu: dac fiierul numere.txt are coninutul alturat 5 10 3 -77 20 50 5 0 12 18 30 se "or afia pe ecran, nu neaprat 'n aceast ordine& 30 50 )).,e prima linie a fiierului numere.txt se afl dou numere naturale n i m (a"nd cel mult 4 cifre fiecare, mn , desprite printr(un spaiu, iar pe urmtoarea linie, 'n ordine strict cresctoare, n numere naturale cu cel mult dou cifre, desprite prin cte un spaiu. a% Scriei 'n lim#a%ul C/C++ un algoritm eficient din punct de "edere al gestionrii memoriei i al timpului de executare, care citete din fiier datele existente i afiea! cea mai mare sum a m numere aflate pe a doua linie a fiierului. &% 6xplicai 'n lim#a% natural metoda utili!at, %ustificnd eficiena acesteia.

Fiiere

Variante 2009

)1.Su#programul cifre_impare primete prin parametrul n un numr natural a"nd cel mult 9 cifre i returnea! "aloarea 1 dac numrul n are toate cifrele impare i 0 'n ca! contrar. a% Scriei numai antetul su#programului cifre_impare. &% ,e prima linie a fiierului numere.txt se afl un numr natural n, iar pe urmtoarele linii, n numere naturale. ,e fiecare linie din fiier, numerele sunt desprite prin cte un spaiu. 7oate numerele din fiier au cel mult 9 cifre. Scriei programul C/C++ care, folosind apeluri utile ale su#programului cifre_impare, afiea! pe ecran acele numere din fiier care sunt mai mari dect 100 i au toate cifrele impare. -umerele afiate sunt separate prin cte un spaiu. Exemplu& dac fiierul numere.txt are coninutul alturat, 10 1 333 709 23 258 34 713 2678 11573 778 se "or afia pe ecran& 333 713 11573 )2.Fiierul text numere.in conine pe prima linie un numr natural n (0<n<1000 , iar pe a doua linie n numere naturale cu cel mult 9 cifre fiecare. Scriei un program C/C++ care citete toate numerele din fiier i afiea! pe ecran, separate prin cte un spaiu, numerele formate doar din cifre distincte i care au exact trei cifre. Exemplu: dac fiierul numere.in are urmtorul coninut 7 249 511 4329 2 4313 243 3562 atunci pe ecran se "or afia numerele 249 243 (nu neaprat 'n aceast ordine . )4.Su#programul cifra primete prin intermediul parametrului a un numr natural cu cel mult 4 cifre i returnea! ultima cifr par a sa. $ac numrul nu conine cifre pare, su#programul returnea! "aloarea -1. $e exemplu, dac a;8345, su#programul "a returna 4. a% S se scrie definiia complet a su#programului cifra. &% ,e prima linie a fiierului bac.in se afl un numr natural nenul n (n1000 , iar pe a doua linie a fiierului se afl un ir de n numere naturale, desprite prin cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete numerele din fiier i afiea! pe ecran, folosind apeluri utile la su#programului cifra, cel mai mare numr care se poate forma prelund ultima cifr par a fiecrui element, dac o astfel de cifr exist. 3n ca!ul 'n care toate "alorile din fiier conin doar cifre impare, atunci se "a afia "aloarea -1. Exemplu& dac fiierul bac.in are coninutul 7 369 113 2 0 33 1354 42 pe ecran se "a afia& 64220 2+.a% Scriei doar antetul su#programului nrdiv, care primete prin intermediul parametrului x un numr natural nenul cu cel mult 4 cifre, i returnea! numrul de di"i!ori primi ai lui x. &% ,e prima linie a fiierului bac.in se afl un numr natural nenul n (n1000 , iar pe a doua linie a fiierului se afl un ir format din n numere naturale nenule, desprite prin cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete numerele din fiier i care afiea! pe ecran, folosind apeluri utile ale su#programului nrdiv, pentru fiecare "aloare din ir numrul de di"i!ori primi. -umerele afiate "or fi separate prin cte un spaiu. Exemplu: dac fiierul bac.in are coninutul alturat 6 30 105 140 10 20 5 pe ecran se "a afia& 3 3 3 2 2 1 ..Se consider su#programul inter, cu doi parametri& x i y (numere 'ntregi formate din cel mult patru cifre fiecare * su#programul intersc+im# "alorile a dou "aria#ile transmise prin intermediul parametrilor x i y. a% Scriei 'n lim#a%ul C/C++ numai antetul su#programului inter.

Fiiere

Variante 2009

&% ,e prima linie a fiierului bac.in se afl un numr natural nenul n1000, iar pe a doua linie a fiierului se afl un ir de n numere naturale nenule, desprite prin cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care afiea! pe ecran, 'n ordine cresctoare, numerele aflate pe a doua linie a fiierului. -umerele "or fi afiate pe o singur linie, iar 'ntre dou numere se "a lsa un spaiu. Se "or folosi apeluri utile ale su#programului inter. )9.,e prima linie a fiierului bac.in se afl un numr natural nenul n (n1000 , iar pe a doua linie a fiierului se afl un ir format din n numere naturale, desprite prin cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete "alorile din fiier i care afiea! pe ecran mesa%ul DA dac toate elementele pare din ir sunt 'n ordine cresctoare i mesa%ul NU 'n ca! contrar. Exemplu& dac fiierul bac.in are coninutul alturat 7 10 113 12 33 42 1354 421 pe ecran se "a afia& DA 10.,e prima linie a fiierului bac.in se afl un numr natural nenul n (n1000 , iar pe a doua linie a fiierului se afl un ir format din n numere naturale, desprite prin cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete numerele din fiier i care afiea! pe ecran mesa%ul DA dac elementele pare 'n ir sunt 'n ordine cresctoare, iar cele impare sunt 'n ordine descresctoare, i mesa%ul NU 'n ca! contrar. Exemplu& dac fiierul bac.in are coninutul alturat, 8 10 1133 12 331 42 1354 221 13 pe ecran se "a afia& DA 1/.Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000 , iar pe a doua linie un ir de n numere naturale de o singur cifr, separate prin cte un spaiu. <irul conine cel puin o "aloare par i una impar. a% Scriei un program C/C++ care determin 'n mod eficient, din punct de "edere al timpului de executare, cea mai mare cifr par i cea mai mic cifr impar dintre cele situate pe a doua linie a fiierului. =ifrele determinate "or fi afiate pe ecran, pe o singur linie, separate printr(un spaiu. Exemplu& dac fiierul numere.txt are urmtorul coninut& 7 3 5 2 1 6 3 1 atunci pe ecran se "or afia "alorile& 6 1. &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 12.Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000 iar pe doua linie, separate prin cte un spaiu, n numere naturale formate din cel mult dou cifre. a% Scriei un program C/C++ care determin 'n mod eficient, din punct de "edere al timpului de executare, dac numerele situate pe a doua linie a fiierului sunt 'n ordine strict cresctoare. 3n ca! afirmati", programul "a afia pe ecran mesa%ul DA, altfel "a afia mesa%ul NU. Exemplu: dac fiierul numere.txt are urmtorul coninut& 7 3 5 2 1 5 23 1 atunci pe ecran se "a afia& NU &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 1).Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000 , iar pe a doua linie n cifre, separate prin cte un spaiu. a% Scriei un program C/C++ care determin 'n mod eficient, din punct de "edere al timpului de executare, cea mai mare cifr dintre cele situate pe a doua linie a fiierului numere.txt i numrul de apariii ale acesteia. Valorile determinate se "or afia pe ecran, separate printr(un spaiu. Exemplu: dac fiierul numere.txt are urmtorul coninut& 11 2 5 3 1 5 8 9 2 7 3 4 atunci pe ecran se "a afia& 9 1.

Fiiere

Variante 2009

&% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 11.Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000 , iar pe a doua linie, separate prin cte un spaiu, n numere naturale formate din cel mult dou cifre. a% Scriei un program C/C++ care determin 'n mod eficient, din punct de "edere al timpului de executare, toate numerele coninute de a doua linie a fiierului care apar de cel puin dou ori 'n acest linie. ,rogramul "a afia pe ecran numerele determinate, o singur dat, 'n ordine crescatoare, pe aceeai linie, separate prin cte un spaiu. Exemplu: dac fiierul numere.txt are urmtorul coninut& 44 2 54 74 2 44 9 2 atunci pe ecran se "a afia& 2 44 &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 12.Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000 , iar pe a doua linie, separate prin cte un spaiu, n numere naturale formate din cel mult 2 cifre. a% Scriei un program C/C++ care afiea! pe ecran, 'n mod eficient din punct de "edere al timpului de executare, toate numerele situate pe a doua linie a fiierului, 'n ordinea cresctoare a "alorilor lor, separate prin cte un spaiu. $ac un numr apare 'n fiier de mai multe ori el "a fi afiat o singur dat. Exemplu: dac fiierul numere.txt are urmtorul coninut& 7 12 21 22 11 9 12 3 atunci pe ecran se "a afia& 3 9 11 12 21 22 &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 14.Fiierul bac.txt conine pe prima linie un numr natural n (n100 , iar pe a doua linie, separate prin cte un spaiu, n numere naturale nenule, cu cel mult 4 cifre fiecare. Scriei programul C/C++ care citete de la tastatur un numr natural k (k25 , construiete 'n memorie i afiea! pe ecran un ta#lou unidimensional ce conine, 'n ordinea 'n care au fost citite, numerele de pe a doua linie a fiierului bac.txt care au cel puin k di"i!ori. Exemplu& dac k=5, iar fiierul are coninutul alturat 6 100 9 400 56 7 10 atunci ta#loul care se afiea! este& 100 400 56 15.Fiierul text bac.txt conine pe prima linie un numr natural n (n<100 , iar pe a doua linie, separate prin cte un spaiu, n numere naturale, mai mici dect 30000 fiecare. Scriei un program C/C++ care citete de la tastatur un numr natural k (k<50 precum i numerele din fiierul bac.txt i afiea! pe ecran, cu cte un spaiu 'ntre ele, toate numerele de pe a doua linie a fiierului care sunt puteri ale lui k. $ac nu exist un asemenea numr pe a doua linie a fiierului, se afiea! pe ecran mesa%ul NU. 0n numr natural x este putere a lui k dac exist un numr natural y astfel 'nct x;ky. Exemplu& dac se citete de la tastatur k=2, iar fiierul are coninutul alturat 8 32 56 317 809 256 2 1 60 atunci pe ecran se afiea! numerele& 32 256 2 1 1..Fiierul text bac.in conine pe prima linie un numr natural n (0<n<5000 , iar pe a doua linie, separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare. Scriei un program C/C++ care determin i scrie 'n fiierul bac.out toate numerele de pe a doua linie a fiierului care apar o singur dat pe aceast linie. -umerele determinate se "or afia 'n ordinea cresctoare a "alorilor lor, separate prin cte un spaiu. Exemplu: dac pe prima linie a fiierului bac.in se afl 10, iar pe linia a doua se gsesc numerele 2 4548 568 4548 57 89 5974 2 89 32 atunci "alorile cutate sunt 32 57 568 5974.

10

Fiiere

Variante 2009

19.Se consider su#programul cmax care prin parametrul a primete un numr natural nenul mai mic dect 30000, iar prin parametrul b furni!ea! cifra maxim din numrul a. a% Scriei, folosind lim#a%ul C/C++, doar antetul su#programului cmax. &% Fiierul bac.txt conine cel mult 1000 numere naturale nenule, mai mici dect 30000 fiecare, separate prin cte un spaiu. Scriei programul C/C++ care citete din fiierul bac.txt toate numerele i care determin cea mai mare cifr din scrierea lor folosind apeluri utile ale su#programului cmax. =ifra determinat se "a afia pe ecran. Exemplu& dac fiierul bac.txt conine "alorile& 23 12 64 12 72 345 67 23 71 634 atunci pe ecran se afiea! 7. 20.Fiierul bac.in conine pe prima linie un numr natural n (0<n<5000 , iar pe a doua linie, separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare. Scriei un program C/C++ care determin i scrie 'n fiierul bac.out, toate numerele, citite de pe a doua linie a fiierului bac.in, care apar de cel puin dou ori. -umerele determinate se "or scrie 'n ordine cresctoare, pe aceeai linie, separate prin cte un spaiu. Exemplu& dac fiierul bac.in conine pe prima linie numrul 11, iar pe linia a doua "alorile 23 12 54 12 78 345 67 23 78 934 23 atunci fiierul bac.out "a conine& 12 23 78 2/.Se consider su#programul divizor, care primete prin intermediul primului parametru, a, un numr natural (1<a<10000) i returnea! cel mai mic di"i!or prim al numrului a. a% Scriei 'n lim#a%ul C3C44 definiia complet a su#programului divizor. &% Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a doua linie n numere naturale mai mari dect 1, separate prin cte un spaiu, fiecare numr a"nd maximum 4 cifre. Scriei un program C/C++ care citete toate numerele din fiierul date.in i afiea! pe ecran suma o#inut adunnd, pentru fiecare dintre cele n numere citite de pe a doua linie din fiier, cel mai mic di"i!or prim. Se "or utili!a apeluri utile ale su#programului divizor. Exemplu: dac fiierul date.in are coninutul alturat 6 16 25 6 77 10 4 se "a afia 20 (20=2+5+2+7+2+2 . 22.Su#programul dist primete prin intermediul parametrului a un numr natural cu maximum 8 cifre i returnea! 1 dac cifrele numrului a au aceeai paritate (sunt toate pare sau toate impare , altfel returnea! 0. a% Scriei definiia complet a su#programului dist. &% Fiierul text date.in conine pe prima linie un numr natural nenul n (n100 , iar pe a doua linie n numere naturale, separate prin cte un spaiu, fiecare numr a"nd maximum 8 cifre. Scriei un program C/C++ care citete toate numerele din fiier i afiea! pe ecran, desprite prin cte un spaiu, numerele de pe a doua linie a fiierului date.in, ce au toate cifrele cu aceeai paritate, folosind apeluri utile ale su#programului dist. 3n ca!ul 'n care un exist niciun astfel de numr se "a afia, pe ecran, "aloarea -1. Exemplu: dac fiierul date.in are coninutul alturat, 6 16 1775 333 242477 123 55566 atunci se "or afia numerele& 1775 333 (nu neaprat 'n aceast ordine 2).Se consider su#programul cmmdc, care primete prin intermediul a doi parametri, a i b, dou numere naturale nenule, cu maximum 8 cifre fiecare, i returnea! cel mai mare di"i!or comun al "alorilor parametrilor a i b. a% Scriei numai antetul su#programului cmmdc. &% Fiierul text date.in conine pe prima linie un numr natural nenul n (n100 , iar pe a doua linie un ir format din n numere naturale nenule, separate prin cte un spaiu, fiecare numr a"nd maximum 8 cifre. Scriei un program C/C++ care citete toate numerele din fiierul text date.in i afiea! pe ecran numrul perec+ilor de elemente aflate pe po!iii consecuti"e 'n irul format cu elementele situate pe a doua linie a fiierului, care sunt prime 'ntre ele, folosind apeluri utile ale su#programului cmmdc. Exemplu: dac fiierul date.in are coninutul alturat 7 16 25 15 12 7 4 5

11

Fiiere

Variante 2009

se "a afia 4 pentru c pec+ile (16,25), (12,7), (7,4), (4, 5) sunt formate din numere prime intre ele. 21.Se consider su#programul pal, care primete prin intermediul primului parametru, a, un numr natural, cu minimum 2 cifre i maximum 8 cifre, i furni!ea! prin intermediul celui de(al doilea parametru, b, cel mai apropiat numr de "aloarea lui a, care este palindrom. 3n ca!ul 'n care exist 2 astfel de numere, su#programul "a returna numrul mai mic. 0n numr natural x este palindrom dac este egal cu numrul o#inut prin scrierea cifrelor lui x 'n ordine in"ers. Exemplu& dac a=16, atunci "aloarea returnat este 11* dac a=128, "aloarea returnat este 121, iar dac a=33, atunci se returnea! 33. a% Scriei definitia complet a su#programului pal. &% Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a doua linie n numere naturale nenule, separate prin cte un spaiu, fiecare numr a"nd minimum 2 cifre i maximum 8 cifre. Scriei un program C/C++ care citete toate numerele din fiierul text date.in i afiea! pe ecran, desprite prin cte un spaiu, pentru fiecare dintre cele n numere, cel mai apropiat numr palindrom, folosind apeluri utile ale su#programului pal. Exemplu: dac fiierul date.in are coninutul alturat 4 16 1775 333 190 ?tunci se "or afia numerele& 11 1771 333 191 22.Se consider su#programul cifre, cu doi parametri, a i b, care primete prin intermediul primului parametru, a, un numr natural cu maximum 8 cifre nenule i returnea!, prin intermediul celui de(al doilea parametrul b, cel mai mic numr care se poate forma cu toate cifrele lui a. a% Scriei definiia complet a su#programului cifre. &% Se consider fiierul text date.in ce conine pe prima linie un numr natural nenul n (n100 , iar pe a doua linie n numere naturale, separate prin cte un spaiu, fiecare numr a"nd maximum 8 cifre nenule. Scriei un program C/C++ care citete toate numerele din fiierul text date.in i afiea! pe ecran, desprite prin cte un spaiu, numerele situate pe a doua linie a fiierului, formate numai din cifre ordonate cresctor, folosind apeluri utile ale su#programului cifre. 3n ca!ul 'n care nu exist niciun astfel de numr se "a afia "aloarea 0. Exemplu: dac fiierul date.in are coninutul alturat, 6 16 175 333 242477 321 269 atunci se "or afia numerele& 16 333 269 24.Fiierul text numere.txt conine, pe o singur linie, cel mult 1000 de numere naturale nenule de cel mult patru cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un program C/C++ care citete toate numerele din fiierul numere.txt, creea! fiierul text pare.txt i scrie pe prima lui linie, separate prin cte un spaiu, toate numerele pare citite, 'n ordinea 'n care acestea apar 'n fiierul numere.txt. $ac fiierul numere.txt nu conine niciun numr par, atunci 'n fiierul pare.txt se "a scrie mesa%ul nu exista. Exemplu: numere.txt pare.txt 2 3 1 4 7 2 5 8 6 2 4 2 8 6 25.Fiierul text INTRARE.TXT conine pe prima linie o "aloare natural n (1<n<100), iar pe a doua linie, separate prin cte un spaiu, n numere naturale distincte, cu cel mult patru cifre. Scriei un program C/C++ care creea! fiierul text IESIRE.TXT i scrie 'n el, pe prima linie, separate prin spaiu, toate "alorile o#inute ca sum de dou elemente distincte aflate pe linia a doua 'n fiierul INTRARE.TXT. Exemplu: dac fiierul INTRARE.TXT are urmtorul coninut& 4 1 4 3 2 atunci fiierul IESIRE.TXT "a conine numerele& 5 4 3 7 6 5 (nu neaprat 'n aceast ordine 2..Fiierul text bac.txt conine, pe o singur linie, cel puin 2 i cel mult 100 de numere naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un

12

Fiiere

Variante 2009

spaiu. Scriei un program C/C++ care citete numerele din fiier i scrie pe ecran, 'n ordine cresctoare, separate prin spaiu, cele mai mici dou numere dintre cele citite. Exemplu: dac fiierul bac.txt conine numerele& 1017 48 310 5710 162 atunci se "a afia& 48 162 29.Fiierul text bac.txt conine, pe o singur linie, cel puin 2 i cel mult 100 de numere naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un program C/C++ care citete toate numerele din fiier i scrie pe ecran ultima cifr a produsului celor mai mari dou numere dintre cele citite. Exemplu: dac fiierul bac.txt conine numerele& 1017 48 312 5742 162 atunci se "a afia& 4 (ultima cifr a produsului numerelor 1017, 5742 40.Fiierul text bac.txt conine, pe prima sa linie, 100 de numere naturale de cel mult 4 cifre fiecare, numerele fiind ordonate cresctor i separate prin cte un spaiu, iar pe a doua linie un singur numr natural x. Scriei un program C/C++ care citete toate numerele din fiier i "erific dac x se afl 'n irul celor 100 de numere aflate pe prima linie a fiierului. 3n ca! afirmati", se "a afia pe ecran mesa%ul DA, altfel se "a afia mesa%ul NU. Exemple: dac fiierul bac.txt conine& 17 38 40 45 50 51 52 53 54 55 ... 145 52 atunci se "a afia& DA * dac fiierul bac.txt conine& 2 11 15 16 20 25 30 35 40 ... 495 33 atunci se "a afia& NU. 4/.Scriei un program C/C++ care creea! fiierul text SIR.TXT i scrie 'n el, 'n ordine alfa#etic, toate irurile formate din dou caractere distincte, litere mici ale alfa#etului engle!. Fiecare ir "a fi scris pe cte o linie a fiierului. $2.a% Fiierul date.in conine un ir de cel mult 10000 numere naturale (printre care cel puin un numr par i cel puin un numr impar , cu cel mult dou cifre fiecare, separate prin cte un spaiu. Scriei un program C/C++ care citete numerele din fiierul date.in i scrie 'n fiierul text date.out "alorile distincte citite, separate prin cte un spaiu, respectndu(se regula& pe prima linie "or fi scrise numerele impare 'n ordine cresctoare, iar pe linia a doua numerele pare, 'n ordine descresctoare. ?legei o metod eficient din punctul de "edere al timpului de executare. Exemplu& dac pe prima linie a fiierului date.in se afl numerele& 75 12 3 3 18 75 1 3 atunci fiierul date.out "a conine& 1 3 75 18 12 &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 4).,entru un ir de numere naturale, numim 9nod9 al irului un termen din ir care are doi "ecini, termenul precedent i termenul urmtor din ir, i "aloarea termenului respecti" este strict mai mic dect suma "alorilor celor doi "ecini ai si. Fiierul text date.in conine un ir de cel puin dou i cel mult 1000 de numere naturale a"nd maximum 6 cifre fiecare, numere separate prin cte un spaiu. Scriei un program C/C++ care citete toate numerele din fiier i afiea! numrul de 9noduri: ale irului citit. Exemplu: dac fiierul date.in are urmtorul coninut& 51 20 100 43 43 618 5000 31 2020 114 116 4 atunci pe ecran se afiea! 6 (cele ase numere su#liniate repre!int 9noduri: ale irului . 41.Fiierul text date.in conine pe prima linie, separate prin cte un spaiu, cel mult 1000 de numere naturale, fiecare dintre ele a"nd maximum 9 cifre. a% Scriei un program C/C++ care citete numerele din fiierul date.txt, determin i

13

Fiiere

Variante 2009

afiea! pe ecran numrul de elemente ale celei mai lungi sec"ene ordonate strict descresctor, formate din "alori citite consecuti" din fiier. ?legei o metod de re!ol"are eficient din punctul de "edere al timpului de executare. Exemplu: dac fiierul date.in conine 5 2 19 4 3 6 3 2 1 0 8 pe ecran se afiea!& 5 &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 42.,entru un ir de numere naturale, numim 9pol9 al irului un termen din ir care are doi "ecini, termenul precedent i termenul urmtor din ir, i "aloarea termenului respecti" este strict mai mare dect "aloarea fiecruia dintre cei doi "ecini ai si. a% Fiierul text date.in conine un ir de cel puin dou i mult 10000 de numere naturale a"nd maximum 6 cifre fiecare, numere separate prin cte un spaiu. Scriei un program C/C++ care citete toate numerele din fiier i afiea! numrul de 9poli: ai irului citit, folosind un algoritm eficient din punctul de "edere al memoriei utili!ate. Exemplu: dac fiierul date.in are urmtorul coninut& 51 20 100 43 43 618 5000 31 2020 114 116 4 atunci pe ecran se afiea! 4 (cele patru numere su#liniate repre!int 9poli: ai irului &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 44.Fiierele text A.TXT i B.TXT conin cel mult 10000 de numere naturale cu cel mult 9 cifre fiecare, scrise fiecare pe cte o linie. a% Scriei un program C/C++ care citete numerele din cele dou fiiere i, printr(o metod eficient din punct de "edere al timpului de executare i al spaiului de memorie utili!at, afiea! pe ecran cte dintre numerele din fiierul A.TXT sunt strict mai mici dect toate numerele memorate 'n fiierul B.TXT. Exemplu: dac fiierul A.TXT are coninutul alturat, 41111 81111 11111 91111 51111 111111 31111 431111 61111 201111 iar fiierul B.TXT are coninutul alturat& 91111 91111 61111 91111 91111 81111 61111 91111 atunci programul "a afia "aloarea 4, deoarece 41111, 11111, 51111, 31111 sunt mai mici dect toate elementele din fiierul B.TXT. &% $escriei succint, 'n lim#a% natural, metoda utili!at la punctul a, %ustificnd eficiena acesteia.

45.Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a doua linie un ir 're0'.t-r de n numere naturale, fiecare a"nd cel mult 9 cifre. -umerele de pe a doua linie sunt separate prin cte un spaiu. a% Scriei un program C/C++ care, utili!nd o metod eficient din punct de "edere al

14

Fiiere

Variante 2009

timpului de executare i al spaiului de memorie, afiea! pe ecran elementele distincte ale irului aflat pe a doua linie a fiierului. Exemplu: dac fiierul NUMERE.TXT are coninutul alturat 7 111 111 111 2111 4111 71111 71111 atunci programul "a afia pe ecran 111 2111 4111 71111. &% $escriei succint, 'n lim#a% natural, metoda utili!at la punctul a%, %ustificnd eficiena acesteia. 4..Fiierul text SIR.TXT conine pe prima linie un numr natural n (1n10000) i pe a doua linie, separate prin spaii, un ir 're0'.t-r de n numere naturale cu cel mult 9 cifre fiecare. -umim platou 'ntr(un ir de "alori o sec"en de elemente identice situate pe po!iii alturate. @ungimea unui platou este egal cu numrul de elemente care 'l formea!. a% Scriei un program C/C++ care citete "alorile din fiier i, printr(o metod eficient din punct de "edere al timpului de executare i al spaiului de memorie utili!at, afiea! pe ecran, separate printr(un spaiu, lungimea maxim a unui platou, precum i "aloarea care formea! platoul. 3n ca!ul 'n care sunt mai multe platouri de aceeai lungime se "a afia "aloarea cea mai mare care formea! unul dintre aceste platouri. Exemplu: dac fiierul SIR.TXT are coninutul alturat, 10 11 211 211 211 328 400 400 1201 1201 1201 atunci programul "a afia pe ecran 3 1201. &% $escriei succint, 'n lim#a% natural, metoda utili!at la punctul a%, %ustificnd eficiena acesteia. 49.Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a doua linie n numere naturale cu cel mult 9 cifre fiecare. ?ceste numere sunt dispuse 'n ordine 're0'.t-are i separate 'ntre ele prin cte un spaiu. a% Scriei un program C/C++ care citete "alorile din fiier i, printr(o metod eficient din punct de "edere al timpului de executare, afiea! pe ecran, separate prin cte un spaiu, 'n ordine cresctoare, numerele pare de pe a doua linie a fiierului, urmate de cele impare 'n ordine descresctoare. Exemplu: dac fiierul NUMERE.TXT are coninutul alturat, 6 212 412 5111 71113 81112 101112 atunci programul "a afia pe ecran 212 412 81112 101112 71113 5111 &% $escriei succint, 'n lim#a% natural, metoda utili!at la punctul a, %ustificnd eficiena acesteia. 50.Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a doua linie, n numere naturale cu cel mult 9 cifre fiecare, numere nu neaprat distincte. ?ceste numere sunt dispuse 'n ordine 're0'.t-are i separate 'ntre ele prin cte un spaiu. a% Scriei un program C/C++ care citete "alorile din fiier i, printr(o metod eficient din punct de "edere al timpului de executare i al spaiului de memorie utili!at, afiea! pe ecran, cu un spaiu 'ntre ele, "aloarea care apare de cele mai multe ori 'n fiier i de cte ori apare ea. $ac exist mai multe "alori care apar de un numr maxim de ori, se "a afia cea mai mic dintre ele. Exemplu: dac fiierul NUMERE.TXT are coninutul alturat, 8 711 711 711 11111 11111 11111 191111 231111 atunci programul "a afia pe ecran 711 3. &% $escriei succint, 'n lim#a% natural, metoda utili!at la punctul a, %ustificnd eficiena acesteia. 5/.0n numr natural se numete palindrom dac numrul citit de la stnga la dreapta este egal cu numrul citit de la dreapta la stnga. a% Scriei definiia complet a su#programului Palindrom care primete prin intermediul parametrului n un numr natural de cel mult nou cifre i returnea! 1 dac acesta este palindrom i 0 'n ca! contrar. &% Fiierul text numere.in conine mai multe numere naturale de cel mult 9 cifre fiecare, numerele fiind desprite prin cte un spaiu. =el puin unul dintre numere este palindrom. Scriei un program C/C++ care citete numerele din fiierul numere.in i, folosind apeluri utile ale funciei Palindrom, determin 'n mod eficient care este cel mai mare numr palindrom citit. ,rogramul scrie 'n fiierul text numere.out numrul astfel determinat.

15

Fiiere

Variante 2009

Exemplu: dac numere.in conine numerele& 23 565 78687 7887 7865 78687 7887 23 78687 98798 atunci numere.out "a conine& 78687 '% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit la punctul & () > 1 rnduri . +2.a% Scriei 'n lim#a%ul C/C++ definiia complet a su#programului Ci5re care primete prin parametrii a i b dou numere naturale (0<a<200000000, 0<b<200000000 i returnea! numrul de cifre comune ale celor dou numere. Exemplu: dac a = 123446 i b= 248766 atunci su#programul "a returna 3, iar dac a = 1244 i b = 4456 su#programul "a returna 1. &% Fiierul text numere.in conine pe prima linie a sa dou numere naturale, x, cu cel mult nou cifre, i p, cu exact o cifr, iar pe a doua linie cel mult 1000 de numere naturale de cel mult nou cifre fiecare. Scriei programul C/C++ care citete numerele din fiierulu numere.in i, apelnd funcia Cifre, scrie 'n fiierul text numere.out acele numere de pe a doua linie a fiierului numere.in care au exact p cifre comune cu numrul x. -umerele "or fi scrise pe aceeai linie, desprite prin cte un spaiu. '% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit la punctul & () > 1 rnduri Exemplu: numere.in numere.out 345638 3 45239 900583 635 123 45239 96583 900583 635 78900 +2.a% Scriei definiia complet a su#programului Insereaza, cu patru parametri, n, x, k i v, care primete prin intermediul parametrului n un numr natural (0<n<1000 , prin intermediul parametrului x un ta#lou unidimensional cu n elemente, numere reale, numerotate de la 1 la n, prin parametrul k un numr natural repre!entnd o po!iie din ta#lou(1kn), iar prin parametrul v un numr real. Su#programul "a insera "aloarea v pe po!iia k a ta#loului x i furni!ea! ta#loul modificat, precum i numrul elementelor acestuia, actuali!ate. &% Fiierul text sir.in conine cel puin dou i cel mult 100 numere naturale de maximum patru cifre fiecare, numerele fiind desprite prin cte un spaiu. Scriei un program C/C++ care citete numerele din fiierul sir.in i, folosind apeluri ale su#programului Insereaza, construiete 'n memorie un ta#lou unidimensional care "a conine toate numerele din fiierul sir.in, iar 'ntre fiecare dou numere consecuti"e din fiier inserea! media lor aritmetic. ,rogramul scrie 'n fiierul text sir.out elementele ta#loului o#inut, cu cel mult o !ecimal, cte 10 elemente pe fiecare rnd (cu excepia ultimului rnd, care poate s conin mai puine , elementele de pe acelai rnd fiind desprite prin cte un spaiu. Exemplu& dac fiierul sir.in conine numerele& 7 5 635 456 0 8 587 atunci, dup executarea programului, fiierul sir.out "a conine& 7 6 5 320 635 545.5 456 228 0 4 8 297.5 587 '% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit la punctul & () > 1 rnduri . 51.numr natural de cel mult nou cifre i furni!ea! prin parametrul x cea mai mare cifr a numrului transmis prin parametrul n. a% Scriei definiia complet a su#programului Cifra. ,$p.% &% Scriei un program C/C++ care citete de la tastatur un numr natural n, n<1000000000, i afiea! pe ecran mesa%ul Da 'n ca!ul 'n care numrul citit este format doar din cifre aparinnd mulimii {0,1,2,3,4} i afiea! mesa%ul Nu 'n ca! contrar. '% Fiierul text NUMERE.IN conine pe prima linie un numr natural n (0<n<1000 , iar pe a doua linie, separate prin cte un spaiu, n numere naturale cu cel mult nou cifre fiecare. Scriei un program C/C++ care citete de la tastatur o cifr c, i, folosind apeluri utile ale su#programului Cifra, determin pentru cte dintre numerele de pe a doua linie a fiierului NUMERE.IN, cifra c repre!int cifra maxim. ,rogramul scrie pe primul rnd al fiierul text NUMERE.OUT mesa%ul DA dac exist astfel de "alori i pe al doilea rnd numrul acestora, iar dac nu exist "a scrie 'n fiier mesa%ul NU. Exemplu& dac cifra citit este 8 NUMERE.IN conine 10 725 3695 423 0 7895 0 100 101 870 568 NUMERE.OUT "a conine DA 2

16

Fiiere

Variante 2009

52.,entru un ir de numere naturale, numim 9 punct de minim9 al irului un termen din ir care are doi "ecini, termenul precedent i termenul urmtor din ir, i "aloarea termenului respecti" este strict mai mic dect "aloarea fiecruia dintre cei doi "ecini ai si. a% Fiierul text date.in conine un ir de cel puin dou i mult 10000 de numere naturale a"nd maximum 6 cifre fiecare, numere separate prin cte un spaiu. Scriei un program C/C++ care citete toate numerele din fiier i afiea! numrul de 9puncte de minim: ale irului citit, folosind un algoritm eficient din punctul de "edere al memoriei utili!ate. Exemplu: dac fiierul date.in are urmtorul coninut& 51 20 100 43 43 618 5000 31 2020 4 atunci pe ecran se afiea! 2 (cele dou numere su#liniate repre!int 9punctele de minim: ale irului &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 54.,e prima linie a fiierului BAC.TXT se gsete un numr natural n (0<n<1000 , pe linia a doua se gsesc n numere naturale, ordonate cresctor, cu cel mult 4 cifre fiecare, iar pe linia a treia un numr natural a (a<10000 . -umerele de pe a doua linie a fiierului sunt separate prin cte un spaiu. S se scrie un program care citete toate numerele din fiier i afiea! pe ecran mesa%ul DA dac numrul a se afl printre cele n numere de pe linia a doua a fiierului, sau mesa%ul NU 'n ca! contrar. Exemplu: dac fiierul conine& 7 2 3 3 4 5 8 9 8 atunci se "a afia& DA a% $escriei 'n lim#a% natural o metod de re!ol"are eficient ca timp de executare. &% Scriei programul C/C++ corespun!tor metodei descrise la punctul a%. 55.Fiierul text numere.in are pe prima linie un numr natural n (0<n<1000 i pe urmtoarea linie n numere reale. Scriei un program C/C++ care citete numerele din fiier i afiea! pe ecran media aritmetic a numerelor aflate pe a doua linie a fiierului, care au partea 'ntreag format din cel puin dou cifre. 5..Se citete de la tastatur un numr natural n, cu cel mult patru cifre, n 2. S se scrie 'n fiierul prime.out, pe aceeai linie, 'n ordine cresctoare, separate prin cte un spaiu, toate numerele prime mai mici sau egale cu n. Exemplu: pentru n=10, 'n fiierul prime.out "or fi scrise numerele 2 3 5 7 . 59.Se citete de pe prima linie a fiierului text numere.in un numr natural n (0<n<10000 i, de pe a doua linie a fiierului, n numere naturale din inter"alul [1,100] i se cere s se afie!e pe ecran, desprite prin cte un spaiu, numrul sau numerele 'ntregi din inter"alul [1,100] care nu apar printre numerele citite. $ac pe a doua linie a fiierului apar toate numerele din inter"alul preci!at, se "a afia mesa%ul NU LIPSESTE NICIUN NUMAR. ?legei un algoritm de re!ol"are eficient din punctul de "edere al timpului de executare. Exemplu: pentru fiierul numere.in cu urmtorul coninut 12 4 2 3 1 6 5 7 8 9 11 10 100 se "or afia "alorile 12 13 6 99. a% 6xplicai 'n lim#a% natural metoda utili!at %ustificnd eficiena acesteia (1(4 rnduri &% Scriei programul C/C++ ce re!ol" pro#lema enunat, corespun!tor metodei descrise la punctul a%.

/0.a% Scriei definiia complet a unui su#program cu numele ordonat care primete prin intermediul singurului su parametru, n, un numr natural cu cel mult 9 cifre i returnea! "aloarea 1 dac numrul are cifrele ordonate strict descresctor, de la stnga la dreapta, i "aloarea 0 'n ca! contrar. &% Scriei un program C/C++ care citete de pe prima linie a fiierului text numere.in un numr natural n (0<n<1000 i de pe a doua linie a fiierului n numere naturale cu cel mult 9 cifre i afiea! pe ecran, desprite prin cte un spaiu, numerele naturale (i0tin'te, coninute de a doua linie a fiierului care au cifrele ordonate strict descresctor, de la stnga la dreapta. Se "or utili!a apeluri utile ale su#programului ordonat.

17

Fiiere

Variante 2009

Exemplu: dac fiierul numere.in are urmtorul coninut& 134 6420 1243 9802 731 6420 pe ecran se "or afia numerele& 6420 731 (nu neaprat 'n aceast ordine . ./.Fiierul text NUMERE.IN conine, pe fiecare linie a sa, cte dou numere naturale mai mici sau egale cu 10000, desprite printr(un spaiu. Scriei programul C/C++ care s afie!e pe ecran, unul su# altul, cel mai mare numr de pe fiecare linie, ca 'n exemplu. Exemplu: dac fiierul NUMERE.IN are coninutul alturat& 12 14 110 12 4 -8 atunci pe ecran se afiea!& 14 110 .2.Fiierul text NUMERE.IN conine, pe mai multe linii, cel mult 30000 de numere naturale nenule mai mici sau egale cu 500, numerele de pe fiecare linie fiind desprite prin cte un spaiu. a% Scriei programul C/C++ care afiea! pe ecran, 'n ordine cresctoare, toate numerele care au aprut o singur dat 'n fiierul NUMERE.IN, desprite prin cte un spaiu. Exemplu: dac fiierul NUMERE.IN conine numerele scrise alturat, 2 23 34 3 8 9 9 23 6 8 9 2 4 5 23 9 se "or afia "alorile urmtoare& 3 4 5 6 34 . &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit la punctul a% () > 1 rnduri . .).Fiierul text NUMERE.IN conine, pe mai multe linii, cel mult 30000 de numere naturale nenule mai mici sau egale cu 500, numerele de pe fiecare linie fiind desprite prin cte un spaiu. a% Scriei programul C/C++ care afiea! pe ecran, 'n ordine descresctoare, desprite prin cte un spaiu, toate numerele care au aprut exact o singur dat 'n fiierul NUMERE.IN. Exemplu: dac fiierul NUMERE.IN conine numerele scrise alturat, 2 23 34 3 8 9 9 23 6 8 9 2 4 5 23 9 se "or afia "alorile urmtoare& 34 6 5 4 3 & $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit la punctul a% () > 1 rnduri . .1.Se consider su#programul CMMMC care primete prin cei doi parametri, x i y, dou numere naturale (1x10000, 1y10000 i returnea! cel mai mic multiplu comun al lor. a% Scriei numai antetul su#programului CMMMC. &% Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai mici sau egale dect 10000, desprite printr(un spaiu. Scriei un program C/C++ care, pentru fiecare linie k din fiierul NUMERE.IN, citete cele dou numere de pe aceast linie i scrie 'n fiierul text NUMERE.OUT , tot pe linia k, cel mai mic multiplu comun al acestora, ca 'n exemplu. Se "or utili!a apeluri utile ale su#programului CMMMC. Exemplu: dac fiierul NUMERE.IN are coninutul alturat& 12 14 11 12 4 8 atunci fiierul NUMERE.OUT "a a"ea urmtorul coninut: 84 132 8 .2.Se consider su#programul CMMDC care primete prin cei doi parametri, x i y, dou

18

Fiiere

Variante 2009

numere naturale (1x10000, 1y10000 i returnea! cel mai mare di"i!or comun al lor. a% Scriei numai antetul su#programului CMMDC. &% Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai mici sau egale dect 10000, desprite printr(un spaiu, repre!entnd numitorul i numrtorul cte unei fracii. Scriei un program C/C++ care, pentru fiecare linie k din fiierul NUMERE.IN, citete numitorul i numrtorul fraciei de pe aceast linie i scrie 'n fiierul text NUMERE.OUT , tot pe linia k, numitorul i numrtorul acestei fracii, adus la forma ireducti#il, ca 'n exemplu. Se "or utili!a apeluri apeluri utile ale su#programului CMMDC. Exemplu: dac fiierul NUMERE.IN are coninutul alturat& 12 14 11 12 2 2 4 8 atunci fiierul NUMERE.OUT "a a"ea urmtorul coninut: 6 7 11 12 1 1 1 2 .4.Fiierul text bac.txt conine cel puin dou i cel mult 1000 de numere naturale, (i0tin'te. -umerele sunt separate prin cte un spaiu i fiecare dintre ele are cel mult 9 cifre. a% Scriei un program C/C++ care determin cele mai mici dou numere din fiier, utili!nd un algoritm eficient din punct de "edere al timpului de executare i al spaiului de memorie utili!at. =ele dou numere "or fi afiate pe ecran, 'n ordine 're0'.t-are, separate printr(un spaiu. Exemplu: dac fiierul conine numerele& 512 6 860 3 12 300 se "a afia& 3 6 &% $escriei succint, 'n lim#a% natural, algoritmul utili!at, %ustificnd eficiena acestuia. .5.Fiierul text bac.txt conine un ir de cel mult 2009 numere naturale nenule, cu cel mult 4 cifre fiecare, pe mai multe rnduri, numerele de pe acelai rnd fiind separate prin cte un spaiu. a% Scriei un program C/C++ care citete de la tastatur un numr natural k i afiea! pe ecran cel mai mic numr din fiierul bac.txt care este mai mare sau egal cu numrul natural k, precum i numrul de apariii ale acestuia 'n fiier, folosind o metod eficient din punctul de "edere al timpului de executare. =ele dou "alori "or fi afiate pe o linie a ecranului, separate printr(un spaiu. $ac 'n fiier nu exist nici un numr mai mare sau egal cu k, se "a afia doar "aloarea 0. Exemplu& dac 'n fiier a"em numerele 31 2 63 71 8 63 5 281 i numrul citit este k=50, atunci pe ecran se "or afia numerele& 63 2. &% $escriei succint, 'n lim#a% natural, algoritmul utili!at, %ustificnd eficiena acestuia. ...Fiierul text bac.txt conine cel mult 10000 de numere naturale din inter"alul 'nc+is [0, 999], aflate pe mai multe linii, numerele de pe aceeai linie fiind separate prin cte un spaiu. a% Scriei un program C/C++ care determin i afiea! pe ecran cel mai mic numr prim a cu proprietatea maxa, unde max este cea mai mare "aloare din fiier. Se "a utili!a un algoritm eficient din punct de "edere al spaiului de memorie utili!at. Exemplu: dac fiierul conine numerele& 5 8 99 5 1 1 2 2 se "a afia 101. &% $escriei succint, 'n lim#a% natural, algoritmul utili!at, %ustificnd eficiena acestuia.

.9.Fiierul text bac.txt conine pe mai multe rnduri cel mult 50000 de numere naturale din inter"alul 'nc+is [0, 99], numerele de pe acelai rnd fiind separate prin cte un spaiu. a% Scriei un program C/C++ care afiea! pe ecran, n -r(ine 're0'.t-are, acele numere din fiier care sunt mai mari dect un numr natural k, citit de la tastatur, utili!nd un algoritm eficient din punct de "edere al timpului de executare. $ac un numr care corespunde cerinei apare de mai multe ori, se "a afia o singur dat. -umerele "or fi afiate pe ecran separate prin cte un spaiu. Exemplu: dac fiierul conine numerele& 15 36 33 36 1 12 1 24 2 , iar pentru k se citete "aloarea 24, se "or afia numerele 33 36. &% $escriei succint, 'n lim#a% natural, algoritmul utili!at, %ustificnd eficiena acestuia.

19

Fiiere

Variante 2009

90.Fiierul text bac.txt conine pe mai multe rnduri cel mult 50000 de numere naturale, numerele aflate pe acelai rnd fiind separate prin cte un spaiu. Fiecare numr are cel mult 4 cifre. a% Scriei un program C/C++ care, utili!nd un algoritm eficient din punct de "edere al timpului de executare i al spaiului de memorie folosit, determin numrul din fiier care are cei mai muli di"i!ori. 3n ca!ul 'n care exist mai multe "alori 'n fiier care au numr maxim de di"i!ori, programul "a afia cea mai mic dintre acestea. Exemplu& dac fiierul conine "alorile 23 12 100 36 atunci se "a afia 36, pentru c att 100 ct i 36 au numr maxim de di"i!ori, dar 36 este cel mai mic. &% $escriei succint, 'n lim#a% natural, algoritmul utili!at, %ustificnd eficiena acestuia. 9/.Fiierul numere.in conine cel mult 5000 de numere reale, cte unul pe fiecare linie. Se cere s se scrie un program care s citesc toate numerele din fiier i s afie!e pe ecran numrul de ordine al primei, respecti" al ultimei linii pe care se afl cel mai mare numr din fiier. =ele dou numere "or fi separate printr(un spaiu. ?legei o metod de re!ol"are eficient din punct de "edere al spaiului de memorare i al timpului de executare. Exemplu: dac fiierul are coninutul alturat, 3.5 7 -4 7 2 7 6.3 5 pe ecran se "or afia numerele 2 6. a% $escriei succint, 'n lim#a% natural, metoda de re!ol"are aleas, explicnd 'n ce const eficiena ei. &% Scriei programul C/C++ corespun!tor metodei descrise. 92.Scriei un program C/C++ care creea! fiierul text SIR.TXT i scrie 'n el, 'n ordine alfa#etic, toate irurile formate din dou caractere distincte, litere mari ale alfa#etului engle!. Fiecare ir "a fi scris pe cte o linie a fiierului. 92.a% Scriei definiia complet a su#programului dcm, cu doi parametri, care& ( primete prin parametrii a i b dou "alori naturale din inter"alul [1,30000] ( returnea! o "aloare natural repre!entnd cel mai mare numr care este att di"i!or al lui a ct i di"i!or al lui b. Exemplu: dac a=100 i b=120, su#programul returnea! "aloarea 20. &% Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (1n100) i pe urmtoarea linie n numere naturale din inter"alul [1,30000], separate prin cte un spaiu. Scriei un program C/C++ care citete toate numerele din fiierul NUMERE.IN i determin, folosind apeluri ale su#programului cmmdc, cel mai mare di"i!or comun al celor n numere situate pe linia a doua 'n fiier. ,rogramul afiea! pe ecran numrul cu proprietatea cerut. Exemplu: dac fiierul NUMERE.IN are coninutul& 5 60 72 600 24 48 atunci se afiea! "aloarea 12.

91.Fiierul text bac.txt conine pe fiecare linie cte un numr 'ntreg format din cel mult patru cifre. Se tie c fiierul conine cel puin un numr. Scriei un program eficient att din punct de "edere al timpului de executare ct i din punct de "edere al spaiului de memorie utili!at, care citete de la tastatur un numr real x, apoi determin i afiea! acel numr din fiierul bac.txt care are "aloarea cea mai apropiat de "aloarea lui x. Exemplu: dac fiierul bac.txt are coninutul alturat, 4 -5 -6

20

Fiiere

Variante 2009

-984 1345 -1 iar de la tastatur se citete "aloarea -3.85, programul "a afia "aloarea -5. a% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . &% Scriei un program C/C++ care re!ol" pro#lema conform metodei descrise. 9#.a% Scriei un program C/C++ care citete de la tastatur un numr natural nenul, S, a"nd maximum 9 cifre, i printr(o metod eficient din punct de "edere al timpului de executare, determin i scrie 'n fiierul rez.dat trei "alori naturale a cror sum este egal cu S, i al cror produs este maxim. =ele trei "alori "or fi scrise 'n ordine cresctoare pe prima linie a fiierului rez.dat, separate prin cte un spaiu. Exemplu& dac se citete "aloarea 5, fiierul rez.dat "a a"ea o linie cu coninutul 1 2 2. &% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . 94.Fiierul text BAC.DAT conine pe prima linie, separate printr(un spaiu, dou "alori naturale n i m (2n1000, 2m1000 , pe a doua linie n "alori 'ntregi, apoi pe urmtoarele m linii cte (-u. "alori, fiecare dintre aceste perec+i determinnd un inter"al 'nc+is (prin inter"al 'nc+is determinat de dou "alori a i b se 'nelege inter"alul [a,b], dac ab sau inter"alul [b,a], dac b<a . Valorile de pe a doua i de pe urmtoarele m linii sunt separate 'ntre ele prin cte un spaiu i au cel mult 4 cifre fiecare. Se cere determinarea i afiarea pe ecran a numrului de inter"ale, dintre cele citite din fiier, care conin toate "alorile aflate pe a doua linie a fiierului. Se "a utili!a o metod eficient din punct de "edere al timpului de executare i al memoriei utili!ate. Exemplu& dac fiierul BAC.DAT are coninutul alturat, programul "a afia& 2 6xplicaie& din cele patru inter"ale date pe liniile 3, 4, 5 i 6, numai dou conin toate "alorile de pe a doua linie a fiierului i anume [-20,50] i [-11,20]. 10 4 8 3 -11 17 -8 3 14 5 0 -2 -10 100 -20 50 15 -80 20 -11 a% $escriei succint, 'n lim#a% natural, metoda de re!ol"are folosit, explicnd 'n ce const eficiena ei () > 1 rnduri . &% Scriei un program C3C44 care s re!ol"e pro#lema conform metodei descrise. 95.,e prima linie a fiierului text DATE.TXT se afl un numr natural n (0<n 10000), iar pe a doua linie un ir de n numere naturale, deprite prin cte un spaiu, fiecare a"nd cel mult 4 cifre. a% Scriei un program C/C++ care citete numerele din fiier i afiea!, pe ecran, "alorile din ir, 'n ordinea cresctoare a cifrei unitilor. $ac dou numere din ir au aceeai cifr a unitilor nu contea! care dintre ele "a fi afiat primul. Aeali!ai un program eficient din punct de "edere al timpului de executare. Exemplu& dac fiierul DATE.TXT conine 7 32 491 26 328 213 500 422 pe ecran se "a afia& 500 491 32 422 213 26 328 &% $escriei succint, 'n lim#a% natural, metoda utili!at, %ustificnd eficiena acesteia. 9..,e prima linie a fiierului text DATE.TXT se afl un ir de cel mult 10000 de numere naturale, desprite prin cte un spaiu, fiecare a"nd exa't - 'i5r.. a% Scriei un program C/C++ care citete numerele din fiier i le scrie 'n fiierul text OUT.TXT, pe o singur linie, 'n ordine cresctoare a "alorilor lor, separate prin cte un spaiu. Se "a utili!a un algoritm eficient din punct de "edere al timpului de executare. Exemplu& dac din fiierul DATE.TXT se citete irul& 2 4 3 2 7 4 3 7 2 7 7 2 1 9 1 1 2 3 fiierul OUT.TXT "a conine 1 1 1 2 2 2 2 2 3 3 3 4 4 7 7 7 7 9

21

Fiiere

Variante 2009

&% 6xplicai 'n lim#a% natural metoda utili!at, %ustificnd eficiena acesteia. 99.,e prima linie a fiierului text DATE.TXT se afl un numr natural nenul n (n 1000), iar pe a doua linie un ir de n numere 'ntregi nenule, deprite prin cte un spaiu, fiecare a"nd cel mult 9 cifre. a% Scriei un program C/C++ care citete numerele din fiier i ordonea! cresctor doar numerele po!iti"e din ir, fr a modifica po!iiile numerelor negati"e. ,rogramul "a afia, pe ecran, pe o singur linie, irul o#inut dup ordonare, numerele fiind desprite prin cte un spaiu. 3n locul fiecrui numr negati" din irul citit se "a afia "aloarea 0. Aeali!ai un program eficient din punct de "edere al spaiului de memorie folosit. Exemplu: dac fiierul DATE.TXT conine& 7 32 -491 23 -328 213 51 -4 pe ecran se "a afia& 23 0 32 0 51 213 0 &% $escriei succint, 'n lim#a% natural, metoda utili!at, %ustificnd eficiena acesteia. /00.Fiierul BAC.TXT conine 10000 de numere naturale (dintre care cel puin dou impare cu cel mult 9 cifre fiecare. -umerele sunt separate prin cte un spaiu. a% Scriei un program C/C++ care, utili!nd un algoritm eficient din punct de "edere al spaiului de memorare i al timpului de executare, determin i afiea! pe ecran penultimul numr impar din fiier precum i numrul de ordine al acestuia. Exemplu: dac fiierul conine "alorile alturate,

se "or afia numerele 49 9998 (penultimul numr impar este 49 i are numrul de ordine 9998. &% $escriei 'n lim#a% natural metoda utili!at i explicai 'n ce const eficiena ei.

22

S-ar putea să vă placă și