//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
}
|