Matematické Fórum

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

#1 07. 11. 2009 14:38

Tlustýna
Zelenáč
Příspěvky: 19
Reputace:   
 

Java - převod na římské číslice

Dobrý den všem příznivcům programování :-)

Napadá někoho algoritmus na převod arabských číslic na římské?

Offline

 

#2 07. 11. 2009 14:43 — Editoval FailED (07. 11. 2009 15:43)

FailED
Příspěvky: 1255
Reputace:   42 
 

Re: Java - převod na římské číslice

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

 

#3 16. 11. 2009 17:43 — Editoval KMyška (16. 11. 2009 22:21)

KMyška
Zelenáč
Příspěvky: 6
Reputace:   
 

Re: Java - převod na římské číslice

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).

Code:

    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

 

#4 12. 11. 2013 23:49

gizmo16
Zelenáč
Příspěvky: 10
Reputace:   
 

Re: Java - převod na římské číslice

bez toho foru by to mohlo vypadat aj takto, je to ovela rychlejsie

Code:

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

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson