Kezdőoldal » Számítástechnika » Programozás » C++! Switch-csel hogy lehet...

C++! Switch-csel hogy lehet ezt megcsinálni?

Figyelt kérdés

2-14-ig kap számokat.

A lényeg , hogy, ha 1 és 11 közötti számokat írsz be, akkor kidobja ezeket a számokat, de 11-re J betűt, 12-re Q-t, 13 K-t és 14-re A-t. A neten csak angol leírást találtam ehhez. Köszi!!



2016. ápr. 29. 18:23
 1/10 anonim ***** válasza:
24%

Tekintettel arra, hogy nem programozóként akarsz élni és egyáltalán nem is érdekel a dolog, tessék, itt van egy lehetséges (és csúnya) megoldás rá:


switch (a beolvasott szám) {

case 1: //ez lényegtelen, mert a feladat szerint 1-et soha sem kap a program

case 2:

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9:

case 10:

std::cout << a szám;

break;


case 11: //mert a leírás szerint 11-nél mind a számot, mind a betűt ki kell írni

std::cout << a szám << "\nJ";

break;


case 12:

std::cout << "Q";

break;


case 13:

std::cout << "K";

break;


case 14:

std::cout << "A";

break; //elhagyható

}


Szívesen! Én köszönöm, hogy ingyen dolgozhattam másnak a szabadidőmben.

2016. ápr. 29. 18:29
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
73%

Hát ha neked ezt leírni munkának számít, apukám... :)


Egy kicsit rendezettebb változat, mert ennyit meg lehet tenni másnak.


if (szam>=2 && szam<=14) //elhagyható, ha 100%, hogy 2-14 között kap számot.


switch (szam)

{

case 11: std::cout<<szam<<'J'; break;

case 12: std::cout<<'Q'; break;

case 13: std::cout<<'K'; break;

case 14: std::cout<<'A'; break;

default: std::cout<<szam; break;

}

2016. ápr. 29. 19:20
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
0%

#2:

A default ebben a feladatban azért nem jó, mert az minden más számra vonatkozik, nem csak az 1-11 számokra. A feladat nem ezt írta. Nincs megadva, hogy mit kell csinálnia akkor, ha ennek ellenére valamilyen más számot kap.

2016. ápr. 29. 19:59
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
46%
Hát hadd ne csináljon már mást/semmit a program, ha egyszer előtte ellenőrzöd, hogy tényleg 2 és 14 között van-e..
2016. ápr. 29. 20:23
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
73%
#3 ott az if előtte, ami range check-el, és kommentben még oda is írtam, hogy elhagyhatja, ha 100%, hogy 2-14 kap számokat.. szóval.. mi is a gond?
2016. ápr. 29. 21:09
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
0%
Semmi értelme itt a switchnek, főleg akkor ha előtte még if-et is használ valaki.
2016. ápr. 29. 21:53
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
48%
Miért ne lenne? Az if végzi a range check-et, a switch meg az elágazást. Hol ezzel a probléma? :D
2016. ápr. 29. 22:53
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

#2-es által írt kódot támogatom én is. Vagy valamely ekvivalens átalakítását.


pl. ez ekvivalens.


void myFunction(int i) {

... if(i < 2 || 14 < i) return;

... if(i == 11) { std::cout << i << 'J'; return; }

... if(i == 12) { std::cout << 'Q'; return; }

... if(i == 13) { std::cout << 'K'; return; }

... if(i == 14) { std::cout << 'A'; return; }

... std::cout << i;

}


Ez is ekvivalens. Csak break helyett return van.


void myFunction(int i) {

... if(i < 2 || 14 < i) return;

... switch(i) {

... ... case 11:

... ... ... std::cout << i << 'J';

... ... ... return;

... ... case 11:

... ... ... std::cout << 'Q';

... ... ... return;

... ... case 11:

... ... ... std::cout << 'K';

... ... ... return;

... ... case 11:

... ... ... td::cout << 'A';

... ... ... return;

... }

... std::cout << i;

}

2016. ápr. 30. 13:53
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

... ... case 11:

... ... ... std::cout << 'Q';

... ... ... return;

... ... case 11:

... ... ... std::cout << 'K';

... ... ... return;


ezeket copy-ztam, csak nem írtam át. Persze értelem szerűen az értékeknek megfelelően.

2016. ápr. 30. 13:55
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
Elágazásból/ciklusból returnt nyomni nem túlzottan elegáns, ezt tegyük hozzá.
2016. ápr. 30. 19:15
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!