Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Roomalaisia numeroita

Hempuli [01.12.2006 22:06:45]

#

Isäni kertoi, että pyrkiessään arkkitehdiksi hänen piti tehdä C++:lla tehdä ohjelma, joka muuttaa numerot roomalaisiksi numeroiksi ja vice versa. Olen vielä varsin aloittelija ohjelmointikielien käytössä (Tein ensimmäiset ohjelmani pelinteko-ohjelmilla), ja olen miettinyt josko tällainen härdelli olisi mahdollista toteuttaa QB:lla järkevästi.
Tiedän, että se on mahdollista, todennäköisesti jopa helppoa, mutta tällä hetkell ainut ratkaisu jonka näkisin olisi tyyppiä:

DIM numero AS INTEGER
INPUT "laita numero: "; numero
IF numero = 1 then rooma$ = "I"
IF numero = 2 then rooma$ = "II"

... ja niin edespäin. Kuten huomaatte,
en ole kovinkaan hyvä QB:in käytössä, mutta minua kiinnostaisi, josko joku osaisi tuon ratkaista (esimerkiksi jollain komennolla, joka osaa laittaa I + V = IV.).

kiitos.

Antti Laaksonen [01.12.2006 22:26:58]

#

Numeron muuttaminen roomalaiseksi numeroksi on hyvä ohjelmointiharjoitus.

Tässä on yksi QB-toteutus asiasta:

INPUT "Kirjoita numero: ", n%

WHILE n% > 0
   ' luetaan DATA-riviltä seuraava luku muuttujaan l%
   ' ja seuraava merkkijono muuttujaan m$
   READ l%, m$
   ' vähennetään luettua lukua niin kauan kuin pystyy
   WHILE n% >= l%
      r$ = r$ + m$
      n% = n% - l%
   WEND
WEND

PRINT "Roomalaisittain "; r$

DATA 1000, M, 900, CM, 500, D, 400, CD, 100, C, 90, XC
DATA 50, L, 40, XL, 10, X, 9, IX, 5, V, 4, IV, 1, I

Ohjelman toiminta perustuu siihen, että numero voidaan muuttaa roomalaiseksi vähentämällä siitä järjestyksessä ohjelman lopussa mainittuja lukuja. Tiettyä lukua vähennetään aina mahdollisimman monta kertaa. Esim. jos luku on 142, vähennetään ensin 100 (C), sitten 40 (XL) ja lopuksi 1 (I) ja 1(I), jolloin tulos on CXLII.

Latska [01.12.2006 23:14:20]

#

Hempuli kirjoitti:

en ole kovinkaan hyvä QB:in käytössä, mutta minua kiinnostaisi, josko joku osaisi tuon ratkaista (esimerkiksi jollain komennolla, joka osaa laittaa I + V = IV.).

Näin asiaan mitenkään liittymättä, I + V ei suinkaan ole IV vaan VI.

Hempuli [02.12.2006 12:32:59]

#

jepjep, tiedän, mutta sanoin sen esimerkkinä kirjainten yhteenliittämisestä, eli luvussa 13 ottaisi 10 = X ja 3 = III, ja yhdistäisi ne X + III = XIII. Sitä meinasin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta