Program napisany w C++ służący do zamiany liczb arabskich na rzymskie i odwrotnie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include <iostream> #include <string> #include <stdlib.h> using namespace std; int trans(char a){ switch ( a ){ case 'X':return 10;break; case 'I':return 1;break; case 'V':return 5;break; case 'L':return 50;break; case 'C':return 100;break; case 'D':return 500;break; case 'M':return 1000;break; default: return 0; break; } } int main() { char jednosci[12][255] = {" ", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", '\0'}; char dziesiatki[12][255] = {" ", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", '\0'}; char setki[12][255] = {" ", "C", "CC", "CCC", "CD", "M", "MC", "MCC", "MCCC", "CM", '\0'}; char tysiace[12][255] = {" ", "M", "MM", "MMM", '\0'}; cout<<"Wybierz 1 dla konwersji arabska->rzymska i 2 dla rzymska->arabska: "; int wybor=0; cin>>wybor; if(wybor==1){ cout<<"Podaj cyfre arabska (nie wieksza niz 3999): "; string a; int cyfra=0; int len; while(!cyfra){ // sprawdzenie czy podana jest liczba cin>>a;//wczytuje liczbe do stringa len = a.length(); //dlugosc stringa, czyli ilosc cyfr w liczbie cyfra = atoi(a.c_str());//string do char i char do int. } int* temp = new int[len];//tablica o dlugosci cyfr w liczbie int i=len-1;// iterator pomniejszony o jeden (zaczynamy od o tablica) int modul=10;// dzielenie przez 10 do { temp[i] = cyfra%modul; cyfra = cyfra/modul; i--; } while (cyfra>0); //petla przepisuje po jednej cyfrze z liczby i wrzuca je do tablicy cout<<"Liczba arabska zapisana w systemie rzymskim: "; //4 mozliwosci dlugosci liczby, wiec 4 ify. Mozna to zrobic tez petla. if(len == 4) cout<<tysiace[temp[0]]<<setki[temp[1]]<<dziesiatki[temp[2]]<<jednosci[temp[3]]; if(len == 3) cout<<setki[temp[0]]<<dziesiatki[temp[1]]<<jednosci[temp[2]]; if(len == 2) cout<<dziesiatki[temp[0]]<<jednosci[temp[1]]; if(len == 1) cout<<jednosci[temp[0]]; delete [] temp; } if(wybor==2){ string a; cout<<"Podaj cyfre w systemie rzymskim: "; cin>>a; int element=0, wynik=0, temp=0; for (int i=0;i<a.length();++i) { element = trans(a.at(i)); if(i<a.length()-1){ temp=trans(a.at(i+1)); } if (temp>element) { element =0-element; } wynik=element+wynik; } cout<<wynik; } return 0; } |
Mateusz Mazurek