Fisiere

1. Fişierul text date.in conţine, pe o singură linie, cel mult 1000 de numere naturale nenule cu cel mult 4 cifre fiecare, numerele fiind separate prin câte un spaţiu. Scrieţi un program C++ care citeşte de la tastatură un număr natural nenul n (n≤999) şi numerele din fişierul date.in şi care afişează pe ecran, separate prin câte un spaţiu, toate numerele din fişier care sunt divizibile cu n. Dacă fişierul nu conţine niciun astfel de număr, atunci se va afişa pe ecran mesajul NU EXISTA. Exemplu: dacă fişierul date.in conţine numerele: 3 100 40 70 25 5 80 6 3798, pentru n=10 atunci pe ecran se va afişa: 100 40 70 80
2. Scrieţi un program C++ care citeşte de la tastură un număr natural n cu cel mult 8 cifre (n≥10) şi care creează fişierul text NR.TXT ce conţine numărul n şi toate prefixele nenule ale acestuia, pe o singură linie, separate prin câte un spaţiu, în ordine descrescătoare a valorii lor. Exemplu: pentru n=10305 fişierul NR.TXT va conţine numerele: 10305 1030 103 10 1
3. Se consideră fişierul BAC.TXT ce conţine un şir crescător cu cel mult un milion de numere naturale de cel mult nouă cifre fiecare, separate prin câte un spaţiu. Să se scrie un program C/C++ care, folosind un algoritm eficient din punct de vedere al memoriei utilizate şi al timpului de executare, citeşte din fişier toţi termenii şirului şi afişează pe ecran, pe o singură linie, fiecare termen distinct al şirului urmat de numărul de apariţii ale acestuia în şir. Valorile afişate sunt separate prin câte un spaţiu. Exemplu: dacă fişierul BAC.TXT are următorul conţinut:1 1 1 5 5 5 5 9 9 11 20 20 20  programul va afişa: 1 3 5 4 9 2 11 1 20 3, deoarece 1 apare de 3 ori, 5 apare de 4 ori, etc.
4. Pe prima linie a fişierului text BAC.TXT se află o valoare naturală n (1<n≤50), iar pe a doua linie n numere naturale cu maximum 4 cifre fiecare, despărţite prin câte un spaţiu. În şirul numerelor de pe a doua linie a fişierului există cel pzâin două numere pătrate perfecte. Scrieţi un program C/C++ care citeşte toate numerele din fişier şi afişează pe ecran expresia aritmetică reprezentând suma numerelor de pe a doua linie a fişierului care au proprietatea că sunt pătrate perfecte, cu simbolul + între ele şi, după un semn =, valoarea acestei sume, ca în exemplu. Termenii sumei afişate se pot afla în orice ordine. Exemplu: dacă fişierul BAC.TXT are următorul conţinut 5 9 5 36 9 8 atunci pe ecran se poate afişa: 9+9+36=54 sau 9+36+9=54 sau 36+9+9=54.
5. Fişierul text numere.txt conţine pe prima linie un număr natural n (n<30000), iar pe a doua linie n numere întregi având maximum 4 cifre fiecare. Se cere să se afişeze pe ecran un şir de n numere întregi, cu proprietatea că valoarea termenului de pe poziţia i (i=1,2,…,n) din acest şir este egală cu cea mai mare dintre primele i valori de pe a doua linie a fişierului numere.txt.  Scrieţi programul C/C++ corespunzător algoritmului descris.Exemplu: dacă fişierul numere.txt are conţinutul: 12 / 4 6 3 7 8 1 6 2 7 9 10 8, se afişează pe ecran numerele 4 6 6 7 8 8 8 8 8 9 10 10
6. Fişierele text NR1.TXT şi NR2.TXT conţin, separate prin câte un spaţiu, mai multe numere întregi de cel mult 9 cifre fiecare. Fiecare dintre fişiere conţine cel mult 100 de valori şi numerele din fiecare fişier sunt ordonate strict crescător. Se cere să se afişeze pe ecran, în ordine crescătoare, numerele divizibile cu 5 care se găsesc doar în unul din cele două fişiere. Exemplu: dacă fişierul NR1.TXT conţine numerele 1 2 3 4 7 20 60, iar fişierul NR2.TXT conţine numerele 3 5 7 8 9 10 12 20 24, atunci se vor afişa pe ecran valorile 5 10 60. Scrieţi programul C/C++ corespunzător.
7. În fişierul text BAC.IN se găsesc, pe o singură linie, separate prin câte un spaţiu, mai multe numere naturale de cel mult 6 cifre fiecare. Se cere să se determine şi să se afişeze pe ecran, separate printr-un spaţiu, ultimele două numere impare (nu neapărat distincte) din fişierul BAC.IN. Dacă în fişier se găseşte un singur număr impar sau niciun număr impar se va scrie pe ecran mesajul Numere insuficiente. Exemplu: dacă fişierul BAC.IN conţine valorile: 12 15 68 13 17 90 31 42 se va afişa 17 31. Scrieţi programul C/C++ corespunzător.
8. Scrieţi programul C/C++ care citeşte din fişierul text DATE.TXT numărul întreg n (1≤n≤10000) şi un şir de n perechi de numere întregi a b (1≤a≤b≤32000), fiecare pereche fiind scrisă pe o linie nouă a fişierului, cu un spaţiu între cele două numere. Programul afişează pe ecran pentru fiecare pereche a,b cel mai mare număr natural din intervalul închis [a,b]care este o putere a lui 2 sau numărul 0 dacă nu există nicio putere a lui 2 în intervalul respectiv. Numerele afișate pe ecran se scriu în linie, separate prin câte un spașiu. Un număr p este putere a lui 2 dacă există un număr natural k astfel încât p=2k. Exemplu: dacă fişierul DATE.TXT conţine numerele 3 2 69 10 20 19 25 se va afişa: 64 16 0.
9. Fişierul text BAC.TXT conţine pe prima linie un număr natural nenul n (1≤n≤1000), iar pe fiecare dintre următoarele n linii, câte două numere întregi a şi b (1≤a≤b≤32000), fiecare pereche reprezentând un interval închis de forma [a,b]. Scrieţi un program C/C++ care determină intervalele care au proprietatea că intersecţia cu oricare dintre celelalte n-1 intervale este vidă şi afişează pe câte o linie a ecranului, separate printr-un spaţiu, numerele care reprezintă capetele intervalelor determinate. Exemplu: dacă fişierul BAC.TXT are conţinutul

```
4
17 20
2 6
10 15
8 16

```

, pe ecran se va afişa:

2 6 sau 17 20
17 20     2  6

10. Fişierul text NUMAR.TXT conţine pe prima linie un număr real pozitiv x care are cel mult două cifre la partea întreagă şi cel mult şapte cifre după punctul zecimal. Scrieţi un program C/C++ care, utilizând un algoritm eficient din punct de vedere al timpului de executare şi al memoriei utilizate, afişează pe ecran, separate printr-un spaţiu, două numere naturale al căror raport este egal cu x şi a căror diferenţă absolută este minimă. Exemplu: dacă fişierul conţine valoarea 0.375, se vor afişa pe ecran numerele 3 8.

11. Pe prima linie a fişierului bac.in se află un număr natural nenul n (n≤1000), iar pe a doua linie a fişierului se află un şir format din n numere naturale, despărţite prin câte un spaţiu, fiecare număr fiind format din cel mult 4 cifre. Scrieţi un program C/C++ care citeşte valorile din fişier şi care afişează pe ecran mesajul DA dacă toate elementele pare din şir sunt în ordine crescătoare şi mesajul NU în caz contrar.

```
Exemplu: dacă fişierul bac.in are conţinutul:
7
10 113 12 33 42 1354 421
pe ecran se va afişa: DA

```

12. Fişierul text bac.txt conţine pe prima linie un număr natural n (n<100), iar pe a doua linie, separate prin câte un spaţiu, n numere naturale de cel mult 8 cifre fiecare. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural k (k<50) precum şi numerele din fişierul bac.txt şi afişează pe ecran, cu câte un spaţiu între ele, toate numerele de pe a doua linie a fişierului care sunt puteri ale lui k. Un număr natural x este putere a lui k dacă există un număr natural y astfel încât x=k^y. Dacă nu există unasemenea număr pe a doua linie a fişierului, se afişează pe ecran mesajul NU.

```
Exemplu: dacă se citeşte de la tastatură k=2, iar fişierul are conţinutul
8
32 56 317 809 256 2 1 60,
atunci pe ecran se afişează numerele: 32 256 2 1

```

13. Fişierul bac.txt conţine cel mult 1000 numere naturale nenule, mai mici decât 30000 fiecare, separate prin câte un spaţiu. Scrieţi programul C/C++ care citeşte din fişierul bac.txt toate numerele şi care determină cea mai mare cifră din scrierea lor şi cel mai mic dintre numerele care conţin această cifră. Cifra şi numărul determinate se vor afişa pe ecran, separate printr-un spaţiu.

```
Exemplu: dacă fişierul bac.txt conţine valorile:
23 12 64 12 72 345 67 23 71 634
atunci pe ecran se afişează 7 67.

```

14. Se consideră fişierul text date.in ce numere naturale, separate prin câte un spaţiu, fiecare număr având maximum 8 cifre nenule. Scrieţi un program C/C++ care citeşte toate numerele din fişierul text date.in şi afişează pe ecran, despărţite prin câte un spaţiu, numerele situate pe a doua linie a fişierului, formate numai din cifre distincte ordonate strict crescător. În cazul în care nu există niciun astfel de număr se va afişa valoarea 0.

```
Exemplu: dacă fişierul date.in are conţinutul
16 175 333 242477 321 269
alăturat, atunci se vor afişa numerele: 16 269.

```