mboost-dp1
Konverter romertal fra inputfil til arabiske tal i Java
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Jeg skal bruge et program, som indlæser en række af
romertal, defineret nedenfor, fra en fil og udskriver de tilsvarende numeriske værdier (dvs.
sædvanlige arabiske tal) i sorteret rækkefølge efter deres numeriske værdi.
Inputfilen er formateret således:
V
X
VII
VI
III
V
IV
IX
II
VII
Så skulle udskriften meget gerne være sådan, så jeg får præcis ét heltal svarende til romertal i inputtet, på hver linje, sorteret efter deres numeriske værdi:
2
3
4
5
5
6
7
7
9
10
Nogen der kan hjælpe mig med dette?
Har ikke umiddelbart kunne finde noget på google, der kunne bruges tilpræcis dette formål, kun færdige convertes, der konvertere ud fra brugerinput.
Er ikke selv helt skarp til Java nemlig, men er dog i gang med at lære det.
romertal, defineret nedenfor, fra en fil og udskriver de tilsvarende numeriske værdier (dvs.
sædvanlige arabiske tal) i sorteret rækkefølge efter deres numeriske værdi.
Inputfilen er formateret således:
V
X
VII
VI
III
V
IV
IX
II
VII
Så skulle udskriften meget gerne være sådan, så jeg får præcis ét heltal svarende til romertal i inputtet, på hver linje, sorteret efter deres numeriske værdi:
2
3
4
5
5
6
7
7
9
10
Nogen der kan hjælpe mig med dette?
Har ikke umiddelbart kunne finde noget på google, der kunne bruges tilpræcis dette formål, kun færdige convertes, der konvertere ud fra brugerinput.
Er ikke selv helt skarp til Java nemlig, men er dog i gang med at lære det.
jamen max værdien er vel 10? eller hvad mener du?
opslagstabel? hvordan?
så jeg bare siger at V = 5, III = 3 også udskriver det eller hvad?
opslagstabel? hvordan?
så jeg bare siger at V = 5, III = 3 også udskriver det eller hvad?
good&evil (3) skrev:jamen max værdien er vel 10? eller hvad mener du?
I dit eksempel er højeste værdi 10. Men hvad er den højeste værdi de de data du rent faktisk skal have konverteret? Også 10? Eller måske nærmere 100.000?
good&evil (3) skrev:opslagstabel? hvordan?
så jeg bare siger at V = 5, III = 3 også udskriver det eller hvad?
Noget i den stil, ja.
@5
jamen jeg skal bare have konverteret de enkelte romerske værdier som står oppe i topic, til de "normale" tal der står nedenunder, ved at bruge noget kode.
det skal ikke være en opslagstavle på den måde, men en algoritme der beregner værdien af romertallene og spytter de numeriske værdier ud.
jamen jeg skal bare have konverteret de enkelte romerske værdier som står oppe i topic, til de "normale" tal der står nedenunder, ved at bruge noget kode.
det skal ikke være en opslagstavle på den måde, men en algoritme der beregner værdien af romertallene og spytter de numeriske værdier ud.
ikke skole, men problemløsning. jeg prøver lidt på at lære java.. online.. og er stødt på denne væg, som jeg ikke kan komme videre med, og derfor spørger jeg om hjælp :)
Ah, OK. Well, så er det er jo straks noget helt andet. :)
Uden at tænke alverden over det, så ville jeg måske starte med at prøve noget i denne stil:
function RomanToNumeric(String roman) {
if (roman.length == 1) {
return RomanCharToNumeric(roman.charAt(0));
}
int i = positionOfHighestChar(roman);
return RomanCharToNumeric(roman.charAt(i)
+ RomanToNumeric(roman.subString(i+1))
- RomanToNumeric(roman.subString(0, i));
}
(Jeg er så elendig til pseudo-kode - det compiler alt for ofte, mangler blot at implementere nogle funktioner.)
Eksempler på positionOfHighestChar:
I: 0
X: 0
VI: 0
IV: 1
IIV: 2
XXI: 0 (X har den højeste værdi, returner position for den første X.)
Uden at tænke alverden over det, så ville jeg måske starte med at prøve noget i denne stil:
function RomanToNumeric(String roman) {
if (roman.length == 1) {
return RomanCharToNumeric(roman.charAt(0));
}
int i = positionOfHighestChar(roman);
return RomanCharToNumeric(roman.charAt(i)
+ RomanToNumeric(roman.subString(i+1))
- RomanToNumeric(roman.subString(0, i));
}
(Jeg er så elendig til pseudo-kode - det compiler alt for ofte, mangler blot at implementere nogle funktioner.)
Eksempler på positionOfHighestChar:
I: 0
X: 0
VI: 0
IV: 1
IIV: 2
XXI: 0 (X har den højeste værdi, returner position for den første X.)
good&evil (11) skrev:Aah, I see you found each other :)
Ærligt talt: Jeg hader det pis. Det er én af årsagerne til at jeg stoppede med den slags "gratis online support". Jeg gider ikke at vi sidder 2 (nogle gange flere) mennesker og bruger tid på at udføre det samme arbejde. Én af os spilder tiden, og denne gang var det vist mig.
Men du er i gode hænder med arne_v, han plejer at vide hvad han laver. Men min første tanke efter at have læst hans kode er nu "IIV != 5". ;-)
(Jeg ved godt "IIV" er dårlig stil, og at man burde skrive III i stedet. Men det er alligevel vigtigt at man kan læse det, da det i nogle tilfælde er vældig praktisk. Fx. IIMM = 1998)
#14
Pointen er at det ikke er korrekt syntax.
Der er en relaxed og en strict version af romertal - efter den relaxed så kan der være 1 "træk fra" tal foran - efter den stricte så kan der være 1 "træk fra" tal somforan og det kan kun være 1 magnitude mindre end det som det er foran.
Pointen er at det ikke er korrekt syntax.
Der er en relaxed og en strict version af romertal - efter den relaxed så kan der være 1 "træk fra" tal foran - efter den stricte så kan der være 1 "træk fra" tal somforan og det kan kun være 1 magnitude mindre end det som det er foran.
#15
Den med "kun ét træk-fra tal foran" har jeg nu kun hørt som god skik, og ikke en fast regel.
Men pointen er blot: Jeg synes en romertals-fortolker burde fortolke IIV som 3, ikke 5. (Og IM som 999, uanset hvor grimt det er. Men det gør din vist også, som jeg lige husker koden jeg kiggede på i få sekunder for knap en uge siden.)
Den med "kun ét træk-fra tal foran" har jeg nu kun hørt som god skik, og ikke en fast regel.
Men pointen er blot: Jeg synes en romertals-fortolker burde fortolke IIV som 3, ikke 5. (Og IM som 999, uanset hvor grimt det er. Men det gør din vist også, som jeg lige husker koden jeg kiggede på i få sekunder for knap en uge siden.)
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.