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

Fisierul BAC.TXT contine un sir de cel mult un milion de numere naturale, despărtite prin
câte un spatiu, fiecare număr având cel putin două cifre si cel mult 9 cifre.
Se citesc numerele din fisier si se cere ca, utilizând un algoritm eficient din punct de
vedere al timpului de executare, să se determine si să se afiseze pe ecran numărul maxim
de termeni ai sirului care au aceeasi cifră a zecilor.
Exemplu: dacă fisierul BAC.TXT contine numerele
12 36 265 18 139 19 32 34 112 14 68
pe ecran se afisează 5 (pentru că sunt 5 termeni cu cifra zecilor 1).
a) Descrieti în limbaj natural algoritmul utilizat, justificând eficienta acestuia. (4p.)
b) Scrieti programul C/C++ corespunzător algoritmului descris.

Răspunsuri la întrebare

Răspuns de ardyarde
2
a)
Am creat un vector de numarare format din 10 zerouri, cate unul pentru fiecare cifra a zecilor posibila dupa care am citit din fisier numerele unul cate unul, in acelasi timp determinand cifra zecilor si incrementant numarul de aparitii specifice acelei cifre din vectorul de numarare. La final am determinat valoarea maxima din vectorul de numarare, afisand-o.

b)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    int n,i,maxim=0;
    int v[10];
    for(i=0;i<11;i++)
        v[i]=0;
    ifstream fisier("BAC.TXT");
    while(fisier>>n)
        v[n%100/10]++;
    for(i=0;i<10;i++)
        if(v[i]>maxim)
            maxim=v[i];
    cout<<maxim;
}

Alte întrebări interesante