Kezdőoldal » Számítástechnika » Programozás » Pascal programkód. Valaki...

Pascal programkód. Valaki rátudna nézni, hogy lehet-e rövidebben megoldani a feladatot?

Figyelt kérdés

A feladat az volt, hogy egy szöveges állományból olvassunk be egy-vagy két számjegyű számokat, amelyeket szóközök választanak el egymástól.


Az én megoldásom:


program project12345;

const c=100;

type

q=record

ho:integer;

hp:integer;

hmp:integer;

bo:integer;

bp:integer;

bmp:integer;

t:integer;

end;

tomb=array[1..c] of q;

var

r,i,j,d:integer;

f:text;

k:tomb;

s:string;

begin

assign(f,'hivasok.txt');

reset(f);


i:=1;


while not eof(f) do begin

readln(f,s);

d:=0;

r:=1;

val(COPY(S,d,r), (k[i].ho),j);

if ord(s[r+1])<>32 then begin

r:=2;

val(COPY(S,d,r), (k[i].ho),j);

inc(d);

end;



val(COPY(S,3+d,r), (k[i].hp),j);

if j<>0 then begin


r:=1;

val(COPY(S,3+d,r), (k[i].hp),j);

end;

if ord(s[3+d+1])<>32 then begin

r:=2;

val(COPY(S,3+d,r), (k[i].hp),j);

inc(d);

end;



val(COPY(S,5+d,r), (k[i].hmp),j);

if j<>0 then begin

r:=1;

val(COPY(S,5+d,r), (k[i].hmp),j);

end;

if ord(s[5+d+1])<>32 then begin

r:=2;

val(COPY(S,5+d,r), (k[i].hmp),j);

inc(d);

end;



val(COPY(S,7+d,r), (k[i].bo),j);

if j<>0 then begin

r:=1;

val(COPY(S,7+d,r), (k[i].bo),j);

end;

if ord(s[7+d+1])<>32 then begin

r:=2;

val(COPY(S,7+d,r), (k[i].bo),j);

inc(d);

end;



val(COPY(S,9+d,r), (k[i].bp),j);

if j<>0 then begin

r:=1;

val(COPY(S,9+d,r), (k[i].bp),j);

end;


if ord(s[9+d+1])<>32 then begin

r:=2;

val(COPY(S,9+d,r), (k[i].bp),j);

inc(d);

end;



val(COPY(S,11+d,r), (k[i].bmp),j);

if j<>0 then begin

r:=1;

val(COPY(S,11+d,r), (k[i].bmp),j);

end;


if ord(s[11+d+1])<>32 then begin

r:=2;

val(COPY(S,11+d,r), (k[i].bmp),j);

inc(d);

end;

readln(f, k[i].t);


inc(i);

end;


close(f);

readln;

end.


Nem lehetne valami ciklussal lerövidíteni?



2015. ápr. 6. 15:17
1 2 3 4
 1/33 A kérdező kommentje:
Ja és hat szám van egy sorban és fontos, hogy a sorrendet később is megtudjuk mondani.
2015. ápr. 6. 15:26
 2/33 anonim ***** válasza:
De, le lehet rövidíteni ciklussal, mert ha jól látom ugyanazt végzed el ismételve, csak más paraméterekkel.
2015. ápr. 6. 15:44
Hasznos számodra ez a válasz?
 3/33 tabaki ***** válasza:
Bocs, most nincs időm átnézni, de ha tényleg csak ennyi a feladat, akkor első blikkre teljesen érthetetlen, hogy mi ez az elképesztő tömegű összevisszaság, és igen, nyilvánvaló, hogy a tökegyforma részeket ciklussal kéne megoldani.
2015. ápr. 6. 16:17
Hasznos számodra ez a válasz?
 4/33 A kérdező kommentje:
Hogyan kellene egyszerűen megoldani a feladatot?
2015. ápr. 6. 16:43
 5/33 anonim ***** válasza:
65%
Undorító egy kódot sikerült írnod, gratulálok.
2015. ápr. 6. 17:07
Hasznos számodra ez a válasz?
 6/33 tabaki ***** válasza:
100%

"Hogyan kellene..."

Igen, érthető, hogy erre vagy kíváncsi, de pont ahhoz kellene az idő, hogy ebből a tohuvabohuból kihámozzuk, hogy mit akarsz egyáltalán. Hacsak SimkoL ide nem téved addig, nem hiszem, hogy más kedvet érezne erre az önkínzásra. Légy türelemmel.

2015. ápr. 6. 17:28
Hasznos számodra ez a válasz?
 7/33 ejbenjaro ***** válasza:

Itt egy rövidebb verzió: [link]

Free Pascalban készült. A rekordodban a t elemet nem igen tudtam hova tenni, így bár benne hagytam, de nem használtam fel. Ha konkrétabb feladatleírást adsz lehet, hogy szebben is meg lehet oldani.

2015. ápr. 6. 17:54
Hasznos számodra ez a válasz?
 8/33 SimkoL ***** válasza:

Hazaértem:) A kód láttán azt hiszem először, hogy sok bort ittam. Akkor egy pár kérdés:

- ha egy sor hat számot tartalmaz miért hét mező van a rekordban

- kell-e egyáltalán a rekord típusú tömb, nem elég egy sima tömbbe 'benyalni' és 'reptiben' számolni ha szükség van rá, hogy hányadik sor

- lehet-e a Free Pascal 'előnyeit' kihasználni

Hirtelen ennyi.

2015. ápr. 6. 18:01
Hasznos számodra ez a válasz?
 9/33 SimkoL ***** válasza:
Na úgy látom már az írás is lassan megy most :) mire leírom ejbenjaro meg is oldotta.
2015. ápr. 6. 18:04
Hasznos számodra ez a válasz?
 10/33 A kérdező kommentje:

A kód a 2006-os érettségi feladatsor utolsó feladatának [link]


egy sajátos megoldásának egy részlete. A lényeg csak annyi lett volna, hogy hogyan lehet megoldani, hogy a beolvasott számjegyről nem tudjuk, hogy egy-vagy két számjegyű-e. A válaszokat köszönöm. Sajnos az alternatív megoldás logikáját nem értem, mert olyan függvényeket használ, amelyek nem tudom, hogyan működnek, de a ma estémet azzal töltöm, hogy utánuk nézek.

2015. ápr. 6. 18:14
1 2 3 4

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!