Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: fenix94 в Sep 08, 2012, 23:19



Титла: Преобразуване на арабски в римски числа
Публикувано от: fenix94 в Sep 08, 2012, 23:19
Здравейте,
Имам малко проблеми с преобразуването на арабските числа в римски. Ще бъда благодарен на малко помощ.
Код:
#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;
}
Поздрави


Титла: Re: Преобразуване на арабски в римски числа
Публикувано от: fenix94 в Sep 09, 2012, 13:56
Темата не е актуална.