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