Buna!
Din programul asta:
#include
#define INF 2147000000
using namespace std;
int w[10],n,x,i,j,cif,p,minn=INF;
bool ok;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
while(x)
{
cif=x%10;
x=x/10;
w[cif]=w[cif]+1;
}
}
do
{
ok=true;
minn=INF;
for(i=0;i<=9;i++)
if((w[i]
w[p]=INF;
if(!ok) cout<
} while(!ok);return 0;
}
imi poate explica cineva ce face :
do
{
ok=true;
minn=INF;
for(i=0;i<=9;i++)
if((w[i] w[p]=INF;
if(!ok) cout< } while(!ok);
Multumesc!
{
ok=true;
minn=INF;
for (i=1; i<=9;i++)
if ((vf[i] vf[p]=INF;
if (!ok)
cout < }while (!ok);
{
ok=true;
minn=INF;
for (i=1; i<=9;i++)
if ((vf[i] vf[p]=INF;
if (!ok)
cout < }while (!ok);
{
ok=true;
minn=INF;
for (i=1; i<=9;i++)
if ((vf[i] vf[p]=INF;
if (!ok)
cout << p <<" ";
}while (!ok);
ţi-am spus despre pastebin.com, să aduci link de acolo... nu ai încercat nicicând?
Răspunsuri la întrebare
Răspuns:
Cred codul a fost planificat să afişeze cifrele aparente în cele n numere introduse, în ordinea crescătoare a apariţiei lor, adică mai întâi pe cele cu frecvenţă mai mică. Sunt câteva observaţii. constanta INF a fost definită prea mare şi intră în conflict cu datele de tip int. Nu înţeleg de ce a fost luat
for (i=1; i<=cif; i++), de ce până la cif? cred din greşeală, şi de ce i de la 1 şi nu de la 0? Poate numerele introduse nu au cifre nule?
Acelaşi lucru şi aici
for (i=1; i<=9;i++)
if ((vf[i]<minn)&&(vf[i]))minn=vf[i], p=i, ok=false;
i nu e de la 0. Eu am redactat puţin codul...
Dacă codul acesta are enunţ, era bine să-l scrii...
Explicație:
#include <iostream>
#define INF 2470000
using namespace std;
int n,i,x,cif,vf[10],minn=INF,p;
int main()
{
bool ok;
cin >>n;
for (i=1; i<=n;i++)
{
cin >>x;
while (x)
{
cif =x%10;
x /=10;
vf[cif] +=1;
}
}
for (i=0; i<=9; i++)
cout <<vf[i]<<" ";
cout << "\n";
do
{
ok=true;
minn=INF;
for (i=0; i<=9;i++)
if ((vf[i]<minn)&&(vf[i]))minn=vf[i], p=i, ok=false;
vf[p]=INF;
if (!ok)
cout << p <<" ";
}while (!ok);
return 0;
}
acest if verifică dacă frecvenţa cifrei este mai mică decât minn şi frecvenţa cifrei nu e 0, atunci la acea frecvenţă se pune acea valoare INF şi se memoriţează în p acea cifră cu frecvenţă minimă şi la a doua verificare evident acea cifră nu se va cerceta că frecvenţa deacum nu e minimă. Astfel vor fi înlocuite toate frecvenţele prin INF. Când nu vom mai avea ce înlocui, se va ieşi din ciclul do ... while