Informatică, întrebare adresată de codleangeorgianastef, 8 ani în urmă

din fisierul date.in se citesc cel mult 500000 numere naturale mai mici decât 1000000000. Determinaţi cele mai mari două numere cu trei cifre care nu apar printre numerele date. Daca nu se pot gasi astfel de numere se va afisa mesajul "NU EXISTA" ​

Răspunsuri la întrebare

Răspuns de andrei750238
3

#include <iostream>

#include <fstream>

using namespace std;

int main() {

bool vc[900] = {0}; //Vector caracteristic cu cele 900 de numere de trei cifre

unsigned curent;

ifstream filein("datein.txt");

while (filein >> curent) {

 //Daca numarul citit are trei cifre marcheaza valaorea corespunzatoare din vectorul caracteristic ca 1

 if (curent >= 100 && curent <= 999)

  vc[curent - 100] = 1;

}

//Afiseaza cele mai mari doua numere care nu au aparut in lista (vc[x]!=0)

int nr_gasite = 0;

int valori_nr_maxime[2] = { 0 };

curent = 899;

while (curent >= 0 && nr_gasite < 2) {

 if (vc[curent] == 0) {

  valori_nr_maxime[nr_gasite++] = curent + 100;

 }

 curent--;

}

if (nr_gasite >= 2) {

 cout << valori_nr_maxime[0] << " " << valori_nr_maxime[1];

}

else cout << "NU EXISTA";

}

Anexe:
Alte întrebări interesante