Tarvitsisin apua ohjelmakoodin tekemiseen C-kielellä. Ohjelman pitäisi muuntaa arabialaiset numerot roomalaisiksi.
Arbialaiset numero roomalaisiksi
apua koodiin
6515
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 6
Vanhimmat
http://www.google.fi/search?hl=fi&q=roman numerals c &btnG=Hae&meta=
kiitos paljon, johan alkoi vinkkejä löytymään!
Jonkin verran (vähän) C :lla ohjelmoineena luulin em. linkeistä löytyvän apua, mutta eipä se C niin vain käännykkään perus C-kieleen.
Löytyiskö lisää vinkkejä, joilla arabialaiset numerot kääntyis roomalaisiksi AnsiC-kielellä?
Siis tässä koodia, joka menee kääntäjästä läpi, mutta ei toimi. Mikähän tässä määttää? Ohjelma kysyy käyttäjältä numeron, ei hyväksy kirjainta ja lopettaa '0', muu ei sitten otakkaan vörkkiäkseen.
koodia:
#include
#include
struct conversion
{
int arabic;
char *roman;
};
static struct conversion conv[] = {
{ 1000, "M", },
{ 900, "CM", },
{ 500, "D", },
{ 400, "CD", },
{ 100, "C", },
{ 90, "XC", },
{ 50, "L", },
{ 40, "XL", },
{ 10, "X", },
{ 9, "IX", },
{ 5, "V", },
{ 4, "IV", },
{ 1, "I", },
};
#define TABSIZ(tab) sizeof tab / sizeof tab[0]
static int in_range ( int val, int low, int high )
{
return val >= low && high >= val;
}
int main ( void )
{
int val;
for ( ; ; ) {
size_t i;
printf ( "Enter an number 1-1000 (0 to quit): " );
if ( scanf ( " %d", &val ) != 1 || !in_range ( val, 0, 1000 ) ) {
fprintf ( stderr, "Invalid input\n" );
exit ( EXIT_FAILURE );
}
else if ( val == 0 )
break;
for ( i = 0; i < TABSIZ ( conv ); i++ ) {
while ( val >= conv[i].arabic ) {
val -= conv[i].arabic;
printf ( "%s", conv[i].roman );
}
}
}
return EXIT_SUCCESS;
}
>...ei hyväksy kirjainta
Eipä tietenkään kun tämä kysyy arabialaista numeroa joka muunnetaan roomalaiseksi. Näin:
Enter an number 1-1000 (0 to quit): 5
V
Enter an number 1-1000 (0 to quit): 15
XV
Enter an number 1-1000 (0 to quit): 322
CCCXXII
Enter an number 1-1000 (0 to quit):
Lisää yksi printf tuonne niin näkymä on selkeämpi:
...
while ( val >= conv[i].arabic )
{
val -= conv[i].arabic;
printf ( "%s", conv[i].roman );
}
}
printf("\n");
}
return EXIT_SUCCESS;
}
...juu-u tarkoitinkin, että siltä osin menee hyvin, koska ei hyväksy kirjainta ;)
Vika taitaa olla mulla kääntäjässä, jos koodi kerran muillakin toimii. Kiitosta vaan!