ďťż

Ładny brzuch

Witam.

Na zaliczenie mam napisać program który będzie zamieniał mi wprowadzoną liczbę na liczbę rzymską .. W zakresie od 1 do 4999.
Szczerze mówiąc nie mam nawet pojęcia od czego zacząć w tym zadaniu więc będę wdzięczny za wszelką pomoc.

Pozdrawiam



Od ręcznego zamienienia liczby na rzymską. Serio piszę. Wtedy wyjdą na wierzch pewne "zależności".

A nie czasami do 3999?

Maksymalnie do 4999 można w ten sposób zapisać i to mam zrobić :( A co do tych zależności to nie wiem czy zrozumiałem ale chodzi o dodawanie symboli ? Np. 127 to CXXVII, czyli C+X+X+V+I+I (100+10+10+5+1+1=127 ?



tak mniej wiecej o to chodzi

polecam zrobic to za pomoca zwyklego odejmowania zaczynjac do njawyzesjz wartosci dangeo symbolu

129, to CXXIX czy CXXVIIII? :>
Należy pamiętać, że cztery, to nie IIII, a IV, dziewięć to nie VIIII, a IX etc. :lol:
Użytkownik andrzej_aa edytował ten post 15 grudzień 2009, 16:34
nie pamietam wszystkich symboli rzyskich, ale za kazdy z nich odpowiada pewna liczba

zaczynasz od najwyzszej czyli MMM = 3000 (chyba ta jest najwyzsza), nazwijmy ja liczba odjemujaca

jesli liczba - liczba_odejmujca < 0 to zmniejszasz liczbe_odjemujaca o jeden poziom (czyli w tym przypadku z MMM na MM=2000)
jesli liczba - liczba_odejmujac => 0 to liczba = liczba - liczba_odjemujaca (jesli tu wyjdzie zero mozna zakonczyc program) + wypisz odpowiadajacy symbol rzymski dla liczba_odejmujaca + to co w warunku wyzej

a teraz przyklad
zalozmy ze mamy tak liczbe jaka kolega podal wyzej czyli 129

129

129 - 3000 < 0
129 - 2000 < 0
...
129 - 900 < 0
129 - 800 < 0
...
129 - 200 < 0
129 - 100 > 0, wypisz C
29 - 90 < 0
29 - 80 < 0
...
29 - 20 > 0, wypisz XX
...
9 - 9 = 0, wypisz IX i zakoncz program

w ten sposob zostanie wyswietlone "CXXIX"

to nie jest jedyny sposob, pisze "z glowy", sa tez inne algorytmy, np. mozna podzielic liczbe na jednosci, dziesiatki itd i tak je obrabiac lub zmodyfikowac moj algorytm i zmniejszyc liczbe symboli w pamieci..

a co do ogranicznia liczb rzymskich to uwazam, ze mozna zapisac ich nieskonczenie wiele poprzez nieskonczone pisanie liczby M = 1000, ale zgodnie z rzymska konwencja najwieksza cyfra to 3000, natomiast liczba 3999
Użytkownik fernandez edytował ten post 15 grudzień 2009, 17:17
Są też na przykład takie sposoby. Jednak wedle generatora na tej stronie, liczba 4999 zwraca błąd
Fehler: Die hĂśchste Zahl im rĂśmischen Zahlensystem ist 3999. Zatem nie można zapisać w systemie rzymskim liczby większej niż 3999 mając do dyspozycji znaki liczb rzymskich :> Chyba że się chcesz bawić z kreskami, to więcej informacji na Wikipedii ;)

Chyba jestem do tego za tępy .. nie mam pojęcia jak przełożyć to wszystko na kod :(


Chyba jestem do tego za tępy .. nie mam pojęcia jak przełożyć to wszystko na kod :(

Może porostu nie masz pojęcia o programowaniu i nawet na podstawie gotowca nie umiesz napisać własnej wersji aplikacji?

Pewnie masz rację .. Próbowałem z tym na wszystkie sposoby i nic :/

Co powiecie na coś takiego ?

#include <iostream> #include <conio.h> using namespace std; int arabska (int a) { cout << a%10 << "," << (a/10)%10 << "," << (a/100)%10 << "," << (a/1000)%10 << endl; switch ((a/1000)%10) { case 3: cout << "MMM"; break; case 2: cout << "MM"; break; case 1: cout << "M"; break; } switch ((a/100)%10) { case 9: cout << "CM"; break; case 8: cout << "DCCC"; break; case 7: cout << "DCC"; break; case 6: cout << "DC"; break; case 5: cout << "D"; break; case 4: cout << "CD"; break; case 3: cout << "CCC"; break; case 2: cout << "CC"; break; case 1: cout << "C"; break; } switch ((a/10)%10) { case 9: cout << "XC"; break; case 8: cout << "LXXX"; break; case 7: cout << "LXX"; break; case 6: cout << "LX"; break; case 5: cout << "L"; break; case 4: cout << "XL"; break; case 3: cout << "XXX"; break; case 2: cout << "XX"; break; case 1: cout << "X"; break; } switch (a%10) { case 9: cout << "IX"; break; case 8: cout << "VIII"; break; case 7: cout << "VII"; break; case 6: cout << "VI"; break; case 5: cout << "V"; break; case 4: cout << "IV"; break; case 3: cout << "III"; break; case 2: cout << "II"; break; case 1: cout << "I"; break; } } int main() { cout << "Program zamienia liczbe arabska w rzymska'"; cout << endl; int x; cout << "Podaj liczbe arabska : "; cin >> x; cout << "Zapis rzymski liczby to: "; arabska(x); cout << endl << endl; cout<<endl<<"Przycisnij dowolny klawisz aby zakonczyc"; getch(); return 0; }

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •