Kezdőoldal » Számítástechnika » Programozás » Miért nem fogadja el ez a...

Miért nem fogadja el ez a program az I char változót igaznak? Miért le a for ciklus végén?

Figyelt kérdés

Itt a kód:

for(int i=0; i<negyzet; i++){

cout<<"\n\n"<<i+1<<". negyzet"<<endl;

cout<<"Baloldalt van szabad ut?(I/N)"<<endl;

cin>>valasz;

switch(valasz){

case 1:valasz='I';

b[i]=1;

break;

case 2:valasz='N';

b[i]=0;

break;

default:

cout<<"Ez a valasz nem-nek szamit!"<<endl;

b[i]=0;

}


cout<<"\nJobboldalt van szabad ut?(I/N)"<<endl;

cin>>valasz;

switch(valasz){

case 1:valasz='I';

j[i]=1;

break;

case 2:valasz='N';

j[i]=0;

break;

default:

cout<<"Ez a valasz nem-nek szamit!"<<endl;

j[i]=0;

}


cout<<"\nElol van szabad ut?(I/N)"<<endl;

cin>>valasz;

switch(valasz){

case 1:valasz='I';

e[i]=1;

break;

case 2:valasz='N';

e[i]=0;

break;

default:

cout<<"Ez a valasz nem-nek szamit!"<<endl;

e[i]=0;

}


cout<<"\nHatul van szabad ut?(I/N)"<<endl;

cin>>valasz;

switch(valasz){

case 1:valasz='I';

h[i]=1;

break;

case 2:valasz='N';

h[i]=0;

break;

default:

cout<<"Ez a valasz nem-nek szamit!"<<endl;

h[i]=0;

}

}

int pozicio, kijutas, jobb_also_sarok;

cout<<"\nAdd meg a jobb also sarok sorszamat!"<<endl;



2018. okt. 21. 12:40
 1/3 A kérdező kommentje:
Ez egy részlet a teljes kódból
2018. okt. 21. 12:42
 2/3 A kérdező kommentje:
A switch sehogy sem akar benne működni.
2018. okt. 21. 13:26
 3/3 2*Sü ***** válasza:

A switch-case szerkezetet használod rosszul.


switch (változó) {

case első_érték:

első_utasítás_blokk;

break;

case második_érték:

második_utasítás_blokk;

break;

default:

minden_más_esetben;

}


Ez kb. ezt jelenti:


if (változó == első_érték) {

első_utasítás_blokk;

} else if (változó == második_érték) {

második_utasítás_blokk;

} else {

minden_más_esetben;

}


~ ~ ~


Ennek tükrében te mi csinálsz?


switch(valasz){

case 1:valasz='I';

h[i]=1;

break;

case 2:valasz='N';

h[i]=0;

break;

default:

cout<<"Ez a valasz nem-nek szamit!"<<endl;

h[i]=0;

}


Mit jelent ez?


if (valasz==1) { // A válasz egyenlő 1-el? Nem.

valasz='I'; // Ez a valasz változó értékének 'I'-et adna, ha lefutna…

h[i]=1;

} else if (valasz==2) { // A válasz egyyenlő 2-vel? Nem.

valasz='N'; // Ez a valasz változó értékének 'N'-t adna, ha lefutna…

h[i]=0;

} else { // Ez fog lefutni, mert a valasz változó értéke nem 1 és nem 2.

cout<<"Ez a valasz nem-nek szamit!"<<endl;

h[i]=0;

}


Ezer éve nem programoztam C++-ban, de amit te akarsz, az így nézne ki:


switch(valasz) {

case 'I';

h[i]=1;

break;

case 'N':

h[i]=0;

break;

default:

cout<<"Ez a valasz nem-nek szamit!"<<endl;

h[i]=0;

}


Ami meg tömörebb és elegánsabb lenne:


if ((valasz != 'I') && (valasz != 'N')) cout<<"Ez a valasz nem-nek szamit!"<<endl;

h[i] = (valasz == 'I') ? 1 : 0;


Vagy ha nem akarsz megismerkedni a conditional/ternary operatorral, akkor:


if ((valasz != 'I') && (valasz != 'N')) cout<<"Ez a valasz nem-nek szamit!"<<endl;

if (valasz == 'I') h[i]=1; else h[i]=0;


Koncepcionális hiba: A kis „i” karaktert is nem-nek számít a programodban. :-)

tehát:

cin>>valasz;

valasz = toupper(valasz);

(Vagy átírod a feltételeket, hogy a kis „i”-t is elfogadja.)

2018. okt. 21. 13:29
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!