Feladat: be kell kérni egy számot 1 és 1000 között és azt át kell váltatni római számmá. Pl beírtam 5-öt és kiirka hogy V Tehát hogy csináljam?
Odáig eljutottam h bekértem a számot meg megszámoltam a számjegyet tehát:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
main()
{
int i,szam,szamj1,szamj2,szamj3;
scanf("%d",&szam);
printf("A szam: %d",szam);
szamj3=szam/100;
szamj2=(szam-szamj3*100)/10;
szamj1=((szam-szamj3*100)-szamj2*10);
}
printf("szazas: %d tizes: %d eggyes: %d\n",szamj3,szamj2,szamj1);
system("pause");
}
de nem tudom hogy mondjam meg neki a római számokat
A print-f előtt van egy felesleges }. Egyébként eddig jól gondoltad hogy 10-es helyi értékenként szétbontod a számot. Bár én külön saját függvényekkel oldanám meg, de kezdők sokszor nem látják hogy miért jobb úgy, de részletkérdés most, ezek nélkül is meglehet oldani.
Legegyszerűbb switch-el vagy if-ekkel helyi értékenként leprogramozni.
Tulajdonképpen 10-es helyi értékenként kell átírni a számot római számokká.
A te kódodat továbbgondolva:
if (szamj3==1)
printf("C");
if (szamj3==2)
printf("CC");
... bla bla bla
Meg persze belevenni az 1000-et is, bár nem egyértelmű a feladatkiírás hogy az 1000 beletartozik e, de baj nem lehet ha beleveszed.
okés köszönöm
de én még ugy is kitaláltam hogy mi lenne ha pl
if (szamj3==1)
akkor a szamj3 ba töltse bele a I-et mert a szamj3-at már kiiattam csak azt akarom hogy akkor a római értékét töltse bele a szamj-ba remélem érted és hogy úgy meg lehet e csinálni
ez azért nem olyan egyszerű! Pl. a 400 az nem CCCC, hanem CD, ezzel is számolj. A számjegyeket pedig tárolhatod tömbben. Pazarlás, de simán helyiértékkel tudod indexelni, és ezerig még belefér a dologba a pazarlás is.
Persze ha ügyasen, csak annyi helyet foglalsz, ami kell, akkor nem lesz gond, ha tovább akarod fejleszteni a dolgot milliós nagyságrendbe.
_Jessy_ ki állította hogy a 400 az CCCC ?
Én azt állítottam hogy decimális számjegyenként ha átváltja akkor helyes lesz a feladat kiírásának megfelelően, akkor olvasd el még 1x.
Lehetne tömbökkel meg bevezethetnék általános szabályt ami minden helyi értéken igaz (így elég kisebb tömbméret) , megadhatnám a helyi értékenkénti szimbólumok rendezett halmazát, ami dinamikusan bővíthető tetszőleges nagyságrendig (persze nem int-et használnék ekkor)... de csak egy legegyszerűbb lehetséges megoldást írtam le, házi feladatnak bőven jó.
# 6
A válaszom nem neked szólt, és közel sem azért írtam, hogy beléd kössek. Csak a kérdezőnek próbáltam ötletet adni. És csak felhívtam a figyelmét, hogy ezekre a dolgokra figyeljen oda.
Ha kóstolgatni akarnálak, akkor azt mondanám, hogy a 200 sor if(...){} helyett illik switch(...){} szerkezetet használni.
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!