Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (111)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (50)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (86)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (40)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (14)
Programare vizuală în C# (19)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Subiect-admitere-2014-iulie-informatica - Subiectul I - b)

//VARIANTA 1 - cu parcurgerea cifrelor de la 0 la 9
int cifra(int n, int X[])
{
    int cmax,apmax=0;//cifra ceruta si nr. max. de numere in care apare
    for(int c=0;c<=9;c++) //pentru fiecare cifra
    {
        int k=0;//contor pentru numarul de numere in care apare
        for(int i=1;i<=n;i++)//parcurg vectorul
            {
                int y=X[i];//copie a lui X[i]
                while(y>0)//descompun pe y in cifre
                {
                    if(y%10==c)
                    {
                        k++;//a aparut
                        y=0;//ca sa nu numere decat o data pt fiecare numar
                    }
                    y=y/10;
                }
            }
        if(k>apmax)//cifra apare de mai multe ori
        {
            apmax=k;//retin numarul de aparitii
            cmax=c;//retin cifra
        }
    }
    return cmax;//returnez cifra
}

//VARIANTA 2 - cu vectori de frecventa si caracteristic
int cifravf(int n, int X[])//cu vectori de frecventa si caracteristic
{
    int cmax,apmax=0;//cifra ceruta si nr. max. de numere in care apare
    int F[10]={0};//frecventa cifrelor
    for(int i=1;i<=n;i++)//parcurg vectorul X
        {
            int C[10]={0};//vector caracteristic 1 apare, 0 nu
            int y=X[i];//copie a lui X[i]
            while(y>0)//descompun pe y in cifre
            {
                C[y%10]=1;//retin 1 la cele care apar
                y=y/10;
            }
            for(int c=0;c<=9;c++)
                F[c]=F[c]+C[c];//adun 1 corespunzator cifrelor care au 1 in C
        }
     for(int c=0;c<=9;c++)//parcurg cifrele
        if(F[c]>apmax)//cifra apare de mai multe ori
        {
            apmax=F[c];//retin numarul de aparitii
            cmax=c;//retin cifra
        }
    return cmax;//returnez cifra
}

//VARIANTA 3 -cu parcurgerea cifrelor de la 0 la 9 si functie de verificare a aparitiei

int apare(int n, int c)//1 daca cifra c apare in n, 0 altfel
{
    while(n>0)//descompun numarul in cifre
    {
        if(n%10==c) return 1;//am gasit cifra
        n=n/10;
    }
    return 0;//cifra nu apare
}

int cifraf(int n, int X[])
{
    int cmax,apmax=0;//cifra ceruta si nr. max. de numere in care apare
    for(int c=0;c<=9;c++) //pentru fiecare cifra
    {
        int k=0;//contor pentru numarul de numere in care apare
        for(int i=1;i<=n;i++)//parcurg vectorul
            if(apare(X[i],c)) k++;//daca apare maresc contorul
        if(k>apmax)//cifra apare de mai multe ori
        {
            apmax=k;//retin numarul de aparitii
            cmax=c;//retin cifra
        }
    }
    return cmax;//returnez cifra
}


25 apr 2024
Site-ul conține 884 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian