Hogyan kellene ezt "normálisan" programozni?
Í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?
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;
}
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.
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;
...
}
}
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]);
É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).
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!