👤

Fisierul text numere.in contine pe prima linie cel mult 1 000 000 de numere naturale cu cel mult 9 cifre fiecare, in ordine crescatoare. Sa se scrie un program care sa afiseze pe ecran pe aceeasi linie, cu spatiu intre ele, valorile distincte din fisier.

Răspuns :

#include <iostream>

#include <fstream>

using namespace std;

int main() {

   int curent, ante = -1, nr_ap = 2;

   ifstream fin("numere.in");

   while (fin) {

       fin >> curent;

       if (curent != ante) {

           if(nr_ap==1)

               cout << ante << " ";

           ante = curent;

           nr_ap = 1;

       }

       else nr_ap++;

   }

}

► Explicatie :

Deoarece numerele sunt in ordine crescatoare, pentru a ne asigura ca un numar nu apare de doua ori e necesar sa il comparam doar cu elementul anterior citit. Daca un numar apare de mai multe ori in sir aparitiile vor fi consecutive.