C#, ezt hogyan?
Gondolom for ciklussal, de az ilyen fajta feladatok egyáltalán nem mennek.
Írassuk ki az 1 – 9 számokat a következő formákban:
9 9 9 9 9 9 9 9 9
8 8 8 8 8 8 8 8
7 7 7 7 7 7 7
6 6 6 6 6 6
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9
32. Jelenjen meg a képernyőn a következő nyomtatási kép:
V A K Á C I Ó
A K Á C I Ó
K Á C I Ó
Á C I Ó
C I Ó
I Ó
Ó
Ó
I Ó
C I Ó
Á C I Ó
K Á C I Ó
A K Á C I Ó
V A K Á C I Ó
Mindegyikhez két ciklus kell, az egyiket a másikba ágyazva.
A másodiknál pedig tömbként kell kezelned egy stringet.
Példa:
for (int i = 0; i < 9; i++){
for (int j = 0; j < 9; j++){
//Lényegi munka
}
}
Ne hallgass a #2 re. Hülyeségeket beszél. :D
Hajlandó vagyok neked segíteni úgy hogy megértsd a lényeget. De nem úgy hogy megadom a megoldást. Remélem belátod, hogy a te érdekeidet próbálom szolgálni.
Vess egy pillantást a legfelső háromszögre:
9 9 9 9 9 9 9 9 9
8 8 8 8 8 8 8 8
7 7 7 7 7 7 7
6 6 6 6 6 6
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
Mit veszel észre?
- Kiírsz 9 db 9-est 8db 8-ast stb... egészen 1 db egyesig.
- A konzolra balról jobbra felé soronként tudsz írni.
Akkor kellene egy ciklus ami 9 től számol lefelé. Minden sorban ennek a ciklusnak a ciklusváltozóját fogod kiirni. De inkább számoljunk size-tól (size = 9).
for(int i=size; i > 0; i--){ //külső ciklus
...//már van egy ciklusunk ami size -> 1 (9->1) számol.
...//Ha itt kiírnád az i értékét akkor egy csökkenő számsort kapnál
...//Ez a csökkenő számsor fogja megmondani, hogy az adott sorban milyen számot kell kiírnod
}
Fejlesszük tovább a fenti ciklust úgy, hogy belepakolunk egy belső ciklust. Ez a belső ciklus fogja kiírni a sorokat.
Hány darab számot kell kiírni egy adott sorban? Pont annyit amennyi a külső ciklusváltozó értéke (az első sorban 9-et aztán 8-at stb.).
És milyen számot kell kiírni egy adott sorban? A külső ciklusváltozó (szám) karakterét.
for(int i=size; i > 0; i--){ //külső ciklus size -> 0 számol
...for(int j = 0; j < i; j++) // mindig i iteráció fut le!
......print(i) // az i értékét fogja kiírni i szer. Fontos, hogy itt nem teszel sortörést!
...//Ez viszont már a külső ciklus. Ide kell egy sortörés.
...print("\n");
}
És meg is van a felső háromszög.
Az alsóval hasonlóan kell játszanod, csak ott felfelé számolsz és még néhány apróság.
A 2. feladat is nagyon hasonló de elmagyarázom azt is.
Első lépésként elkezded nézegetni ezt a háromszöget.
Észreveszed, hogy itt már nem ugyan azt a karaktert kel egy sorba írni.
Aztán azt is észre veszed hogy fokozatosan mindig lehagysz egy karaktert a string elejéről.
string str = "VAKÁCIÓ";
size = str.Length;
A külső ciklus size -> 1 ig számol (hogy minden sorban hány karaktert írunk ki (amit majd a belső ciklusnak kell odaadnunk)).
A belő ciklus már izgalmasabb mivel az első sorban 0-tól, a második sorban már az első elemtől (így a 'V' betű nem lesz benne), a harmadik sorban meg a 2-től ("VA" nem lesz benne) stb kezdünk el kiírni.
Viszont az utolsó elemet ('Ó')már minden sorban kiírjuk szóval a belső ciklus biztos hogy size-1 ig megy (size-al már túlindexelnénk a tömbön).
for(int i = size; i > 0; i--){ //azért i=size mert első sorban size aztán size-1, size-2 stb karaktert írunk ki
...for(int j = size-i; j < size; j++) //azért j= size-i mert az első sorban 0. elemtől írunk aztán az 1. től stb.
......print(str[j]);
print("\n");
}
És meg is vagy.
Elírtam, néhány dolgot.
Az első feladatban ezt a megjegyzést akartam írni:
//külső ciklus size -> 1 számol
A másodikban pedig erre a 3szög re gondoltam:
VAKÁCIÓ
AKÁCIÓ
KÁCIÓ
ÁCIÓ
CIÓ
IÓ
Ó
További 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!