Valaki leírná Microsoft Small Basic-ben a megoldástés elküldeni kommentbe nekem? Nagyon kéne, ezt nem tudom megcsinálni! (feladat a leírásban)
Nem ismerem a nyelvet, de beolvasol egy számot ha kisebb mint 10 vagy nagyobb mint 99 hibát dobsz. Az első számjegy elso = szam div 10 ha jól olvastam utána elso = szam \ 10 a második: masodik = szam MOD 10 vagy szam % 10
eredmeny = 2 * ((masodik *10) + elso)) kb. ennyi.
Jaj, de borzasztó!
Itt egy hasonló kérdés, a megoldás egyébként ugyanaz, amit SimkoL írt:
http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..
Hát hogy írsz te programot? Őrült terjengősen, fölösleges ismétlődésekkel, ellenjavallott GOTOkkal megírsz egy halál nehézkes bevitelt, ahelyett, hogy tényleg egy kétjegyű számot kérnél be, és ellenőriznéd, hogy tényleg szám és 10 és 99 közt van-e, ráadásul a legvégén jutsz el ahhoz, hogy mit kéne csinálnia a programnak egyáltalán? Hogy vagy képes ennyire kitekert módszerre kényszeríteni magad?
Tudom, hogy bonyulult, meg nehézkes is.. ezt egy oldalon találtam és átírtam, de rájöttem, hogy rossz.. Amúgy ez egy példafeladat, most vesszük ezt a szakközépben és hétfőre kellene, de nem tudtam megoldani!
Nagyon szépen köszönöm azoknak akik segítettek! (ezt a kérd be a nevet dolgot is úgy találtam, de az is felesleges ><)
Peched van, mert holnap estig nem kerülök windowsos gép közelébe, hogy Small Basicben megírjam, pláne nem grafikus felületen. Itt van FreeBASICben, egyszerű szöveges képernyőn, ezt sem lesz nehezebb lesz átírnod, mint azt a zagyvaságot, amelyik hová tűnt?
dim szam as byte
print "kérek egy kétjegyű számot: "
input szam
if szam > 9 and (szam<100) then
szam = ((szam mod 10) * 10 + szam \ 10) * 2
print szam
else
print "érvénytelen szám!"
end if
Itt egyébként visszaélek azzal, hogy a basic minden hülyeséget fapofával lenyel, anélkül, hogy hibára futna. Például beírod, hogy „galóca”, a fordító meg nem csinál kázust belőle -- nincsen szám, egyszerűen 0 lesz az érték.
A szigorúbb nyelvekre is gondolva tisztességesebb megoldás, ha először szövegesen kéred be, és te alakítod át számmá:
dim szoveg as string
dim szam as byte
print "kérek egy kétjegyű számot: "
input szoveg
szam = val(szoveg)
if szam > 9 and (szam<100) then
szam = ((szam mod 10) * 10 + szam \ 10) * 2
print szam
else
print "érvénytelen szám!"
end if
Csak nehogy megbukj:
TextWindow.Title = "Számfordító"
start:
TextWindow.Write("Kérem a számot: ")
szam = TextWindow.ReadNumber()
if (szam > 9) and (szam<100) then
eredmeny = 2 * (Math.Remainder(szam,10) * 10 + (Math.Floor(szam /10)))
TextWindow.WriteLine("Az eredmény: " + eredmeny)
Else
TextWindow.WriteLine("A szám csak két számjegyű lehet")
TextWindow.Pause()
Goto start
EndIf
Érdekes nyelv, nem ismeri a mod vagy % ez a Math.Remainder() a div helyett is Math.Floor(), a Goto miatt ne szóljatok meg, most láttam a nyelvet először, és a mod keresésére ráment egy rakás időm :)
Javítottam rajta, mert az előző 'megette' a tizedeseket is:
TextWindow.Title = "Számfordító"
start:
TextWindow.Write("Kérem a számot: ")
szam = TextWindow.ReadNumber()
szam = Math.Floor(szam)
if (szam > 9) and (szam<100) then
eredmeny = 2 * (Math.Remainder(szam,10) * 10 + (Math.Floor(szam /10)))
TextWindow.WriteLine("Az eredmény: " + eredmeny)
Else
TextWindow.WriteLine("A szám csak két számjegyű lehet")
TextWindow.Pause()
Goto start
EndIf
Bosszantott a Goto, már szégyenből sem hagyom benne:
TextWindow.Title = "Számfordító"
szam = 0
While szam < 9 Or szam > 100
TextWindow.Write("Kérem a számot: ")
szam = TextWindow.ReadNumber()
szam = Math.Floor(szam)
if (szam > 9) and (szam < 100) then
eredmeny = 2 * (Math.Remainder(szam, 10) * 10 + (Math.Floor(szam / 10)))
TextWindow.WriteLine("Az eredmény: " + eredmeny)
Else
TextWindow.WriteLine("A szám csak két számjegyű lehet")
TextWindow.Pause()
EndIf
EndWhile
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!