C++ programban segítség kellene?
Írj Pascal vagy C/C++ programot, amely beolvas a billentyűzetről egy természetes számot, és kiír a képernyőre egy számjegy-előfordulási statisztikát.
int n,k,i,j,x[10];
cout<<"szam:";cin>>n;
for ( i = 0; i < n; i++)
{
while (n!=0)
{
k = n % 10;
if (k==x[i]) x[]++;
n=n/10;
}
}
for(i=1;i<=n;i++)
{ cout<<i<<".elembol :"<<x[i]<<" drb. van";}
return 0;
Akkor miért nem a Programozás rovatban teszed fel?
X[]++
Na jó, addig is megpróbálom értelmezni.
int n, k, i, j, x[10];
Először is létrehozol néhány integer változót, köztük a sehol sem használt j nevűt.
Az integer értelmezése implementációtól is függ, de általában 4 bájt. Mivel előjeles változókat használsz, az értékük -32767..32767 közé eshet. A beolvasott n szám maximum 5 számjegyének könyvelésére egy 10 elemű x tömböt hozol létre. Egy-egy számjegyből minimum 0, legföljebb 5 (a szándékod szerint vélhetőleg 10) lehet, ezt előjeles, 4 bájtos tömbelemekben tartod számon.
cout << "szam:"; cin >> n;
Beolvasod n-t, a jelek szerint ez az a szám, amelynek a jegyeit meg akarod számlálni.
for ( i = 0; i < n; i++)
Indítasz egy for-ciklust, amely addig tart, amíg a 0 kezdőértékű i el nem éri n értékét. Mivel a belső while-ciklusban n értékét nulláig csökkented, ez egyetlen lefutás után törvényszerűen bekövetkezik.
A while ciklus:
k = n % 10;
Megszerzed n utolsó számjegyét.
if (k == x[i]) x[]++;
Ha ez egyenlő az inicializálatlan x tömb i (vagyis nulladik, lásd fentebb) elemében található memóriaszeméttel, akkor valamit növelni akarsz, nem tudtam rájönni, hogy mit.
n = n / 10;
N-t osztod tízzel, így levágod az utolsó számjegyet.
A ciklus végén n értéke 0, tehát egyben a forból is kilép.
for( i=1; i<=n; i++)
Újabb for ciklust indítasz i = 1 kezdettel, amely i-t növelve addig fut, míg el nem éri az n, vagyis 0 értéket. Mivel eleve ez a helyzet, egyszer sem fog lefutni, nem ír ki semmit.
Összefoglalva: A programon még akad némi csiszolgatni való. Kíváncsian várom az újabb változatot.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!