Pascal feladat

Fórumok

Üdv emberek!
Nem értek egy feladatot , szeretném ha segítene benne valaki.
Előre is köszönöm

A feladat:
Generálj 3 számot (ez eddig megy) irasd ki őket válaszd ki a legkisebbet és legnagyobbat. és írasd ki a 3 mal oszható számokat a legkisebbtől a legnagyobbig

hogy kéne kiválasztani legkisebb és legnagyobb számot a generáltakból?
Valaki súgja meg a megoldást please.
Tomcsi1987

Hozzászólások

Hova kell ez a bonyolult feladat? Általános iskola?

Az emelt informatika erettsegi nem, az ez a szint osszetettebb feladatokkal.

Meg iden is van Pascal?

A topiknyito pedig fogja magat es szerezze be a kovetkezo konyvet, alapmu:

Csőke Lajos - Garamhegyi Gábor:
A SZÁMÍTÓGÉP-PROGRAMOZÁS LOGIKAI ALAPJAI
ALGORITMUSOK ÉS ELEMI ADATSZERKEZETEK

3 számra, nehéz az élet...;) Valami építő jellegű tippet is kapj, 2 számra tudsz-e ilyen functiont írni? (min, max kiválasztás)

Ha van egy megoldásod 2 számra pl. min(a,b), azzal hogyan oldanád meg a 3 számos esetet?

Bocs a cikizésért! Egy kis segítség:

Két számot hasonlíts össze, pl

if A > B then {utasítások jönnek ide, ha a feltétel igaz}
else {utasítások, ha a feltételed hamis};

Próbálgasd, ha megérted lépj tovább.

hogy kéne kiválasztani legkisebb és legnagyobb számot a generáltakból?

legkisebb:=elsogeneraltszam;
legnagyobb:=elsogeneraltszam;

Ciklussal végigmész a többi számon, s megvizsgálod őket:
-ha a legkisebb>epp_vizsgalt, akkor legkisebb=epp_vizsgalt
-ha a epp_vizsgalt>legnagyobb, akkor legnagyobb=epp_vizsgalt

ha az a feladat, hogy válaszd ki, az a legtöbb tanárnál azt jelenti, hogy használd a szélsőértékkiválasztás-tételeket. ha nézi a kódot a tanár, akkor arra is kapja a jegyet.

szerk.: milyen tanár ad föl ilyen feladatot?!

:: by BRI.
:: config :: Acer TravelMate // Ubuntu Intrepid
:: tothab [a] gmail [pötty] kom
:: black rose immortal's weblog

nagyon reg volt mar pascal de emlekeim szerint van a math unitban min() meg max() azokkal mar nem nagy ugy kivalasztani :)

És ha nem tanultátok az if-et vagy nem érted:

min(a,b,c)=(a-sqrt((a - b)^2)+b-sqrt((a-sqrt((a - b)^2)+b-2*c)^2)+2*c)/4

persze négyzetre emelés és gyök helyett használhatsz abs-t is, de az csalás, mert abba túl egyértelműen bele van drótozva az "if". ;)

Nem hiszem, hogy ezt quicksort nélkül meg lehetne csináni... három szám közül a legnagyobb... húzós...


if a>b then begin
  max:= a;
  min:= b;
end else begin
  max:= b;
  min:= a;
end;
if c>max then max:=c;
else if c

azt hiszem nem zártad le a code tagot a postodban... ie nem olyan intelligens, hogy kijavítsa megjelenítéskor, mindenkinek kódként látszik a szövege alattad

Most itt lezártam, kíváncsi leszek hogy reagál az ie.
szerk: sikerült lezárni :D
http://album.drag2web.com/Albums/vegyes/hup_code.jpg

Bocs az off-ért...

egyébként..
Király Sándor: A programozás logikája I-II. ha valahol a kérdező útjába került, akkor nem ártana elolvasnia... pár százasba kerül és szerintem remek könyv.

jó eséllyel beszerezhető, mert a google dobott ki 2006os kiadást is...

viszont nem látok olyat, mint ami nekem van: egybe van kötve az I+II rész. Nekem '95-'96-os kiadású, a tartalomjegyzéke olyan mint a frissnek. http://album.drag2web.com/Albums/vegyes/proglog.jpg

Külön kötetként kb 800+800 ft körül láttam. szerk: hopp de ott van "Informatika III" név alatt 1500ért egyben.

ez a kiadó: http://www.graduation.hu/

var tarolo: integer;
szam :array[1..3] of integer;

begin
randomize;

{veletlanszem generalas}
szam[1] := random (100);
szam[2] := random (100);
szam[3] := random (100);

writeln ('A generalt szamok: ',szam[1],',',szam[2],',',szam[3]);

{min max kereses sorbarendezessel}

if szam[1] > szam[2] then begin tarolo:=szam[1]; szam[1]:=szam[2]; szam[2]:=tarolo; end;
if szam[1] > szam[3] then begin tarolo:=szam[1]; szam[1]:=szam[3]; szam[3]:=tarolo; end;
if szam[2] > szam[3] then begin tarolo:=szam[2]; szam[2]:=szam[3]; szam[3]:=tarolo; end;

writeln ('Legnagyobb szam: ',szam[3]);
writeln ('Legkisebb szam: ',szam[1]);

{harommal oszthato}

write('Harommal oszthato:');
for tarolo:=1 to 3 do
if (szam[tarolo] mod 3)=0 then write(szam[tarolo],',');

readln;
end.

Két okból írtam be egy lehetséges megoldás (a kód inkább egyszerű mint szép megoldás a könnyebb érthetőség végett):

1. Már vagy 6-7 éve nem láttam Pascalt egy kis nosztalgia :)
2. Én sokkal jobban szeretek egy megoldáson keresztül megérteni dolgokat pl ha megvan a megoldás átnézem majd egyedül is próbálom megirni magamtól és ha megy akkor értem. :D A ti módszeretek szerintem csak akkor célravezető ha ott ülsz mellette és próbálod rávezetni a megoldásra de nem így fórumon keresztül hogy 5 -en 8 félét magyaráztok :) de ha tévredek én kérek elnézést.

Hát okok, de:
1. talán nem kéne egy az egyben megoldani valaki háziját
2. de szerencsére ezt te sem tetted. ;)

tipp (én ezt értelmezem máshogy):
"és írasd ki a 3-mal oszható számokat a legkisebbtől a legnagyobbig"

(szerk.: ráadásul csak egy részfeladathoz kért segítséget)

A hárommal osztható részt szerintem félreértetted, a legkisebb és a legnagyobb közötti 3-mal osztható számokat kell kiírni, ezt meg valami


if szam[1] mod 3 = 0
then
  writeln (szam[1];
tarolo:=szam[1]+3-(szam[1] mod 3);  
while tarolo <= szam[3]-(szam[3] mod 3) do
begin
  writeln ( tarolo );
  tarolo+=3;
end;

ilyesmi...

Update: a két kódot elegyítve az fpc szépen forgatja, és jó is, úgyhogy a követhező HUP-sörözésen az ifjú barátunk jöhet egy sörrel mindkettőnknek :-)

Ja, úgy 1992-'93 óta egy árva sor pascal programkódot nem írtam...

Ahamm. Ezt én is benéztem.

Az én házimat sosem oldották ennyien, nagyon irigy vagyok :D

(Na ezt a postot összevissza szerkesztgettem, de most már jó;)

szerk: Nem mégsem jó, de most már itt hagyom hátha valaki ki tudja dolgozni a forradalmi ötletet helyesen... :)

Nagyon unatkozom, úgyhogy előállok még egy megoldással, ami kicsit más :) :

Két véletlen számot generálunk csak, azonban olyan eloszlásban, ami megfelel a feladat követelményeinek. Tfh. az eredeti megoldásban 1-től n-ig generált 3db. véletlen egész számból választjuk ki min-t és max-ot. Ekkor ehelyett:

1. generáljunk véletlen egész számot 1 és (n+1)*n között
2. a fent generált számhoz keressük meg a legközelebbi négyzetszámot amit jelöljünk k-val
3. d := sqrt(k)-1
4. a := véletlenszám 1 és n-d között ([1;n-d] zárt.int.)
5. b := a+d

Ekkor "a"(minimum) és "b"(maximum) eloszlása tökéletesen olyan mintha azt 3 számból válogattuk volna! :)

Szerintem először is kell egy Pascalban írt PostgreSQL library. Kapcsolódni kell egy adatbázishoz, egy táblába bele kell tenni a 3 számot, aztán egy SELECT-tel megvan a min és max. Ennél egyszerűbben nem is jó.

--
joco voltam szevasz

Ez kb. olyan nehez, mint a HUP-regisztracio.

Azt melyik forumon oldottak meg...?

Megoldottam
Köszy mindenkinek!