Hogyan kell ezt a feladatot megoldani Free Pascalban?
Készítsen eljárást, amelyik egy vektor adott elemét megcseréli az utána következővel! (Használjon közbenső változókat!)
Előre is köszönöm! :)
Az x az a bizonyos közbenső változó, ami a feladatkiírásban szerepel. Az elv pedig az, hogy a felcserélendő egyik elemet úgymond kimentem az x-be. Majd a kimentett elemet felülírom a másik elemmel. Ezt követően pedig, hogy a csere végbemenjen az x tartalmával írom felül az indexet követő tömbelemet.
Jobban nem tudom neked megfogalmazni. De láthatod, hogy nem kell pilótavizsga a megértéséhez.
Azonban sajnos a tetszőleges elem tetszőleges két tagjánál megakadtam: :(
Uses crt;
var i:integer;
v: array[integer] of integer;
Procedure adatbekeres;
Var j:integer;
Begin
Writeln('Add meg a vektor elemit, kil‚p‹k˘d: 1-n‚l kisebb sz m!');
While i>0 do
begin
Writeln('A vektor ',i,'. eleme: ');
Readln(v[i]);
end;
Writeln('Akkor a te elemeid: ');
for j:=1 to i do
Write(v[i],', ');
End;
Procedure csere;
Var a,b,j,x:integer;
Label ujra;
Begin
ujra:
Writeln('H nyadik elemet cser‚ljem?');
Readln(a);
Writeln('H nyadikra cser‚ljem?');
Readln(b);
If (a>=1) and (a<=i) and (b>=1) and (b<=i) and (a<>b) then goto ujra
else
begin
x:=v[a];
v[a]:=v[b];
v[b]:=x;
end;
Writeln('Akkor az Łj sorrend: ');
For j:=1 to i do
Write(v[j],', ');
End;
BEGIN
ClrScr;
Adatbekeres;
writeln('A folytat shoz nyomj ENTER-t!');
Readln;
csere;
Writeln('A kil‚p‚shez nyomj entert!');
Readln;
END.
Mi lehet a hiba? :O
program project1;
uses Crt;
var
i: integer;
v: array[1..100] of integer;
procedure Adatbekeres;
var
j, hiba: integer;
s: string;
begin
Writeln('Add meg a vektor elemit, kilépőkód: "Q" !');
i := 1;
repeat
Write('A vektor ', i, '. eleme: ');
Readln(s);
Val(s, v[i], hiba);
if not (hiba <> 0) then Inc(i);
until UpCase(s[1]) = 'Q';
Dec(i);
Writeln('Akkor a te elemeid: ');
for j := 1 to i do Write(v[j], ', ');
end;
procedure Csere;
var
a, b, j, x: integer;
begin
a := 0;
b := 0;
while (not (a in[1..i])) or (not (b in[1..i])) or (a = b) do
begin
Write('Hányadik elemet cseréljem: ');
Readln(a);
Write('Hányadikra cseréljem: ');
ReadLn(b);
end;
x := v[a];
v[a] := v[b];
v[b] := x;
Writeln('Akkor az új sorrend: ');
for j := 1 to i do Write(v[j], ', ');
end;
begin
ClrScr;
Adatbekeres;
WriteLn(#10#13, 'A folytatáshoz nyomj Enter-t !');
Readln;
Csere;
WriteLn(#10#13, 'A kilépéshez nyomj Enter-t !');
ReadLn;
end.
Sajnos az a gond, hogy a könyvben, amiből tanulok, még ilyenek nincsenek (Val, Upcase, Dec, Inc). Tudom, hogy semeddig sem tartana utánanézni, de mivel a feladatot így kell megoldani, hogy ezeket még nem ismerem. Az előző megoldásomban már magamtól is több hibára rájöttem, most jelenleg annál a bizonyos adatbekeres eljárásnál itt tartok:
Procedure adatbekeres;
Var j:integer;
Begin
Writeln('Add meg a vektor elemit, kil‚p‹k˘d: 0-n l kisebb sz m!');
i:=0;
While v[i]>(-1) do
begin
i:=i+1;
Writeln('A vektor ',i,'. eleme: ');
Readln(v[i]);
end;
Writeln('Akkor a te elemeid: ');
for j:=1 to i do
Write(v[i],', ');
End;
ekkor nekem az utoljára beírt negatív számot adja i-szer...
Bocs, hogy ennyire értetlen vagyok, de magamtól tanulom, illetve szeretnék párhuzamosan a könyvvel haladni, később biztosan majd már máshogy és egyszerűbben is meg tudom oldani :)
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!