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! :)
A vektor az egy tömb. Ennek kell két egymást követő elemét megcserélni.
Eljárás Csere(v:vektor ; index:egész);
segédváltozók:
x: egész
x:=v[index];
v[index]:=v[index+1];
v[index+1]:=x;
eljárás vége
Hát valami ilyesmi lehet. Csak le kell programozni. A cserénél figyelni kell, hogy ha a tömb legmagasabb indexe kerül megadásra, tehát a vektor utolsó eleme, akkor mi történik. Erre nincsen felkészítve a fentebbi vázlat.
Én így oldottam meg, de addig megy, hogy beolvassa az "a" változót. Nagyon kezdő vagyok még, mit rontottam el és miért nem jó úgy? :) (bocs a writeln-ekben lévő ékezetek miatt, csak így tudtam txt-vé átalakítani, de annak most gondolom nincs jelentősége :))
Uses crt;
var v: array[1..5] of integer;
Procedure adatbekeres;
Var i:integer;
Begin
Writeln('Add meg a vektor els‹ 5 elem‚t!');
for i:=1 to 5 do
Begin
Writeln('A(z) ',i,'. elem: ');
Readln(v[i]);
End;
Writeln('Akkor a te elemeid: ');
for i:=1 to 5 do
Write(v[i],', ');
End;
Procedure csere;
Var a,j:integer;
Label ujra;
Begin
ujra:
Writeln('H nyadik elemet cser‚ljem meg a k”vetkez‹vel?');
Readln(a);
If (a<1) or (a>4) then goto ujra
else
begin
Readln(a);
v[a]:=v[a+1];
v[a+1]:=v[a];
end;
Writeln('Akkor az Łj sorrend: ');
For j:=1 to 5 do
Write(v[j],', ');
End;
BEGIN
ClrScr;
Adatbekeres;
Readln;
csere;
Readln;
END.
Kijavítottam:
program cserebere;
Uses crt;
var v: array[1..5] of integer;
Procedure adatbekeres;
Var i:integer;
Begin
Writeln('Add meg a vektor első 5 elemét!');
for i:=1 to 5 do
Begin
Write('A(z) ',i,'. elem: ');
Readln(v[i]);
End;
Writeln('Akkor a te elemeid: ');
for i:=1 to 5 do
Write(v[i],', ');
writeln;
End;
Procedure csere;
Var a,x,j:integer;
Begin
repeat
clrscr;
Write('Hányadik elemet cseréljem meg a következővel?: ');
Readln(a);
until a in [1..4];
x:=v[a];
v[a]:=v[a+1];
v[a+1]:=x;
Writeln('Akkor az új sorrend: ');
For j:=1 to 5 do
Write(v[j],', ');
writeln;
End;
BEGIN
ClrScr;
Adatbekeres;
writeln('A folytatáshoz nyomj ENTER-t!');
Readln;
csere;
writeln('A kilépéshez nyomj ENTER-t!');
Readln;
END.
„utána meg majd olyat kéne, hogy tetszőleges 2 elemet cserélek meg, utána meg, hogy egy n elemű vektor tetszőleges 2 elemét cserélem meg. Vagy ez kezdőnek még túl necces? :)”
Az elv ugyan ez. Tök mindegy, hogy mekkora a vektor. De ha a cserélgetést akarod gyakorolni, akkor pl egy véletlen számokkal feltöltött vektor elemeit rakd növekvő/csökkenő sorrendbe.
Még az eredeti kérdésre egy variáció:
program dinnye;
uses crt;
const
SZOHOSSZMAX = 11;
TOMBHOSSZMAX = 7;
var
betu : char;
szam, csereindex : byte;
csere : string[SZOHOSSZMAX];
tomb : array[1..TOMBHOSSZMAX] of string[SZOHOSSZMAX] =
('elment','apád','dinnyét','lopni','elfelejtett','zsákot','vinni');
BEGIN
ClrScr;
GotoXY(13,3);
Write('Hányadik elemet cseréled a következővel? (0 = Kilépes)');
repeat
GotoXY(15,10);
for szam := 1 to TOMBHOSSZMAX do Write(tomb[szam], ' ');
GotoXY(39,4);
repeat
betu := ReadKey;
szam := Ord(betu)-48;
until szam in[ 0..TOMBHOSSZMAX];
Write(szam);
if szam > 0 then
if szam < TOMBHOSSZMAX then
csereindex := szam + 1
else
csereindex := 1;
csere := tomb[szam];
tomb[szam] := tomb[csereindex];
tomb[csereindex] := csere;
until szam < 1;
ClrScr;
END.
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!