Fișierul de intrare conține cel puțin 3 și cel mult 1.000.000 de numere naturale. Se cere să se afișeze în fișierul de ieșire, separate printr-un spaţiu, două numere distincte, anume cel mai mic număr par cu două cifre și cel mai mare număr par cu două cifre care NU fac parte din şir.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int v[100];
int main() {
ifstream fin("BAC.TXT");
int x, mn, mx;
while(fin >> x)
{
if(x >= 10 && x <= 98 && x % 2 == 0)
v[x]++;
}
for(int i = 10; i <= 98; i+=2)
{
if(!v[i])
{
mn = i;
break;
}
}
for(int i = 98; i >= 10; i-=2)
{
if(!v[i])
{
mx = i;
break;
}
}
if(mn != mx)
cout << mn << " " << mx;
else cout << "Nu exista doua astfel de numere.";
fin.close();
return 0;
}
Explicație:
Programul folosește un vector de frecvență pentru a contoriza numarul de aparitii ale fiecarui numar par cu doua cifre intalnit in sir.
Pentru a determina cel mai mic si cel mai mare numar par cu doua cifre care nu apar in fisier, programul parcurge vectorul "v" de la 10 la 98 pentru a gasi cel mai mic numar par care nu apare in vector (variabila "mn") si de la 98 la 10 pentru a gasi cel mai mare numar par care nu apare in vector (variabila "mx").