Informatică, întrebare adresată de malvyy, 9 ani în urmă

Rezolvarea problemei va rog mult!!!!: se considera fisierul BAC.TXT ce contine cel putin un milion de numere naturale separate prin spatii fiecare numar avand cate noua cifre.scrie un program c++ care citeste toate numerele din fisierul BAC.TXT si determina folosind un algoritm din punct de vedere timpului de executare ,cele mai mari doua numere de trei cifre care nu se afla in fisier.Cele doua numere vor fi afisate pe ecran in ordine descrescatoare,cu un spatiu intre ele. Daca nu pot fi determinate doua astfel de numere ,programul va afisa pe ecran valoarea 0

Răspunsuri la întrebare

Răspuns de blindseeker90
6
#include <iostream>
#include <fstream>
using namespace std;
//initializam vector cu 3 cifre
//initializat global, toate elementele au valaorea 0 initial
int trei_cifre[1000];

int main(){
int n,i,primul_numar=0;
ifstream fib("bac.txt");
//citim vectorul de elemente din bac
while(fib>>n){
//verificam daca numarul este de 3 cifre
if(n/1000==0&&n/100>0){
//daca acest numar este de 3 cifre, apare o data in sir
//pe pozitia respectiva in vector, marim valoarea de repetitie cu 1
trei_cifre[n]++;
}
}
//incepem sa trecem de la 999 in jos si ne uitam sa vedem de cate ori apare numarul
//daca numarul apare de 0 ori, nu apare deloc, deci il afisam pe ecran
//pana cand ajungem la 2 numere consecutive
for(i=999;i>=100;i--){
//daca primul numar deja a fost afisat si actualul nu apare
//afiseaza-l si iesi din recursivitate, deja avem cele 2 numere
if(primul_numar==1&&trei_cifre[i]==0){
cout<<i;
break;
}
else if(trei_cifre[i]==0){
cout<<i<<" ";
//acum afisam primul numar
primul_numar=1;
}
}
return 0;
}
Alte întrebări interesante