Kezdőoldal » Számítástechnika » Programozás » C++ programban segítség kellene?

C++ programban segítség kellene?

Figyelt kérdés

Í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;



2017. júl. 16. 12:19
 1/6 tabaki ***** válasza:

Akkor miért nem a Programozás rovatban teszed fel?

X[]++

2017. júl. 16. 13:51
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
Bocsánat a rossz témakörért!
2017. júl. 16. 14:09
 3/6 tabaki ***** válasza:
Ez így nem egy C++ program, legföljebb az általad fontosnak ítélt része, gondolom, ennek kéne a main()-ben lennie. Ettől függetlenül elmesélhetnéd magyarul sorról sorra, hogy szerinted mi mit csinál, mert a számomra legalábbis zavaros.
2017. júl. 20. 03:32
Hasznos számodra ez a válasz?
 4/6 tabaki ***** válasza:

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.

2017. júl. 20. 12:42
Hasznos számodra ez a válasz?
 5/6 tabaki ***** válasza:
Aha, tisztul a kép, x[10] a tíz lehetséges számjegyet tartaná nyilván, akkor a megjegyzésemnek ez a része sztornó.
2017. júl. 20. 12:53
Hasznos számodra ez a válasz?
 6/6 tabaki ***** válasza:
Na jó, ilyenkor nem tudom, mi van. Én ugyan nem vagyok programozó, de mivel már több napja megírtam a programot pascalban és C++-ban is, két-két változatban, akár segíteni is tudnék, de így nem valami gördülékeny a párbeszéd.
2017. júl. 23. 21:02
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!