Kezdőoldal » Számítástechnika » Programozás » Pascal: egy string karaktereit...

Pascal: egy string karaktereit szeretném számjegyekre bontani, kis segítséget kérhetek? (bővebben lent)

Figyelt kérdés

Az "strtoint" és hasonlók nélkül szeretném megoldani, kizárólag osztogatással...

Kétjegyű számoknál szépen működik (az hogy fordítva írja ki, nem lényeg, mert azt meg tudom oldani), de háromjegyűeknél nem akar működni...

Számjegyenként van szükségem az adott számra és nem szeretném ha két számjegyűt kiírna.

Hiába teszek be bármilyen feltételt, nem jó.

Netán úgy kellene megoldani, hogy intervallummal megadom, hogy miként ossza le, ha 0..9, 10.. 99, stb intervallumba esik a szám?

Hogy a legegyszerűbb, hogy működjön?


Program szamjegy_bontas;

var

s : string;

i, szam, maradek : byte;

begin

ReadLn(s);

for i := 1 to Length (s) do

begin

szam := Ord(s[i]);

Repeat

maradek := szam mod 10;

if maradek > 10 then begin

maradek := maradek div 10;

writeln(maradek);

szam:=maradek;

end

else

writeln(maradek);

maradek:= szam div 10;

writeln(maradek);

until(maradek>0);

end;

end.



2015. máj. 18. 14:16
 1/8 anonim ***** válasza:

Korábban írt valaki egy ügyes megoldást, csak nem találom. A lényeg, hogy balról olvasod be a karaktereket és tárolod az értékét az eredmény változóban. Ha van második karakter, akkor az előző eredményt szorzod tízzel és hozzáadod az újat. Ezt addig csinálhatod, amíg vannak karakterek.


4567 ->

4

4*10 + 5 = 45

45*10 + 6 = 456

456*10 + 7 = 4567

2015. máj. 18. 14:49
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Ennek 2-3 jegyes számok esetén is kellene működnie, a megoldásban nemcsak egyjegyű számokat használt az illető?
2015. máj. 18. 15:00
 3/8 A kérdező kommentje:
Itt nem tudok külön karaktereket olvasni, egybefüggő két és háromjegyű számok vannak amelyeket matematikai műveletekkel kellene felbontani.
2015. máj. 18. 15:15
 4/8 anonim ***** válasza:
Nem értem. A progidban is karakterekre bontod a sztringet. Vagy hogy akarsz egy egész sztringen matematikai műveletet végrehajtani?
2015. máj. 18. 15:26
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

Igen, így szeretném. Viszont a s[i] nem egy karakterre hivatkozik, hanem egy ascii kódra.

szam := Ord(s[i]);

Kapok egy ASCII kódot, a beírt karakter ASCII kódját, amit nem tudok (balról jobbra" olvasni, mert egyetlen egységként van kezelve, mint bármilyen két vagy háromjegyű szám és ezt csak "mod" és "div" műveletekkel tudom felbontani számjegyekre.

Tehát ha mondjuk a programnak adok egy "a" betűt, akkkor a s[i] amire hivatkozom egy "97" ASCII kóddal lesz egyenlő.

2015. máj. 18. 15:38
 6/8 anonim ***** válasza:
s[i] - 48 és jó lesz a számokra.
2015. máj. 18. 16:27
Hasznos számodra ez a válasz?
 7/8 SimkoL ***** válasza:

Vesszek meg nem értelek mit akarsz. Ez:

program Project1;


var szamtomb : array of byte;

i, n, k : integer;


begin

n := 123456789;

i := -1;

while n > 0 do

begin

Inc(i);

SetLength( szamtomb, i + 1);

szamtomb[i] := n mod 10;

n := n div 10;

end;

for k := 0 to i do WriteLn(szamtomb[k]);

ReadLn;

SetLength( szamtomb, 0);

end.

szétdobja neked egy tömbbe a számokat, de mit akarsz a karakterekkel ?

2015. máj. 18. 19:53
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
A bevitt karaktereket számjegyeikre bontani, de már közben megoldottam. :-)
2015. máj. 18. 20:09

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!