Loading:


    C++ Zamiana liczb rzymskich z przedziału od 0 do 3999 na liczby arabskie

    Program zamienia liczby rzymskie z przedziału od 0 do 3999 na liczby arabskie

    Treść zadania

    Napisać program zamieniający liczby rzymskie na liczby arabskie z przedziału od 0 do 3999. 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 tekst liczby rzymskiej, a w wyniku zwróci jej wartość lub ujemny kod błędu (np. -1). Zapętlić program tak długo, jak długo podawany do konwersji tekst nie jest pusty (strlen(tekst)>0).



    Napisz Artyku³

    Listing


    #include <stdio.h>
    #include <string.h>

    struct Rzym_t
    {
      char s;
      int w;
    };

    const Rzym_t Rzym[]=
    {
      {'I',     1},
      {'V',     5},
      {'X',    10},
      {'L',    50},
      {'C',   100},
      {'D',   500},
      {'M',  1000},
      {'\0',    0}
    };

    int pos(char znak)
    {
      int n;
      for(n=0; Rzym[n].s!=znak; n++)
              if(Rzym[n].s=='\0')
              return -1;
      return n;
    }

    int romtodec(char Rliczba[])
    {
      int sum, i;
     
      i=strlen(Rliczba);
     
      for(i--,sum=0;i>=0;)
      {
        if(i>0)
        {
          if(pos(Rliczba[i])<=(pos(Rliczba[i-1])))
          {
            sum+=Rzym[pos(Rliczba[i])].w;
            i--;
          }
              else
          {
            sum+=Rzym[pos(Rliczba[i])].w-Rzym[pos(Rliczba[i-1])].w;
            i-=2;
          }
        }
            else
        {
              sum+=Rzym[pos(Rliczba[0])].w;
          i--;
        }
      }
      return sum;
    }

    int main()
    {
      char Rliczba[20];

      printf("\tProgram przeksztalca liczby rzymskie na arabskie.\n\n");

      for(;;)
      {
        printf("Podaj rzymska liczbe: ");
        gets(Rliczba);
            printf("\n");
       
            if(!strlen(Rliczba))
                    return 0;
        printf("Arabska liczba: %d\n\n", romtodec(Rliczba));
      }
    }
     




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors