Kilences számrendszerben szeretnék felírni bármilyen számot, Pascal-ban miként kell ezt megoldani?
*sóhajt* Ez érdekes lesz, de megpróbálok segíteni. Van ez a néhány sor:
repeat
if d mod 2 = 0 then eredmeny := eredmeny + '0' else eredmeny := eredmeny + '1';
d := d div 2;
until d = 0;
WriteLn(ReverseString(eredmeny));
Ebben van a kulcsa az egésznek. Először is nézzük, hogy alakítasz át egy számot kettesbe papíron. Elosztod 2-vel, a maradékot leírod. Addig teszed, amíg el nem jutsz 0-hoz. Ezután a maradékokat FORDÍTOTT SORRENDBEN írod le, és megvan a számod binárisban. Megsúgom, azért 2-vel kell osztani, mert 2-es számrendszerbe alakítasz. Tehát ha 9-esbe akarsz, akkor 9-el kell osztani.
Most nézd meg a saját programodat. Ez mit teszte le? Hogy a maradék 0-e vagy annál nagyobb. Ez működik, ha csak 0 és 1 lehet a maradék, de ha 0, 1, 2, ... , 8, akkor már egy kcisit kevésbé. Ennek megfelelően alakítsd át.
És arra, amit #7 írt: Valóban, te gondolkodgatsz, de kicst fej nélkül, nekem úgy tűnik, nem értelmezed a kódot, mert amit én írtam, az nem éppen asztrofizika, rájöhettél volna szeritnem magadtól is.
Nem probléma, hogy jeleztem: véletlenül benne felejtettem a kettővel való osztást az átírt kódban és ha ezt átírom, tökéletesen működik? :-)
A kötekedést tartsd meg annak, aki csak kérdez és egyetlen betűt nem ír le csak agresszívkodik hogy kész kódot kér, a házit azonnal oldják meg neki :-)
program project1;
uses sysutils,strutils;
var
d, maradek : longint;
eredmeny : string;
begin
Write('Kerem az atalakitando szamot: ');
ReadLn(d);
eredmeny := '';
repeat
maradek := d mod 9;
if maradek > 0 then eredmeny := eredmeny + inttostr(maradek) else eredmeny := eredmeny + '0';
d := d div 9;
until d = 0;
WriteLn(ReverseString(eredmeny));
ReadLn;
end.
Most már meg vagy nyugodva?
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!