Super pomysł z linkiem formatera. Nigdy nie potrzebowałem dla siebie, ale aby chociaż spojrzeć na cudze kody to chyba stanie się mój niezbędnik. Wiem, że takich narzędzi jest bez liku [dobre IDE chyba mają wbudowane] ale naprawdę nie potrzebowałem i nie używałem. Aż nie mogłem się powstrzymać i nie wkleić przeformatowanego [styl LLVM] kodu:
#include <string.h>
#include <map>
#include <iostream>
using namespace std;
int ZamianaRzymskieNaArabskie(string LiteraRzymska) {
map<char, int> wartosci;
int DlogoscLiczby, wynik, WartoscPojedynczejCyfry, OstatniaWartosc;
wartosci['I'] = 1;
wartosci['V'] = 5;
wartosci['X'] = 10;
wartosci['L'] = 50;
wartosci['C'] = 100;
wartosci['D'] = 500;
wartosci['M'] = 1000;
DlogoscLiczby = LiteraRzymska.length();
for (DlogoscLiczby; DlogoscLiczby >= 0; DlogoscLiczby--) {
WartoscPojedynczejCyfry = wartosci[LiteraRzymska[DlogoscLiczby]];
if (WartoscPojedynczejCyfry >= OstatniaWartosc) {
OstatniaWartosc = WartoscPojedynczejCyfry;
wynik += WartoscPojedynczejCyfry;
} else
wynik -= WartoscPojedynczejCyfry;
}
return wynik;
}
string ZamianaArabskaNaRzymska(int arabskaWejsciowa)
{
map<int, string> liczbaArabskaRzymska;
string liczbaRzymska = "";
liczbaArabskaRzymska[1] = "I";
liczbaArabskaRzymska[4] = "IV";
liczbaArabskaRzymska[5] = "V";
liczbaArabskaRzymska[9] = "IX";
liczbaArabskaRzymska[10] = "X";
liczbaArabskaRzymska[40] = "XL";
liczbaArabskaRzymska[50] = "L";
liczbaArabskaRzymska[90] = "XC";
liczbaArabskaRzymska[100] = "C";
liczbaArabskaRzymska[400] = "CD";
liczbaArabskaRzymska[500] = "D";
liczbaArabskaRzymska[900] = "CM";
liczbaArabskaRzymska[1000] = "M";
map<int, string>::iterator koniec = --liczbaArabskaRzymska.end();
map<int, string>::iterator poczatek = --liczbaArabskaRzymska.begin();
for (koniec; koniec != poczatek; koniec--) {
while (arabskaWejsciowa % koniec->first < arabskaWejsciowa) {
liczbaRzymska += koniec->second;
arabskaWejsciowa -= koniec->first;
}
}
return liczbaRzymska;
}
int main() {
string LiteraRzymska;
string LiteraRzymska2;
while (cin >> LiteraRzymska >> LiteraRzymska2) {
int suma = ZamianaRzymskieNaArabskie(LiteraRzymska) +
ZamianaRzymskieNaArabskie(LiteraRzymska2);
cout << ZamianaArabskaNaRzymska(suma);
cout << endl;
}
}
To nie załatwia fatalnie dobrany nazw zmiennych i funkcji oraz braku testów na ideone.
Warto też przeczytać podstawowe wskazówki: Jeśli zaczynasz, przeczytaj koniecznie! <--kliknij w to proszę!