Hogyan kell Microsoft Small Basic-ben a számjegyeket felcserélése?
Elemeket nagyon könnyű felcserélni. Nem értek a Small Basichez, de ez általánosan jó megoldás:
s:=A[i];
A[i]:=A[j];
A[j]:=s;
"A" tömb i és j indexű elemének felcserélése.
Innentől oldd, meg, tudnod kell. ;)
Hát, ez csuda informatívra sikeredett, de azért másképp is elmondom.
Két változó tartalmát úgy cserélheted fel, hogy egy harmadik segédváltozót is igénybe veszel. Ekkor a lépések:
1. segéd = egyik
2. egyik = másik
3. másik = segéd
Az egyik és másik változóba természetesen a szám számjegyeit tedd be. Hogy azokat szöveggé alakítva szerzed meg, vagy maradékos osztást alkalmazol, az már a te dolgod, én sem ismerem a Small Basicet.
A billentyűről szöveget kapsz, ami elvileg egy karaktertömb. Legalábbis a legtöbb nyelvben. Próbáld ki, hátha mégis működik a kollégák megoldása.
De ha meg egész számként tárolod, akkor a maradékképzés és egészosztás segítségével számjegyekre bonthatod. Kétjegyű számoknál nem is kell ciklusba tenned.
@10:41;
Nem hülye vagy, csak lusta átgondolni, hogy miért ajánlgattam a maradékos osztást. Mégis, mi szükség volna rá, ha eleve külön kérnéd be a számjegyeket?
Tehát: Tételezzük föl, hogy nem akarod szöveggé alakítani a számot, hanem az értéke alapján végeznéd el a cserét. Mit jelent az, hogy kétjegyű a szám? Gondolom, tízes számrendszerről beszélünk, akkor az első számjegy egy tízzel beszorzott számot jelent, a második pedig egy eggyel beszorzottat, vagyis a számjegy leolvasható értékét. Ha tehát egy kétjegyű számot tízzel osztasz, az eredmény az első számjegy értéke lesz, a maradék pedig a másodiké. A fenti módon bemutatott cserélő eljárást nem is kell alkalmaznod, csak a második számjegyet beszoroznod tízzel, és az elsőt hozzáadnod.
Kábé így: Beolvastad a számot, utána
EGYIK = SZAM \ 10
MASIK = SZAM mod 10
SZAM = MASIK * 10 + EGYIK
De megúszhatod egyetlen változóval is, ha összevonod a műveleteket:
SZAM = (SZAM mod 10) * 10 + SZAM \ 10
A fenti sorban figyelembe vettem a szorzás/osztás prioritását az összeadáshoz képest, biztonsági zárójelezéssel talán tisztább:
SZAM = ((SZAM mod 10) * 10) + (SZAM \ 10)
Én ugyan FreeBASICben próbáltam ki, de szerintem Small Basicben is működnie kell.
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!