Kirjoittaja: Antti Laaksonen
Kirjoitettu: 02.02.2002 – 02.02.2002
Tagit: teksti, koodi näytille, vinkki
Tämä ohjelma toimii täysin päinvastoin, kuin aiempi Luku kirjoitettuna. Se muuntaa kirjoitetun luvun numeroiksi seuraavaan tapaan:
tuhatsatakolmekymmentä -> 1130
Yläraja on tässä hiukan tiukempi, mutta kuitenkin varmasti riittävä 900 biljoonaa.
DIM luvut(0 TO 24) AS STRING
DIM osat(1 TO 50) AS INTEGER
DIM tulos AS CURRENCY
DIM kerroin AS CURRENCY, ikerroin AS CURRENCY
FOR i = 0 TO 24
READ luvut(i)
NEXT
CLS
INPUT "Anna luku: ", luku$
osai = 0
DO WHILE LEN(luku$) > 0
ok = 0
FOR i = 24 TO 0 STEP -1
IF LEFT$(luku$, LEN(luvut(i))) = luvut(i) THEN
osai = osai + 1
osat(osai) = i
IF LEN(luku$) = LEN(luvut(i)) THEN EXIT DO
luku$ = MID$(luku$, LEN(luvut(i)) + 1)
ok = 1
END IF
NEXT
IF LEFT$(luku$, 1) = " " THEN
luku$ = MID$(luku$, 2)
ok = 1
END IF
IF ok = 0 THEN PRINT "Tunnistamattomia sanoja!": END
LOOP
FOR i = 1 TO osai
SELECT CASE osat(i)
CASE 1, 2, 3, 4, 5, 6, 7, 8, 9
kerroin = osat(i)
CASE 10
kerroin = kerroin + 10
CASE 11
ikerroin = ikerroin + 10 + kerroin
kerroin = 0
CASE 12
ikerroin = ikerroin + kerroin * 10
kerroin = 0
CASE 13
ikerroin = 100
kerroin = 0
CASE 14
ikerroin = ikerroin + kerroin * 100
kerroin = 0
CASE 15, 17, 19, 21
tulos = tulos + 10 ^ ((osat(i) - 15) * (1.5) + 3)
CASE 16, 18, 20, 22
ikerroin = ikerroin + kerroin
tulos = tulos + ikerroin * 10 ^ ((osat(i) - 1 - 15) * (1.5) + 3)
ikerroin = 0
kerroin = 0
END SELECT
NEXT
IF ikerroin <> 0 THEN tulos = tulos + ikerroin
IF kerroin <> 0 THEN tulos = tulos + kerroin
PRINT tulos
DATA nolla, yksi, kaksi, kolme, neljä, viisi, kuusi, seitsemän
DATA kahdeksan, yhdeksän, kymmenen, toista, kymmentä, sata
DATA sataa, tuhat, tuhatta, miljoona, miljoonaa, miljardi, miljardia
DATA biljoona, biljoonaa, triljoona, triljoonaaohoh! antti, biljoona=billion=miljardi
Miljardi, Biljoona, Triljoona...eli yksi, kaksi (bi) ja kolme (tri)
Biljoona tulee englanninkielen sanasta "billion", joka taas on suomeksi "miljardi". Kysykää vaikka matematiikan opettajalta Esa K:lta.
miljoona, miljarti, biljoona, triljoona, kvadriljoona, kvintiljoona, sekstiljoona, septiljoona, oktiljoona, noviljoona, dekiljoona, undekiljoona, duodekiljoona, tredekiljoona, kvattuordekiljoona, kvindekiljoona, sedekiljoona, septendekiljoona, duodevigintiljoona,undevigintiljoona, vigintiljoona...
http://www.jimloy.com/math/billion.htm
jenkien ja muiden systeemi on vähän eri tai ainakin näin mun matikanopettaja sanoi meille viel joskus aikoja sitten.
ja muutenkin jos menee turhan pieneksi / suureksi kannattaa vaan käyttää kymmenenpotensseja. Säästyy kaikki päänsärystä.
Ja noista luvuistahan tässä kannattaakin keskustella.