Kezdőoldal » Számítástechnika » Programozás » Hogyan kellene ezt "normálisan...

Hogyan kellene ezt "normálisan" programozni?

Figyelt kérdés

Írjon programot, amely beolvassa egy hónap sorszámát, majd kiírja a hónap nevét és azt, hogy melyik évszakban van. (Hibás adatmegadás esetén adjon hibajelzést!)


ez a feladat, meg is csináltam csak szerintem nem optimálisan

case 12: printf("dec\n"); case 1: printf("jan\n"); case 2: printf("feb\n");

if(honap==12 || honap==1 || honap==2) printf("teli honap\n"); break;

így oldottam meg, szebben ezt hogyan lehetne?


2014. okt. 12. 14:28
1 2
 1/13 anonim ***** válasza:
0%

switch (honap) {

case 1:

printf("jan\n");

printf("teli honap\n");

break;

...

case 7:

printf("jul\n");

printf("nyari honap\n");

break;

...

default:

printf("hibas adat\n");

break;

}

2014. okt. 12. 14:31
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
mindegyik hónap után írjam ki az évszakot is ? azt hittem hogy van vmi normálisabb módszer is
2014. okt. 12. 14:34
 3/13 anonim ***** válasza:

Ne privátba!


"mindegyik hónap után írjam ki az évszakot is ?"

Igen, én így csinálnám. Így nem kell újból megvizsgálni a hónap sorszámát.

2014. okt. 12. 14:35
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:
Milyen normálisabb módszerre gondoltál?
2014. okt. 12. 14:36
Hasznos számodra ez a válasz?
 5/13 A kérdező kommentje:
és ha újból meg akarom vizsgálni a hónap sorszámát akkor hogyan kell?
2014. okt. 12. 14:38
 6/13 anonim válasza:
Én külön vizsgálnám meg. Akkor spórolsz a program méretén és a memóriahasználaton is. Cserébe többet dolgozik a processzor. Másik esetben fordítva.
2014. okt. 12. 14:38
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:
és külön hogyan?
2014. okt. 12. 14:40
 8/13 anonim ***** válasza:
10%

A kódismétlés megoldható dupla case-sel, és egy előltesztelő if-fel:


if (ho > 12 || ho < 1) printf("hiba");

else {

switch (ho){

case 1: printf("jan\n"); break;

case 2: printf("dec\n"); break;

...

}


switch (ho) {

case 12:

case 1:

case 2:

printf("teli \n");

break;


case 3:

case 4:

case 5:

printf("tavaszi \n");

break;

...

}

}

2014. okt. 12. 14:46
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:
88%

char* ho = {"december", "januar", "februar", ... };

char* evszak = {"tel", "tavasz", "nyar", "osz" };


int x;

scanf("%d", &x);


printf("%s", ho[x%12]);

printf("%s", evszak[(x%12)/3]);

2014. okt. 12. 15:17
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:
80%

Én így csinálnám:

- lenne egy szép tömböm hónapnevekkel

- beolvasáskor ellenőrzöm a beírt számot, 1..12 tartományban van-e

- ha igen, kiíratom a tömb megfelelő elemét [h+1]

- utána egy 4 ágú elágazással kiköpném az évszakot


Téli hónapok speciel: (h==12 || h <= 2), vagy még egyszerűbben: (h % 12 <= 2). A többi évszaknál meg intervallum vizsgálat (a <= h && h <= b).

2014. okt. 12. 15:23
Hasznos számodra ez a válasz?
1 2

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!