C++ Zamiana liczb arabskich z przedziału od 0 do 3999 na liczby rzymskie
Program zamienia liczby arabskie z przedziału od 0 do 3999 na liczby rzymskie
Treść zadania:
Napisać program zamieniający liczby arabskie z przedziału od 0 do 3999 na liczby rzymskie. Użyć zainicjowanej tablicy struktur struct RZYM {char *s; int w; };, gdzie s wskazuje na tekst (np. "CM"), a w zawiera wartość z tym tekstem związaną (np. 900). Do konwersji napisać funkcję, która otrzyma w parametrach liczbę, a w wyniku zwróci wskazanie na tekst postaci rzymskiej. Zapętlić program tak długo, jak długo podawana do konwersji liczba mieści się w zadanym przedziale.
Listing
#include <stdio.h>
#include <string.h>
struct Rzym_t
{
char *s;
int w;
};
static const Rzym_t Rzym[]=
{
{"M", 1000},
{"CM", 900},
{"D", 500},
{"CD", 400},
{"C", 100},
{"XC", 90},
{"L", 50},
{"XL", 40},
{"X", 10},
{"IX", 9},
{"V", 5},
{"IV", 4},
{"I", 1},
};
const char *dectorom( int liczba )
{
int i;
static char Rliczba[20];
Rliczba[0] = '\0';
for (i=0; liczba && i<sizeof(Rzym)/sizeof(Rzym[0]); i++)
{
while ( Rzym[i].w <= liczba )
{
strcat( Rliczba, Rzym[i].s );
liczba -= Rzym[i].w;
}
}
return Rliczba;
}
int main()
{
int liczba;
printf("\n");
printf("1539\n");
printf("grupa C\n\n");
printf("\tProgram przeksztalca liczby arabskie na rzymskie.\n\n");
for(;;)
{
printf("Podaj liczbe arabska: ");
scanf("%d", &liczba);
if(liczba<1 || liczba>3999)
return 0;
printf("\nLiczba Rzymska: %s\n\n", dectorom(liczba));
}
scanf("%d", &liczba);
}
Dodano przez: igor
Ranga: Administrator serwisu Punktów: 0
Ranga: Administrator serwisu Punktów: 0
Komentarze użytkowników
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno