ow.verysweet Temat założony przez niniejszego użytkownika |
[cpp] Kalkulator liczb rzymskich » 2014-03-02 18:53:19 Cześć wymyśliłem sobie ,że zrobie kalkulator liczb rzymskich ale nie mam pomysłów jak go chwycić. Założenie jest takie, user podaje liczbe rzymską np "II" i "I", program konwertuje te liczby na 2 i 1, później po prostu odejmuje 2 od 1 i konwertuje wynik na liczbe rzymską i ją wyświetla. Utknąłem w konwertowaniu "I" na liczbe jeden tu jest coś co napisałem ; #include <iostream>
using namespace std;
int main() { char pierwsza; char druga; cout << "Witaj w kalkulatorze rzymskim!:)\n\n\nPodaj odjemn\245:" << endl; cin >> pierwsza; cout << "Podaj odjemnik:" << endl; cin >> druga; int jeden1 = 1; char jeden = 'I'; jeden = jeden1; int dwa2 = 2; char dwa = 'II'; dwa = dwa2; switch( pierwsza ) { case 2: pierwsza = 2; break; } switch( druga ) { case 1: druga = 1; break; } cout << "Tw\242j wynik to:" << pierwsza - druga << endl; }
macie jakiś pomysł jak zrobić tą konwersje? bynajmniej dać mi tylko wędke, ja sobie złowie rybke |
|
mieciox |
» 2014-03-02 19:06:48 Wsadź do tablicy wartości i odpowiadające im cyfry rzymskie. To tak na początek, zaraz może coś lepszego wykombinuje. ----- Idąc twoim tokiem rozumowania: #include <iostream> using namespace std;
int main() { char cyfra_rzymska; int pojemnik; cout << "Podaj cyfre rzymska: \n"; cin >> cyfra_rzymska; pojemnik = int( cyfra_rzymska ); switch( pojemnik ) { case 98: cout << "Podales B \n"; break; default: cout << "Nie ma takiej cyfry rzymskiej."; } }
Twój pomysł nie jest taki zły, częściowo zrealizowałem go w kodzie wyżej. Mam nadzieję, że troszkę pomogłem. |
|
ow.verysweet Temat założony przez niniejszego użytkownika |
» 2014-03-02 19:20:14 Hmm no niby mam coś takiego, ale jak z tego korzystać #include <iostream>
using namespace std;
int main() { struct Rzymlicz { char s; int w; }; Rzymlicz Rzym[] = { { 'I', 1 }, { 'V', 5 }, { 'X', 10 }, { 'L', 50 }, { 'C', 100 }, { 'D', 500 }, { 'M', 1000 }, { '\0', 0 } }; char pierwsza; char druga; cout << "Witaj w kalkulatorze rzymskim!:)\n\n\nPodaj odjemn\245:" << endl; cin >> pierwsza; cout << "Podaj odjemnik:" << endl; cin >> druga; cout << "Tw\242j wynik to:" << pierwsza - druga << endl; }
|
|
RazzorFlame |
» 2014-03-02 19:21:25 ow.verysweet, chcesz trzymać 2 znaki w 1 bajtowej zmiennej typu char. |
|
mieciox |
» 2014-03-02 19:23:48 Dobra, podaje przykład realizacji owego problemu. Powinno to pomóc przy dalszej realizacji zadania, jakim jest wpisywanie kombinacji cyfr rzymskich, a następnie konwersja do postaci dziesiętnej i odejmowanie. Wynik w postaci dziesiętnej, chyba że ma być w postaci rzymskiej, to znów dokonujesz konwersji - rozkładasz liczbę na czynniki pierwsze, a następnie do postaci rzymskiej wg systemu zapisywania liczb rzymskich + obsługa wyjątków, jeśli ktoś spróbuje wprowadzić inną cyfrę niż rzymską itd. Zostawiam to tobie, pomyśl jak to zrealizujesz. #include <iostream>
using namespace std; int odejmij( int liczba1, int liczba2 ); struct cyfry_rzymskie { char cyfra; int liczba; };
int main() { char a, b; int pojemnik_a, pojemnik_b; cyfry_rzymskie rzym[ 8 ] = { { 'I', 1 }, { 'V', 5 }, { 'X', 10 }, { 'L', 50 }, { 'C', 100 }, { 'D', 500 }, { 'M', 1000 }, { '0', 0 } }; cout << "Witaj w kalkulatorze rzymskim!:)\n\n\nPodaj odjemn\245:" << endl; cin >> a; cin >> b; for( int x = 0; x < 9; x++ ) { if( rzym[ x ].cyfra == a ) pojemnik_a = rzym[ x ].liczba; } for( int z = 0; z < 9; z++ ) { if( rzym[ z ].cyfra == b ) pojemnik_b = rzym[ z ].liczba; } cout << "Wynik to: " << odejmij( pojemnik_a, pojemnik_b ); return 0; }
int odejmij( int liczba1, int liczba2 ) { return liczba1 - liczba2; }
|
|
michal11 |
» 2014-03-02 20:46:51 Ja bym skorzystał ze stringów, będzie łatwiej i jeżeli to nie będzie jakieś skomplikowane działanie to najlepiej wczytać je całe jako string i potem odpowiednio parsować. |
|
« 1 » |