Új hozzászólás Aktív témák

  • mm00

    aktív tag

    válasz Bettina87 #376 üzenetére

    Na összehoztam neked, szerintem ez meg fog felelni :)

    #include<stdio.h>
    #include <ctype.h>
    #define HSZ sizeof(int)/sizeof(short)*5

    int getch(void);
    void ungetch(int);
    int getint(int *);

    int main(int argc, char *argv[]) {
    int i = 0;
    int dec;
    char rom[50];
    getint(&dec);

    printf("%d\n\n", dec);
    while(dec>=1000){
    dec -= 1000;
    rom[i] = 'M';
    i++;
    }
    if (dec>=900){
    dec-=900;
    rom[i] = 'C';
    i++;
    rom[i] = 'M';
    i++;
    }
    if(dec>=500){
    dec -= 500;
    rom[i] = 'D';
    i++;
    }
    if (dec>=400){
    dec -= 400;
    rom[i] = 'C';
    i++;
    rom[i] = 'D';
    i++;
    }
    while(dec>=100){
    dec = dec-100;
    rom[i] = 'C';
    i++;
    }
    if(dec>=90){
    dec -= 90;
    rom[i] = 'X';
    i++;
    rom[i] = 'C';
    i++;
    }
    if(dec>=50){
    dec -= 50;
    rom[i] = 'L';
    i++;
    }
    if(dec>=40){
    dec -= 40;
    rom[i] = 'X';
    i++;
    rom[i] = 'L';
    i++;
    }
    while(dec>=10){
    dec -= 10;
    rom[i] ='X';
    i++;
    }
    if(dec == 9){
    rom[i] = 'I';
    i++;
    rom[i] = 'X';
    i++;
    }
    else{
    if(dec >= 5){
    dec -= 5;
    rom[i] = 'V';
    i++;
    }
    if(dec == 4){
    rom[i] = 'I';
    i++;
    rom[i] = 'V';
    i++;
    }
    else{
    while(dec > 0){
    dec -= 1;
    rom[i] = 'I';
    i++;
    }
    }
    }
    rom[i]='\0';
    printf("%s", rom);

    }

    int getint(int *pn)
    {
    int c=0, sign, ok=0, numdb;
    double d;
    while(!ok && c!=EOF)
    {
    while(isspace(c=getch()));
    sign = 1;
    if(c=='+'||c=='-')
    {
    sign=(c=='+')?1:-1;
    c=getch();
    }
    for(d=0., numdb=HSZ; numdb-->0&&isdigit(c);c=getch())
    {
    d=10.*d+c-'0';
    ok = 1;
    }
    d*=sign;
    while(!isspace(c)&&c!=EOF)
    {
    c=getch();
    ok = 0;
    }
    else
    *pn=d;
    }
    if(c!=EOF)ungetch(c);
    return(c);
    }

Új hozzászólás Aktív témák