Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "header.h"
- #include <stdexcept>
- #include <stddef.h>
- using namespace std;
- int RzymArab::rzym2arab(string rzym)
- {
- int tab1[11]= {0};
- int licznik = 0;
- string s=rzym;
- for(int i=0; i<s.length(); i++)
- {
- for (int j=0; j<=12; j++)
- {
- if (string(1,s[i])==liczby1[j])
- {
- tab1[licznik]=liczby2[j];
- licznik++;
- break;
- }
- if (j==12 && string(1,s[i])!=liczby1[12])
- throw invalid_argument( "To nie jest liczba rzymska" );
- }
- }
- int suma=0;
- for (int k=0; k<10; k++)
- {
- if(tab1[k]<tab1[k+1])
- {
- int a=tab1[k+1]-tab1[k];
- if (a==4||a==9||a==40||a==90||a==400||a==900)
- {
- suma=suma-tab1[k];
- }
- else
- throw invalid_argument( "Zle skonstruowana liczba rzymska");
- }
- else
- suma=suma+tab1[k];
- }
- string suma_sprawdzajaca = arab2rzym(suma);
- if (rzym==suma_sprawdzajaca)
- return suma;
- else
- throw invalid_argument( "Zle skonstruowana liczba rzymska");
- }
- string RzymArab::arab2rzym (int arab)
- {
- if(arab>3999 || arab<1)
- throw invalid_argument( "Liczba spoza zakresu");
- string tutaj_zapisuje2[11];
- int i=12;
- int licznik=0;
- while( i >= 0)
- {
- if (arab/liczby2[i]>=1)
- {
- tutaj_zapisuje2[licznik]=liczby1[i];
- arab=arab-liczby2[i];
- licznik++;
- continue;
- }
- else
- i--;
- }
- string s="";
- for( int j=0; j<11; j++)
- {
- if (tutaj_zapisuje2[j] != "\0" )
- s=s+tutaj_zapisuje2[j];
- else
- continue;
- }
- return s;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement