Kezdőoldal » Számítástechnika » Programozás » Feladat: be kell kérni egy...

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?

Figyelt kérdés

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



2012. szept. 19. 16:27
 1/8 anonim ***** válasza:
Enumot használj!
2012. szept. 19. 16:49
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

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.

2012. szept. 19. 16:53
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

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

2012. szept. 19. 17:04
 4/8 anonim ***** válasza:
100%
A %d azt jelenti hogy az adott változót int-nek tekintse és decimális alakba írja ki (ami egyébként bináris alakba van a memóriában tarolva), dehát akár milyen értéket vesz fel az a változó mindig decimális számjegyekként íratódik ki. Lehetne %c is ekkor valamilyen betűt vagy számjegyet vagy valamilyen kiriksz kraksz karaktert ír ki. Olyan értelemben nem lehet belerakni pl. I-t.
2012. szept. 19. 17:25
Hasznos számodra ez a válasz?
 5/8 _Jessy_ ***** válasza:

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.

2012. szept. 19. 17:33
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:

_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ó.

2012. szept. 19. 17:46
Hasznos számodra ez a válasz?
 7/8 _Jessy_ ***** válasza:

# 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.

2012. szept. 19. 22:33
Hasznos számodra ez a válasz?
 8/8 _Jessy_ ***** válasza:
nem mellesleg 4 tömb használatával egy printf(...); a szám kiírása, amihez a kérdező közelebb jár, mint gondolná :)
2012. szept. 19. 22:39
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!