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-2024 v.1.5 | design: diviXdesign & rainbowcolors