Автор Тема: Преобразуване на арабски в римски числа  (Прочетена 1120 пъти)

fenix94

  • Напреднали
  • *****
  • Публикации: 17
    • Профил
Здравейте,
Имам малко проблеми с преобразуването на арабските числа в римски. Ще бъда благодарен на малко помощ.
Код:
#include <iostream>
using namespace std;
char *dec2rome(int a, char* r)
{
   const char sym[8]="IVXLCDM";
   const int num[8]={1, 5, 10, 50, 100, 500, 1000};
   int p=6, j=0, i=0;
   while(a)
   {
       j=0;
       while(num[p]>=a)
       {
           if(j>=1 && (p==1 || p==3 || p==5))
           {
               r[i--];
               a-=num[p];
               r[i]=sym[p-1];
               i++;
               a+=num[p-1];
               r[i]=sym[p+1];
               i++;
               a-=num[p+1];
           }
           else if(j<=3 && (p==0 || p==2 || p==4 || p==6))
           {
               r[i]=sym[p];
               i++;
               a-=num[p];
           }
           else if(j>3 && (p==0 || p==2 || p==4))
           {
               i-=2;
               a=a+num[p+1]-4*num[p];
               r[i]=num[p+1];
               i++;
           }
           j++;
       }
       p--;
   }
   r[i]='\0';
   return r;
}

int main()
{
   int x;
   char b[64];
   cout<<dec2rome(14, b)<<endl;
   return 0;
}
Поздрави
Активен

fenix94

  • Напреднали
  • *****
  • Публикации: 17
    • Профил
Темата не е актуална.
Активен