Kezdőoldal » Számítástechnika » Programozás » Miért az az eredménye ennek a...

Miért az az eredménye ennek a 3 C++ programkódnak, ami? Az ASCI táblázatot értem, csak azt nem értem, hogyan és miért futnak úgy le a ciklusok?

Figyelt kérdés

Szia! Holnapután vizsgázom, lenne még egy-két feladat, amit nem igazán értek! Ha van egy kis felesleges időd, tudnál nekem segíteni? Mind egy kaptafára mennek, és addig megvan, h itt az ASCI kódokat kell figyelembe venni. A logikáját nem értem, elveszek a ciklusokban. Nem nyaggatlak, ha nem érsz rá, hát nem! Előre is köszönöm.


Üdv. hotigeftas


1.

int main(){

int i=0, j=1, k=6;

while(i*i<k)

printf("%c",'a'+i++);

for(j=1; j<i*i/3; j++){

printf("%c",'A'+j);

k++;

}

i*=-2;

printf("\n"); system("PAUSE"); return 0;

}

/*Megoldókulcsok: abcBC*/


2.int main(){

int i=5, j=5, a=1;

for(i=3; i>a; i--)

printf("%c",'a'+i);

j=i;

do{

printf("%c",'A'+j);

j-=2; i++; a++;

}while(j>=0);

printf("\n"); return 0;

}

/*Megoldókulcsok: dcB*/


3.

int main(){

int i = -2, j=1;

while(i<2){

j=i;

do{

printf("%c", 'C'+j);

if(j<0) j++;

else j--;

}while(j);

i++;

};

printf("\n"); return 0;

}

/*Megoldókulcsok: ABBCBD*/



2015. jún. 11. 11:23
 1/5 Tengor ***** válasza:
100%
Próbáld meg papíron levezetni. Írd fel az ASCII táblát, rajzolj egy táblázatot, írd fel az egyes változók értékeit és számold ki, hogy melyik mire változik és mit csinálnak a ciklusok.
2015. jún. 11. 11:30
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
Ezeknek azon kívül, hogy értelmetlen, átláthatatlan, amúgy is rosszul megírt, C++ -hoz közük nem lévő kódok, van valami értelmük?
2015. jún. 11. 11:40
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

Kösz a tippet! Megpróbálom.

A feladatokat nem én szültem.. Ezek minta példák egy vizsgához.

2015. jún. 11. 12:03
 4/5 anonim ***** válasza:

Az 1.-ben ez így végtelen ciklus:

for(j=1; j<i*i/3; j++){

printf("%c",'A'+j);

k++;

}


A j-t kéne növelni. Valószínűleg elírtad csak.

Ha a j-t növel, akkor jó az eredmény.


Ezeknél a feladatoknál egyrészt a ciklusokat kell jól ismerni. Másrészt azt kell ismerni, hogy a C++ hogyan számol a karakterekkel és számokkal vegyesen.


Röviden ez utóbbi úgy történik, hogy a számot "átváltja" az ASCII kódjára (valójában bitek szintjén eddig is az volt). Azzal és a másik számmal (int) elvégzi az összeadást. Végül az eredményt visszaváltja karakterré az ASCII tábla segítségével (itt szintén nem történik a valóságban kb. semmi). Azt most kapásból nem tudom, mi történik, ha 255-nél nagyobb lesz az eredmény (ugye legfeljebb ennyi fér 1 bájtba, azaz a char típusba). Szerintem ebben az esetben túlcsordul az eredmény, de ki lehet próbálni...


A harmadik dolog, ami kell(het) az maga az ASCII kódtábla. Én őszintén megmondom, hogy sosem jegyeztem meg pl. a 'a' vagy a 'A' ASCII kódját (leginkább lustaságból). De azt tudom jól, hogy az angol ábécé betűi egymásután benne vannak a-tól z-ig.


Ezért tudom, hogy:

'a' + 0 = 'a'

'a' + 1 = 'b'

'a' + 2 = 'c'

...


Illetve:

'A' + 0 = 'A'

'A' + 1 = 'B'

...

2015. jún. 11. 13:36
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Na így sokkal érthetőbb! Köszönöm!
2015. jún. 11. 16:37

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!