Mateusz Mazurek – programista z pasją

Python, architektura, ciekawostki ze świata IT

Programowanie

Zamiana arabskie -> rzymskie i odwrotnie [C++]

Cześć! Cieszę się, że mnie odwiedziłeś/aś. Zanim przejdziesz do artykułu chciałbym zwrocić Ci uwagę na to, że ten artykuł był pisany kilka lat temu (2012-12-07) miej więc proszę na uwadzę że rozwiązania i przemyślenia które tu znajdziesz nie muszą być aktualne. Niemniej jednak zachęcam do przeczytania.

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;
}
Dzięki za wizytę,
Mateusz Mazurek

A może wolisz nowości na mail?

Subskrybuj
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments