Switch utasítás Cben?
Az alábbi programban az a problémám,
hogy ha beírok pl. 2542, akkor azt írja ki, hogy two thousand fourty two, szóval a Five hundred-et kihadja.
Ez miért van?
Program lényege,hogy a bevitt számot, angolol írja ki.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int szam,a,b,c,d,x;
int seged_a,seged_b,seged_x;
printf("Ird be a szamot: "); scanf("%i",&szam);
a=szam / 10; // EGESZ SZAM
b=szam % 10; // MARADEK tizes szamok
c=szam / 100; //egesz szam szazasok
d=szam % 100; // maradek szam
seged_a=d / 10;
seged_b=d % 10;
x=szam / 1000;
seged_x=d / 10;
switch(x)
{
case 1: printf("One thousand "); break;
case 2: printf("Two thousand "); break;
case 3: printf("Three thousand "); break;
case 4: printf("Four thousand "); break;
case 5: printf("Five thousand "); break;
case 6: printf("Six thousand "); break;
case 7: printf("Seven thousand "); break;
case 8: printf("Eight thousand "); break;
case 9: printf("Nine thousand "); break;
}
switch(c)
{
case 1: printf("One hundred ");break;
case 2: printf("Two hundred ");break;
case 3: printf("Three hundred ");break;
case 4: printf("Four hundred ");break;
case 5: printf("Five hundred ");break;
case 6: printf("Six hundred ");break;
case 7: printf("Seven hundred ");break;
case 8: printf("Eight hundred ");break;
case 9: printf("Nine hundred ");break;
}
if((a==1)&&(b==0))
{
printf("ten ");
}
else if((a==2)&&(b==0))
{
printf("twenty ");
}
else
{
switch(a, seged_a)
{
case 1: printf("ten ");break;
case 2: printf("twenty ");break;
case 3: printf("thirty ");break;
case 4: printf("fourty ");break;
case 5: printf("fifty ");break;
case 6: printf("sixty ");break;
case 7: printf("seventy ");break;
case 8: printf("eighty ");break;
case 9: printf("ninety ");break;
}
switch(a, seged_b)
{
case 1: printf("one ");break;
case 2: printf("two ");break;
case 3: printf("three ");break;
case 4: printf("four ");break;
case 5: printf("five ");break;
case 6: printf("six ");break;
case 7: printf("seven ");break;
case 8: printf("eight ");break;
case 9: printf("nine ");break;
}
}
return 0;
}
Ez a baj:
c=szam / 100;
Tehát szam=2542 esetén c=25.
Gondold át szerintem jobban az egészet...
Tervezd meg ügyesen...
Ha ezt:
a=szam / 10; // EGESZ SZAM
b=szam % 10; // MARADEK tizes szamok
c=szam / 100; //egesz szam szazasok
d=szam % 100; // maradek szam
seged_a=d / 10;
seged_b=d % 10;
x=szam / 1000;
seged_x=d / 10;
kicseréled erre:
x = szam / 1000;
szam = szam % 1000;
c = szam / 100;
szam = szam % 100;
a = szam / 10;
szam = szam % 10;
b = szam;
akkor 9999 elvileg működni fog.
Ha c= szam % 1000 ,
akkor butaságot ír ki végeredménynek
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!