Kezdőoldal » Számítástechnika » Programozás » Mi hiányzik ebből az algoritmu...

Mi hiányzik ebből az algoritmusból? (FPC)

Figyelt kérdés

Dinamikus tömbbel szeretnék megoldani egy feladatot. Deklarálom a dinamikus tömböt, helyet foglalok neki(egy másik változót használok rá, amit folyamatosan növelek) ÉS a feladat végén kiíratom a tömb elemszámát. Na az a hiba hogy exitcode 201, vagyis a deklarálásnál rontottam el valamit, vagy a hely foglalásnál. Nem tudom. Itt a a kód:

Program valami;

Uses Crt;

Var i,j,szam: Longint;

tomb:array of Byte;

oszto,tombmeret: Longint;

Procedure beker;

Begin

Writeln('Kerek egy szamot');

Readln(szam);

Writeln('Melyik szamrendszerbe szeretned atvaltani?');

Readln(oszto);

End;

Procedure atvaltas;

Begin

tombmeret:=0;

j:=0;

Repeat

inc(j);

inc(tombmeret);

SetLength(tomb,tombmeret);

tomb[j]:=szam mod oszto;

szam:=szam div oszto;

Until szam<oszto;

inc(j);

tomb[j]:=szam;

For i:=j downto 1 do

Begin

Case length(tomb[i]) of

10:Write('A');

11:Write('B');

12:Write('C');

13:Write('D');

14:Write('E');

15:Write('F');

Else Write(tomb[i]);

End;

End;

End;

Begin

Clrscr;

beker;

Writeln('A(z) ',szam,', ',oszto,'-es(-as) szamrendszerben:');

atvaltas;

Writeln('Tombmeret: ',Length(tomb));

Readkey;

End.



2014. máj. 30. 16:33
 1/7 A kérdező kommentje:
Annyi hogy a case elágazásnál nem kell az hogy length.
2014. máj. 30. 16:35
 2/7 anonim válasza:
tomb:array és utána hogy [mettől meddig] of valami;
2014. máj. 30. 16:52
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

@16:52 Dinamikus tömbnél nem kell megadni tartományt.


"Case length(tomb[i]) of"

Kapásból nem jó, a tomb[i]-re akkor lenne jó a length ha tomb[i] egy tömb lenne.

2014. máj. 30. 17:39
Hasznos számodra ez a válasz?
 4/7 anonim válasza:

Mi nem használtuk a procedure begin end témát. Volt elején BEGIN, végén END oszt kész. Kis nézelődés után rájöttem ,hogy mire való. Szerintem azért ne vezess procedurát mert egyszer használni fogod.

Pascalban is érdemes jelőlni a begin end zárójeleket szóközzel. Minden beginnél az enter után nyomj egy szóközt. A következő enter már ahhoz a bekezdéshez fog igazodni ha jól emlékszem. Így átlátható.

2014. máj. 30. 17:45
Hasznos számodra ez a válasz?
 5/7 ejbenjaro ***** válasza:
A dinamikus tömb nullától indexelődik, tehát az első eleme a nulladik lesz. A programodban mindjárt az első alkalommal túlindexelsz ezért hibát kapsz.
2014. máj. 30. 18:38
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

K0szi az infót, nem is tudtam hogy mennyitől indexelődik.

Ez a kódban hogy nézne ki? A fentebb említett programban.

Ez lenne az első "dinamikus tömbös" feladatom. Nem iskolai anyag, csak sokkal szebb megoldás mint amit tanítanak.

Értem én hogy van ahol megvan határozva mekkora tömb elemszáma, ott azt is fogom használni,de ahol nem fix ott ez sokkal szebb mint egy "sokelemű" tömb. K0szi a választ előre is :)

2014. máj. 30. 19:32
 7/7 ejbenjaro ***** válasza:

Valahogy így nézne ki:


Program valami;


{$mode objfpc}{$H+}


Uses Crt;


Var

i,j,szam: Longint;

tomb:array of Byte;

oszto,tombmeret: Longint;


Procedure beker;

Begin

Writeln('Kerek egy szamot');

Readln(szam);

Writeln('Melyik szamrendszerbe szeretned atvaltani?');

Readln(oszto);

End;


Procedure atvaltas;

Begin


tombmeret:=0;

j:=0;


Repeat

inc(tombmeret);

SetLength(tomb,tombmeret);

tomb[j]:=szam mod oszto;

szam:=szam div oszto;

inc(j);

Until szam=0;


For i:=length(tomb)-1 downto 0 do

Case tomb[i] of

10:Write('A');

11:Write('B');

12:Write('C');

13:Write('D');

14:Write('E');

15:Write('F');

Else Write(tomb[i]);

End;


End;


Begin

Clrscr;

beker;

Writeln('A(z) ',szam,', ',oszto,'-s szamrendszerben:');

atvaltas;

writeln;

Writeln('Tombmeret: ',Length(tomb));


setlength(tomb,0);

Readkey;

End.


Infó a tömbökről: [link]

Külön a dinamikus tömb: [link]

2014. máj. 30. 22:58
Hasznos számodra ez a válasz?

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!