Lazarus (Free Pascalban) hogy kell szavakat sorbarendezni? (Nagyjából kész van, de csak a hosszokat tudom kiiratni. )
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);
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);
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;
c:=t[j].hossz;
t[j].hossz:=t[i].hossz;
t[i].hossz:=c;
Ennél a résznél keresendő a probléma.
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.
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!