Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ahoj,
napada me porovnavat cislo postupne s hodnotami rimskych znaku od nejvetsiho, kdyz je cislo vetsi nebo rovno hodnote rimskeho znaku, vypis ten znak a od cisla odecti jeho hodnotu, to cele provadej dokud je cislo vetsi nez 0.
Treba prijdes na neco lepsiho.
Offline
Tlustýna - Failed má pravdu. Jestli není pozdě, tak jsem to nedávno psal jako část úkolu. Dám ti sem jen tu fci. Načítá int(převáděné číslo), vrací string(převedené číslo). Dalo se to i postupně vypisovat v těle toho cyklu, ale takhle mi to přijde elegantnější - i když nejsem žádnej programátor.
V těch polích si vlastně můžeš nadefinovat jakékoliv podmínky převodu. Tzn. že např., teď to 996 převede na "XMVI", ale když vynecháš z obou polí "XM" a "990", tak to 996 vypíše jako "CMXCVI".
Někde si ještě oštři vstupy na záporný hodnoty (a větší než 4000).
static String vratRimana(int cislo) { String riman[] = {"M", "XM", "CM", "D", "XD", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; int arab[] = {1000, 990, 900, 500, 490, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; StringBuffer vysledek = new StringBuffer(); while (cislo>0) { for (int i=0; i<arab.length; i++) { if ((cislo-arab[i])>=0) { cislo-=arab[i]; vysledek.append(riman[i]); break; } } } return vysledek.toString(); }
Teď když na to tak koukám, tak ten for se dal napsat i bez tý podmínky "for (int i=0;; i++)", tedy pro mou vlastní potřebu by to tak stačilo.
Offline
bez toho foru by to mohlo vypadat aj takto, je to ovela rychlejsie
public String getRoman(int number) { String riman[] = {"M","XM","CM","D","XD","CD","C","XC","L","XL","X","IX","V","IV","I"}; int arab[] = {1000, 990, 900, 500, 490, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; StringBuilder result = new StringBuilder(); int i = 0; while (number > 0 || arab.length == (i - 1)) { while ((number - arab[i]) >= 0) { number -= arab[i]; result.append(riman[i]); } i++; } return result.toString(); }
Offline
Stránky: 1