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

Fişierul bac.txt conţine un şir de cel mult 106 numere naturale din intervalul [1,109],
ordonate crescător. Numerele din şir sunt separate prin câte un spaţiu.

Se cere să se afişeze pe ecran cel mai mic număr din şir care apare în fişier de un număr impar de ori.

Dacă în fişier nu se află o astfel de valoare, pe ecran se afişează mesajul nu exista.
Proiectați un algoritm eficient din punctul de vedere al spațiului de memorie utilizat şi al timpului de executare.

Exemplu: dacă fişierul bac.txt conţine numerele
5 5 8 8 8 8 20 20 20 34 54 54 65 65 65
atunci pe ecran se afişează 20.

!!Scrieţi programul C/C++ corespunzător algoritmului descris.

Răspunsuri la întrebare

Răspuns de crow9920
1

#include <fstream>

#include <iostream>

using namespace std;

int main() {

ifstream fin("bac.txt");

int ok = 0;

int x, y, aparitii = 0;

fin >> x;

aparitii = 1;

y = x;

while (fin >> x) {

if (x == y)

aparitii++;

else {

if (aparitii % 2 == 1) {

ok = 1;

cout << y << "\n";

break;

}

y = x;

aparitii = 1;

}

}

if (!ok)

cout << "nu exista\n";

return 0;

}

Alte întrebări interesante