Kezdőoldal » Számítástechnika » Programozás » Ezt hogyan kéne így megoldani?

Ezt hogyan kéne így megoldani?

Figyelt kérdés

Írj programot, mely érdemjegyeket olvas be a standard inputról, majd kiírja, hogy melyik jegyből hány darab született! A jegyek szóközzel vannak egymástól elválasztva. Nincs végjel, egészen a bemenet végéig kell olvasni.


A 3 2 3 1 5 2 3 1 5 bemenet hatására az program az alábbi összegzést írja a standard outputra:


5: 2 db

4: 0 db

3: 3 db

2: 2 db

1: 2 db

Feltételezheted, hogy a bemeneten nem érkeznek 1-nél kisebb vagy 5-nél nagyobb számok. A megoldásban tilos a switch vagy if kulcsszavak használata.


Ez lenne a feladat. Mégis hogyan oldjam meg, ha nem lehet benne if-et használni? Mert így nagyon elakadtam.



2021. okt. 4. 20:59
 1/9 anonim ***** válasza:

Milyen nyelven? Alapvetően bármely nyelven kb. az az algoritmus:

bejön a beolvasott szám legyen ez x; van egy 6 elemű tömb (egyszerűbb így) db amiben vannak az összegek.

1. ciklus: feltölti a 6 elemű tömböt 0-val pl:

for i=0 tól 5 ig {db[i]=0}

2. ciklus beolvas a bemenetről egy darab számot ameddig jön szám és


x <- beolvasott szám


majd db[x] legyen egyenlő db[x]+1-el (a beolvasott számot használod tömb indexnek)


Majd a végén a 3. ciklus kiírtja a db[x] tömb elemeit

for i=1 től 5-ig {kiirat db[i]}


Ha olyan a nyelved, hogy a tömböt inicializálja és mindig 0 lesz benne akkor az első ciklus kihagyható.

2021. okt. 4. 21:05
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
Bocs véletlenül elküldtem. Azért így írtam le mert a kérdező nem adott meg programnyelvet, és a beolvasás az STDIN-ről nyelv függő már. így általánosabb a megoldás.
2021. okt. 4. 21:07
Hasznos számodra ez a válasz?
 3/9 anonim válasza:
0%
Én a 3 operandusúval oldanám meg. :)Se if, se switch.
2021. okt. 4. 21:18
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:
Jaa igen, a nyelvet kifelejtettem, C-ben kéne ez, de talán most már valamennyire értem, hogy hogyan kéne csinálni.
2021. okt. 4. 21:25
 5/9 A kérdező kommentje:

[link]

Valahogy így kéne kinéznie? Már nagyon fáradt vagyok ma, de még meg kéne ezt csinálnom, úgyhogy bocsi, ha már nem forog rendesen az agyam.

2021. okt. 4. 21:37
 6/9 anonim ***** válasza:

Nem egészen... De az irány jó.


7. sor: nem kell.

8. sor: jegy[x]++; (és így C-sebb, de így is működik)

10. sor: vagy for, vagy az 5 db. printf; a for-os megoldás szebb, de ha kíirod akkor nem kell a for.

Tehát a./ változat:

10. sor (for i=1; i<=5; i++) { Megj.: fontos itt nem i=0-tól hanem 1-től

11. sor printf ("%d: %d\n", i, jegy[i]);

12. sor }

13. sortól 16. sorig törlendő


b. változat:

10. és 16. sor törlendő

és a 11. sortól printf ("5: %d\n",jegy[5]);

printf (4: %d\n",jegy[4]; és így tovább

2021. okt. 4. 21:47
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
Így tényleg működik már, köszönöm. Csak az a baj, hogy nálam a rendszer úgy akarná, hogy az ötösök számát írja a tetejére, itt meg azokat a végére rakja. Ezt pontosan hogy kéne megoldanom?
2021. okt. 4. 21:54
 8/9 anonim ***** válasza:
Bocs igen a for-t meg kell fordítani for (i=5; i>=1; i--) és akkor jó lesz.
2021. okt. 4. 22:04
Hasznos számodra ez a válasz?
 9/9 anonim válasza:
A 3 operandusúval mi a gáz?
2021. okt. 5. 22:59
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!