Cyfry Rzymskie

0

Witam, czy znacie lepszy sposób na konwersje z systemu arabskiego na rzymski,
moglibyście sprawdzić czy mój kod nie wysypie się na różnych przykładach progowych:

 void rzymskie()
{
    char akcja='t';
    do
    {
        cout<<"Czy chcesz wprowadzić cyfrę arabską"<<endl;
        cout<<"(naciśnij klawisz t/T, jeśli tak lub n/N jeśli nie)?"<<endl;
        cin>>akcja;
        int arabska;
        string rzymska;
        if(akcja=='t' || akcja=='T')
        {
            cin>>arabska;
            do
            {
                if(arabska>=1000)
                {
                    arabska=arabska-1000;
                    rzymska=rzymska+"M";
                    continue;
                }
                if(arabska>=500)
                {
                    arabska=arabska-500;
                    rzymska=rzymska+"D";
                    continue;
                }
                if(arabska>=400)
                {
                    arabska=arabska-400;
                    rzymska=rzymska+"CD";
                    continue;
                }
                if(arabska>=100)
                {
                    arabska=arabska-100;
                    rzymska=rzymska+"C";
                    continue;
                }
                if(arabska>=90)
                {
                    arabska=arabska-90;
                    rzymska=rzymska+"XC";
                    continue;
                }
                if(arabska>=50)
                {
                    arabska=arabska-50;
                    rzymska=rzymska+"L";
                    continue;
                }
                if(arabska>=40)
                {
                    arabska=arabska-40;
                    rzymska=rzymska+"XL";
                    continue;
                }
                if(arabska>=10)
                {
                    arabska=arabska-10;
                    rzymska=rzymska+"X";
                    continue;
                }
                if(arabska>=5)
                {
                    arabska=arabska-5;
                    rzymska=rzymska+"V";
                    continue;
                }
                if(arabska>=4)
                {
                    arabska=arabska-4;
                    rzymska=rzymska+"IV";
                    continue;
                }
                if(arabska>=1)
                {
                    arabska=arabska-1;
                    rzymska=rzymska+"I";
                    continue;
                }
            }while(!arabska==0);
            cout<<rzymska<<endl;
        }
        if(akcja=='n' || akcja=='N')
        {

        }

        cout<<"Czy powtórzyć obliczenia"<<endl;
        cout<<"(naciśnij klawisz t/T, jeśli tak lub n/N jeśli nie)?"<<endl;
        cin>>akcja;
    }while(akcja!='n' && akcja!='N');
}
0

Wartości ujemne...

0

Nie rozumiem, w zadaniu któe rozwiązuję przygotowując się do konkursu jest napisane że cyfry są od 0 do 3000

0

Wybacz, lecz nie jestem medium.

1

jest lepszy sposób - tablice.
sprawdzanie

  1. wpisz cobie w excelu =RZYMSKIE(WIERSZ();0)
  2. rozciągnij to na zadaną ilość wierszy w twoim przypadku 6500
  3. dodaj dodatkową opcję aby wypisywało po kolei od 1 do 6500 w osobnym wierszu
  4. porównaj wyniki z excelem.
1
void rzymskie()
{
char akcja='t';
do
{
cout<<"Czy chcesz wprowadzić cyfrę arabską"<<endl;

Zgrzyt!

Nie mieszaj części "obliczeniowej" programu z interfejsem użytkownika.
Zrób funkcję

string rzymskie(unsigned int n)

która tylko przekształci inta na stringa z zapisem rzymskim, i jej potem używaj.

cout << rzymskie(arabska) << endl;
0
adam vip napisał(a):

w zadaniu któe rozwiązuję (...) jest napisane że cyfry są od 0 do 3000
Rzymianie nie znali zera :) Stąd i nie ma wieku zerowego :p

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0