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