Turbo Pascal Vektor feladatoknál elakadtam, tudsz segíteni?
145.) készítsen eljárást,amely egy vektor elemeit ciklikusan eggyel jobbra mozgatja úgy,hogy az utolsó elem az első helyen lépjen be!
147.) készítsen eljárást, amelyik egy vektor elemeit ciklikusan egy megadott értékkel mozgatja jobbra!
148.) készítsen eljárást,amelyik egy vektor elemét törli úgy,hogy a többi elemet eggyel balra mozgatja!
150.) készítsen eljárást,amelyik egy vektor egy tetszőleges értékét törli (a torlendo elem indexet parameterben kapja az eljárás)!
151.) készítsen eljárást,amely egy vektorba egy új értéket szúr be az első helyre(a tobbi adatot eggyel jobbra kell mozgatni)!
Aki tudna esetleg segíteni valamelyikben?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Egyáltalán nem jó. Nem sértegetésből írom, de ez olyan messze van a jó megoldástól mint Makó Jeruzsálemtől.
writeln('a[',i,'] ',i); Nem is a[i] elemet értékét íratod ki hanem i értékét (Az részlet kérdés hogy pont annyi)
Akkor már inkább így lenne jó nem?
writeln('a[',i,'] ',a[i]); (Mondjuk én nem így íratnám ki. Elég lenne write(a[i],',') majd a végén writeln )
Mozgatáskor mit keres ilyen utasítás hogy a[i]:=i ?
Amit te csináltál mozgatás helyett az az hogy függetlenül hogy mi van a tömbbe az utolsó elemet az elsőbe másolja a[10]:=a[1] majd 1.től a 9. elemig feltölti annak sorszámával függetlenül attól hogy mi volt az eredeti értékük.
for i:=1 to 9 do
begin
a[i]:=i;
...
writeln('a[',i,'] ',i+1) helyett itt writeln('a[',i,'] ',a[i]); lenne helyes.
Külön kéne feltöltő eljárás(random értékekkel tölteném fel a tömböt), külön kiíró eljárás és külön mozgató eljárás. (És megsúgom hogy a bemeneti paramétereken keresztül kéne/illene megkapnia az eljárásoknak a tömböt, ez persze nem muszáj ... hosszú)
megpróbáltam újból megírni....megnéznéd,hogy így jo e lessz:
program ciklusvektor;
uses crt;
var i:integer;
a:array[1..10] of integer;
b:array[1..10] of integer;
procedure feltoltes;
begin
for i:=1 to 10 do
begin
a[i]:=i;
write('a[',i,'] ',a[i],' ');
end;
end;
procedure pakol;
begin
for i:=1 to 10 do
begin
b[i]:=a[i*1];
write('b[',i,'] ',b[i],' ');
end;
end;
procedure csere;
begin
b[10] := a[1];
for i :=1 to 9 do
begin
b[i]:= a[i+1];
end;
end;
procedure kiiras;
begin
for i:=1 to 10 do
begin
writeln('b[',i,'] ',b[i]);
end;
end;
BEGIN
Clrscr;
feltoltes;
writeln;
pakol;
csere;
writeln;
writeln;
kiiras;
readln;
END.
program ciklusvektor;
uses crt;
var i:integer;
a:array[1..10] of integer;
b:array[1..10] of integer;
procedure feltoltes;
begin
for i:=1 to 10 do
begin
a[i]:=i;
write('a[',i,'] ',a[i],' ');
end;
end;
procedure pakol;
begin
for i:=1 to 10 do
begin
b[i]:=a[i*1];
write('b[',i,'] ',b[i],' ');
end;
end;
procedure csere;
begin
b[10] := a[1];
for i :=1 to 9 do
begin
b[i]:= a[i+1];
end;
end;
procedure kiiras;
begin
for i:=1 to 10 do
begin
writeln('b[',i,'] ',b[i]);
end;
end;
BEGIN
Clrscr;
feltoltes;
writeln;
pakol;
csere;
writeln;
writeln;
kiiras;
readln;
END.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Minek másoltad be ugyan azt 2x?
b[i]:=a[i*1]; Minek szorozni 1-el?
"készítsen eljárást,amely egy vektor elemeit ciklikusan eggyel jobbra mozgatja úgy,hogy az utolsó elem az első helyen lépjen be! "
Az a nevű tömb változatlan marad ... b segéd tömböt vissza kellet volna másolni a-ba, de még akkor sem jó mert balra léptetted, de meg lehetne oldani segéd tömb nélkül is.
Ehhez az akkor lenne jó ha az lenne a feladat,hogy
készítsen eljárást,amely egy vektor elemeit úgy másolja át egy másik ugyan akkora vektor-ba hogy az eredeti vektor elemei a másolt vektor elemei ciklikusan eggyel balra mozgatva legyenek az eredeti vektorhoz képest úgy,hogy az utolsó elem az első helyen lépjen be!
(EZT még Gyakorolni Kell!)
Ha b-t visszamásoltad volna a-ba és a feladat jobb helyett balt írt volna akkor azt mondom hogy meg csinálja a program amit kell, de én segéd tömb nélkül oldottam volna meg, de tőled kezdőként ezt nem vártam el.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Oké megoldottam, de a legjobb ha te jösz rá a megoldásra illetve te oldod meg, ha a megoldáshoz vezető utat ötletet, tanácsot ha kérsz akkor is végül te oldod meg.
Ez alapján a 147-es feladat pofon egyszerű.
Hobbiból csinálod vagy előre készülsz vagy ... ?
Megprobalkoztam a 147 sel:
Tanultam már két éve egy évig középben Pascal(masik even Delphit)...ősztől megyek Info fősulira és ott C vel fogjuk kezdeni. Neki álltam a Keingh R. C konyvnek de nagyon magas volt es inkabb elkezdtem a Pascalt. Azt irtak meg regebben hogy tanuljam meg rendessen a Pascalt aztan a C...valki nem helyeselte...
Sokkal nehezebb egy C vagy véleményed szerint tul gyenge vagyok en a programozáshoz? (érdekelni érdekel,szeretném ha tudnék programozni...de lehet logikám,felfogásom nincs hozzá ?!)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
23:30
Bocs, de ennek véletlenül sincs semmi köze a helyes megoldáshoz. Nem az volt a feladat, hogy minden elem értékét csökkentsd 1-el.
"Tanultam már két éve egy évig középben Pascal(masik even Delphit)...ősztől megyek Info fősulira és ott C vel fogjuk kezdeni."
Véletlenül nem Szegedre? Ott c-vel kezdenek. Ott programozás alapjain ha a program kimenete nem pont az mint a feladat specifikációjának megfelelő a bemenet függvényében, ha csak annyi a különbség hogy az utolsó sor után nincs sortörés mind a 20 teszt esetre és nem jösz rá akkor 0 pont.
"Sokkal nehezebb egy C"
Kezdőknek biztos, meg amúgy is nehezebb, a pascal biztonságosabb típusosabb, típus biztosabb, a pascal elterjedhetett volna a c helyett, de történelmileg nem így alakult.
A ANSI c az hardver közelibb,(hordozható assembly,) "megmutatja" pl hogy minden számítógépes adatstruktúra szám vagy azok sorozata, pl. egy string az egész számok sorozata ...
"vagy véleményed szerint tul gyenge vagyok en a programozáshoz? "
(érdekelni érdekel,szeretném ha tudnék programozni...de lehet logikám,felfogásom nincs hozzá ?!)
Ha így folytatod akkor igen, rá kell érezni az egész logika, fősulin már az 1. zh ahol programot kell írni nehezebb feladatok vannak ezeknél és nem pascalba és nincs rá egész napod. Mindent jól csináltál csak egy dolgot nem azt, hogy nem gondolkoztál.
Ez olyan mint egy legó elemi építőköveid vannak és ezekből kell felépíteni nagyobb építőköveket, végül megkapod azt a programot amit szándékoztál (ha jól csináltad) ...
Ne add fel!
Próbáld meg még 1x úgy hogy gondolkozol is!
147.) készítsen eljárást, amelyik egy vektor elemeit ciklikusan egy megadott értékkel mozgatja jobbra!
egy megadott éték = bekérjük a felhasználótól
mozgatjuk jobbra = a[i]:=a[i - bekért érték];
így kéne megoldani?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Valami ilyesmi, vagy pedig ilyen is lehet benne. De ez nem az egész megoldás.
Én azt javaslom neked megint, hogy rajzold le a dolgot. Vagyis ábrázolj egy vektort, majd egy másikat, ahol az elemek egyel jobbra vannak téve.
Ez után egy másikat, ahol kettővel vannak jobbra téve.
pl.
alap vektor:
1,2,3,4,5
1-el jobbra:
5,1,2,3,4
2-vel jobbra:
4,5,1,2,3
A helyes megoldás érdekében figyeld meg, hogy mi lesz, ha 5-el jobbra viszed ezt az 5 elemű vektort. És ha 6al?
Ez után rájöhetsz, hogy ez a feladat megoldható a 145.ös feladatban leírt eljárás ismétlésével. Ez egy nem túl optimális megoldás. De mindenképpen először ezt írd meg! Ha ennél jobb megoldást szeretnél, akkor ez javítható úgy, hogy elgondolkodsz azon, hogy a fentebbi két kérdésem válaszával hogyan tudnád gyorsítani a folyamatot.
Viszont még ez sem lesz optimális. De azért ezt is írd meg! (Gyakorlat teszi a mestert. :P)
Ez után pedig próbálj meg egy ennél optimálisabb megoldást keresni. Ötletnek használhatod a másik feladat eljárását, abból már kiindulhatsz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!