Arbialaiset numero roomalaisiksi

Tarvitsisin apua ohjelmakoodin tekemiseen C-kielellä. Ohjelman pitäisi muuntaa arabialaiset numerot roomalaisiksi.
6515
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat
  • kiitos paljon, johan alkoi vinkkejä löytymään!

    Äänestä

  • 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ä?

    Äänestä

  • 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;
    }

    Äänestä

  • apua koodiin kirjoitti:

    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;
    }

    Äänestä

  • toimii kirjoitti:

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

    Äänestä

Kommentoi aloitusta


apua koodiin kirjoitti:

Tarvitsisin apua ohjelmakoodin tekemiseen C-kielellä. Ohjelman pitäisi muuntaa arabialaiset numerot roomalaisiksi.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu