Salut. Am 2 probleme pe care nu stiu cum sa le rezolv, si una pe care am rezolvat-o dar imi afiseaza un rezultat partial din rezolvare.
~~~~~~~~~~~~Probleme pe care nu le stiu. ~~~~~~~~~~~~~~~~~~
1.
Fişierul text numere.txt conţine pe prima sa linie un număr natural n (n<30000), iar pe a doua sa 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.
a) Descrieţi pe scurt un algoritm de rezolvare, eficient din punct de vedere al timpului de executare şi al spaţiului de memorie utilizat, explicând în ce constă eficienţa sa.
b) 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
2.
Pe prima linie a fişierului text BAC.IN se găsesc, separate prin câte un spaţiu, mai multe
numere naturale de cel mult 9 cifre fiecare. Scrieţi un program C/C++ care citeşte numerele
din acest fişier, elimină toate cifrele impare din fiecare dintre aceste numere şi apoi scrie în
fişierul text BAC.OUT numerele astfel obţinute, separate prin câte un spaţiu. Dacă un număr
din fişierul BAC.IN nu conţine nicio cifră pară nenulă, acesta nu va mai apărea deloc în
fişierul de ieşire. (10p.)
Exemplu: dacă fişierul BAC.IN conţine numerele 25 7 38 1030 45127 0 35 60 15,
atunci BAC.OUT va avea conţinutul: 2 8 42 60.
~~~~~~~~~~~~Problema cu rezultat partial~~~~~~~~~~~~~~~~~~
3.
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.
a) Descrieţi un algoritm de rezolvare a acestei probleme, eficient din punct de vedere al
timpului de executare şi al spaţiului de memorie utilizat, explicând în ce constă eficienţa
acestuia. (4p.)
b) Scrieţi programul C/C++ corespunzător algoritmului descris.
Si acesta este algoritmul facut de mine:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("NR1.TXT");
ifstream g("NR2.TXT");
int main()
{
int x,y;
cout<<"b)"<<endl;
while(f>>x && g>>y)
{
if(x==y)
f>>x;
g>>y;
while(x<y)
{
if(x%5==0)
cout<<x<<" ";
f>>x;
}
while(x>y)
{
if(y%5==0)
cout<<y<<" ";
g>>y;
}
}
}
Imi afiseaza doar 5 10 .. fara a-l mai afisa pe 60, de ce? ce nu este corect?