Hol van a szemantikai hibám a pascal kódban?
Szóval tudom, hogyha a ci értékéből nem vonnék ki egyet és a c[ci+(i-bi)] akkor működne... de nem értem, hogy az én megoldássommal miért nem ugyan ezt végzi el? A program célja, hogy a és b tömből csinál egy c tömböt, a számok szerint növekvő sorrendben...
program gyakorlas2;
uses crt;
const an=5;
bn=5;
cn=an+bn;
var a:array [1..an] of integer=(8,9,21,24,26);
b:array [1..bn] of integer=(11,12,23,28,30);
c:array [1..cn] of integer;
i,ai,bi,ci:integer;
begin
clrscr;
randomize;
ai:=1;
bi:=1;
ci:=1;
repeat
if a[ai]<b[bi] then
begin
c[ci]:=a[ai];
inc(ai);
end
else
begin
c[ci]:=b[bi];
inc(bi);
end;
inc(ci);
until (ai>an) or (bi>bn);
if (ai>an) then
begin
for i:=bi to bn do c[ci+(i-bi)]:=b[i];
end
else
begin
for i:=ai to an do c[ci+(i-ai)]:=a[i];
end;
for i:=1 to an do write(a[i],', ');
writeln();
for i:=1 to bn do write(b[i],', ');
writeln();
for i:=1 to cn do write(c[i],', ');
writeln();
readln();
end.
Szia.
Bemásoltam Borland paskálba, nekem müködik a következő javitások után :
Változóknál :
a:array [1..an] of integer = (8,9,21,24,26);
b:array [1..bn] of integer=(11,12,23,28,30);
var
c:array [1..cn] of integer;
Illetve a kiirásnál :
for i:=1 to an do write(a[i],', ');
writeln;
for i:=1 to bn do write(b[i],', ');
writeln;
for i:=1 to cn do write(c[i],', ');
writeln;
readln;
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!