Kezdőoldal » Számítástechnika » Programozás » Lazarus (Free Pascalban) hogy...

Lazarus (Free Pascalban) hogy kell szavakat sorbarendezni? (Nagyjából kész van, de csak a hosszokat tudom kiiratni. )

Figyelt kérdés

Na szóval,így néz ki a kódom,és a szót kéne kiiratni egymás alá,mégpedig hossz szerint. De nekem egymás alá azt irja,hogy 2 2 2 2 3 3 ,ha meg a kiirásnal t[i].szot irok akkor,meg simán az alap text fájlt rakja bele.

Mit kell még sorbarendezni?


begin

assign(ki,'szavak.txt');

rewrite(ki);

for i:=1 to n-1 do

begin

for j:=i+1 to n do

if t[j].hossz<t[i].hossz then

begin

c:=t[j].hossz;

t[j].hossz:=t[i].hossz;

t[i].hossz:=c;

end;


end;

t[i].szo:=t[i].hossz;

for i:=1 to n do

writeln(ki,t[i].szo);

close(ki);


2014. márc. 13. 16:19
 1/9 A kérdező kommentje:

Javítva:*

begin

assign(ki,'szavak.txt');

rewrite(ki);

for i:=1 to n-1 do

begin

for j:=i+1 to n do

if t[j].hossz<t[i].hossz then

begin

c:=t[j].hossz;

t[j].hossz:=t[i].hossz;

t[i].hossz:=c;

end;


end;

for i:=1 to n do

writeln(ki,t[i].hossz); {ide ha t[i].szot irok nem jól irja ki.);

close(ki);

2014. márc. 13. 16:20
 2/9 uno20001 ***** válasza:
Az egész(!) kódot láthatnánk?
2014. márc. 13. 16:23
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
Ez egy részfeladat(érettségi),elég a teljes feladat,meg a főprogram váza?
2014. márc. 13. 16:29
 4/9 A kérdező kommentje:

program erettsegi;

uses crt;

const maxn=600;

type

szavak=record

szo:string[15];

hossz:integer;

end;


tomb=array[1..maxn]of szavak;

var

t:tomb;

n:integer;

procedure Feladat1(var t:tomb;var n:integer);

var

be:text;

i:integer;

begin

assign(be,'lista.txt');

reset(be);

i:=0;

while not eof(be) do

begin

i:=i+1;

readln(be,t[i].szo);

t[i].hossz:=length(t[i].szo);

end;

close(be);

n:=i;


end;

-----------Feladatok és jön

procedure Feladat6(t:tomb;n:integer);

var

ki:text;

i,c,j,d:integer;

begin

for i:=1 to n-1 do

begin

for j:=i+1 to n do

if length(t[j].szo)<length(t[i].szo) then

begin

c:=t[j].hossz;

t[j].hossz:=t[i].hossz;

t[i].hossz:=c;

end;


end;

assign(ki,'szavak.txt');

rewrite(ki);

for i:=1 to n do

writeln(ki,t[i].szo);

close(ki);

end;

2014. márc. 13. 16:30
 5/9 A kérdező kommentje:
És a problémám,hogy a szavakat hosszuk szerint kéne kiirni text fájlba,de én ugye sorbarendeztem a hosszukat és a hosszukat irja ki, ha kiirásnál t[i].hossz-t irok,viszont ha t[i].szo-t irok akkor meg az alap filet irja ki.
2014. márc. 13. 16:32
 6/9 anonim ***** válasza:
Talán mert nem a hosszokat kéne rendezni, hanem a hosszok szerint kéne rendezni.
2014. márc. 13. 18:34
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
Hogyan?
2014. márc. 13. 18:42
 8/9 anonim ***** válasza:

c:=t[j].hossz;

t[j].hossz:=t[i].hossz;

t[i].hossz:=c;


Ennél a résznél keresendő a probléma.

2014. márc. 13. 19:09
Hasznos számodra ez a válasz?
 9/9 coopper ***** válasza:

Szia.


Igaza van az előttem szólónak.


A következő a gond : record adatszerkezeted van. Cserekor Te csak a rekord egy elemét cseréled meg (a hosszát). A record röbbi elemet is meg kellene cserélni (Ha tiz elem van egy rekorban akkor mind a tiz elemet meg kell cserélni)


De a legtisztább az lenne ha magát a rekordot próbálnád cserélni (és csak akkor az elemeit, ha maga a rekordcsere nem megy, de szerintem fog menni)


Sok sikert.

Üdv.

2014. márc. 13. 20:27
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!