Mateusz Mazurek – programista z pasją

Blog o Pythonie i kilku innych technologiach. Od developera dla wszystkich.

Programowanie

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

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>

usingnamespace std;
int trans(char a){
switch( a ){
case'X':return10;break;
case'I':return1;break;
case'V':return5;break;
case'L':return50;break;
case'C':return100;break;
case'D':return500;break;
case'M':return1000;break;
default:return0;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 =newint[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;
}
return0;
}
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