Forum » Programiranje » [Turbo Pascal] Pomoč...
[Turbo Pascal] Pomoč...
Grey ::
V šoli smo dobil neke vaje za narest in dveh nalog ne razumem oz. ne znam rešit, pa bi vas prosu za pomoč če lahko.
1. naloga - rekurzije
Napišite program za hitro sortiranje tabele petdesetih števil.
2. naloga - podatkovne strukture, kazalci,...
Dana je podatkovna struktura:
var z : array[1..30] of ^integer;
Inicializirajte podatkovno strukturo tako, da bo vsak izmed integerjev v strukturi dobil vrednost, ki je enaka vrednosti indeksa tabele.
Vsakršna pomoč je dobrodošla.
Tnx
1. naloga - rekurzije
Napišite program za hitro sortiranje tabele petdesetih števil.
2. naloga - podatkovne strukture, kazalci,...
Dana je podatkovna struktura:
var z : array[1..30] of ^integer;
Inicializirajte podatkovno strukturo tako, da bo vsak izmed integerjev v strukturi dobil vrednost, ki je enaka vrednosti indeksa tabele.
Vsakršna pomoč je dobrodošla.
Tnx
Gundolf ::
Prva: poisci kje na netu algoritem za quicksort. ;)
Heh, ta druga je pa izi. Upam le da se ne zmotim v sintaksi a to bos ze znal popraviti.
var i:integer;
for i=1 to 30 do
begin
new(z[i]);
z[i] := i;
end;
Heh, ta druga je pa izi. Upam le da se ne zmotim v sintaksi a to bos ze znal popraviti.
var i:integer;
for i=1 to 30 do
begin
new(z[i]);
z[i] := i;
end;
Grey ::
Gundolf:
Tnx za to rešitev. Za quick sort sm isku, sam je vse tist, kar sm najdu, napisan v Cju. Cja pa žal ne znam prevest v Pascal.
Tnx za to rešitev. Za quick sort sm isku, sam je vse tist, kar sm najdu, napisan v Cju. Cja pa žal ne znam prevest v Pascal.
Zgodovina sprememb…
- spremenilo: Grey ()
Gundolf ::
No ce ne najdes quicksorta si lahko se vedno sam izmislis program ki bo rekurzivno sortiral tabelo...
Cesa tocno tu ne znas (upam da odgovor ne bo 'pascala')?
Cesa tocno tu ne znas (upam da odgovor ne bo 'pascala')?
Primoz ::
Gundolf z[i]^:=
drugače nastavljaš pointer ;)) kar ni nevem kako krasno ;) ampak dela pa tudi ker pointer == stevilka.
drugače nastavljaš pointer ;)) kar ni nevem kako krasno ;) ampak dela pa tudi ker pointer == stevilka.
There can be no real freedom without the freedom to fail.
Grey ::
Pascal znam. Vsaj to, kar smo do zdej jemal. Te novejše fore letos me pa dajejo...pa to sortiranje mi tud ni ne vem kako preveč dobr šlo. Hm..a s premenami bi se dal to narest?
Zgodovina sprememb…
- spremenilo: Grey ()
Gundolf ::
Hvala Primoz, sm vedu da se bom nekje zmotu. Bolje da to se Grayu poves ;)
Gray, nimam pojma kaj so to premene tako da ne vem ce bi slo :) Razmisljaj v tej smeri: v neki funkciji sortiras en del tabele, nato to funkcijo rekurzivno klices na nesortiranem preostanku. Lahko pa v funkciji delno sortiras tabelo na dva dela in funkcijo nato rekurzivno klices na obeh teh delih. Moznosti je veliko.
Gray, nimam pojma kaj so to premene tako da ne vem ce bi slo :) Razmisljaj v tej smeri: v neki funkciji sortiras en del tabele, nato to funkcijo rekurzivno klices na nesortiranem preostanku. Lahko pa v funkciji delno sortiras tabelo na dva dela in funkcijo nato rekurzivno klices na obeh teh delih. Moznosti je veliko.
jpzoky1 ::
Zdravo
Sicer je moj pascal že kar nekaj let oddaljen in je znanje temu primerno, vendar pa morda imam rešitev. Sicer nimam pojma, kaj bi to bile rekurzije, vendar pa smo tudi mi imeli neko sortiranje v šoliin mislim, da je šlo nekako takole:
var podatki:array[1..50]of integer;
var tabela:array[1..50]of integer;
var i,j,pom,kaz:integer;
begin
for j=1 to 50 do
begin
pom:=+maxint;
for i=1 to 50 do
begin
if(pom>podatki[i]) then
begin
pom:=podatki[i];
kaz:=i;
end;
end;
tabela[j]:=pom;
podatki[kaz]:=+maxint;
end;
end.
nisem shore, če je sintaksa povsem pravilna, glede na to, da pa je to čista osnova, mislim, da bi moral razumeti, kako zadeva deluje (če se nisem zmotil seveda:)))
Sicer je moj pascal že kar nekaj let oddaljen in je znanje temu primerno, vendar pa morda imam rešitev. Sicer nimam pojma, kaj bi to bile rekurzije, vendar pa smo tudi mi imeli neko sortiranje v šoliin mislim, da je šlo nekako takole:
var podatki:array[1..50]of integer;
var tabela:array[1..50]of integer;
var i,j,pom,kaz:integer;
begin
for j=1 to 50 do
begin
pom:=+maxint;
for i=1 to 50 do
begin
if(pom>podatki[i]) then
begin
pom:=podatki[i];
kaz:=i;
end;
end;
tabela[j]:=pom;
podatki[kaz]:=+maxint;
end;
end.
nisem shore, če je sintaksa povsem pravilna, glede na to, da pa je to čista osnova, mislim, da bi moral razumeti, kako zadeva deluje (če se nisem zmotil seveda:)))
EjTi ::
{ Turbo Sort }
{ Copyright (c) 1985,90 by Borland International, Inc. }
program qsort;
{$R-,S-}
uses Crt;
{ This program demonstrates the quicksort algorithm, which }
{ provides an extremely efficient method of sorting arrays in }
{ memory. The program generates a list of 1000 random numbers }
{ between 0 and 29999, and then sorts them using the QUICKSORT }
{ procedure. Finally, the sorted list is output on the screen. }
{ Note that stack and range checks are turned off (through the }
{ compiler directive above) to optimize execution speed. }
const
max = 1000;
type
list = array[1..max] of integer;
var
data: list;
i: integer;
{ QUICKSORT sorts elements in the array A with indices between }
{ LO and HI (both inclusive). Note that the QUICKSORT proce- }
{ dure provides only an "interface" to the program. The actual }
{ processing takes place in the SORT procedure, which executes }
{ itself recursively. }
procedure quicksort(var a: list; Lo,Hi: integer);
procedure sort(l,r: integer);
var
i,j,x,y: integer;
begin
i:=l; j:=r; x:=a[(l+r) DIV 2];
repeat
while a[i] < x do i:=i+1;
while x < a[j] do j:=j-1;
if i < = j then
begin
y:=a[i]; a[i]:=a[j]; a[j]:=y;
i:=i+1; j:=j-1;
end;
until i>j;
if l < j then sort(l,j);
if i < r then sort(i,r);
end;
begin {quicksort};
sort(Lo,Hi);
end;
begin {qsort}
Write('Now generating 1000 random numbers...');
Randomize;
for i:=1 to max do data[i]:=Random(30000);
Writeln;
Write('Now sorting random numbers...');
quicksort(data,1,max);
Writeln;
for i:=1 to 1000 do Write(data[i]:8);
end.
{ Copyright (c) 1985,90 by Borland International, Inc. }
program qsort;
{$R-,S-}
uses Crt;
{ This program demonstrates the quicksort algorithm, which }
{ provides an extremely efficient method of sorting arrays in }
{ memory. The program generates a list of 1000 random numbers }
{ between 0 and 29999, and then sorts them using the QUICKSORT }
{ procedure. Finally, the sorted list is output on the screen. }
{ Note that stack and range checks are turned off (through the }
{ compiler directive above) to optimize execution speed. }
const
max = 1000;
type
list = array[1..max] of integer;
var
data: list;
i: integer;
{ QUICKSORT sorts elements in the array A with indices between }
{ LO and HI (both inclusive). Note that the QUICKSORT proce- }
{ dure provides only an "interface" to the program. The actual }
{ processing takes place in the SORT procedure, which executes }
{ itself recursively. }
procedure quicksort(var a: list; Lo,Hi: integer);
procedure sort(l,r: integer);
var
i,j,x,y: integer;
begin
i:=l; j:=r; x:=a[(l+r) DIV 2];
repeat
while a[i] < x do i:=i+1;
while x < a[j] do j:=j-1;
if i < = j then
begin
y:=a[i]; a[i]:=a[j]; a[j]:=y;
i:=i+1; j:=j-1;
end;
until i>j;
if l < j then sort(l,j);
if i < r then sort(i,r);
end;
begin {quicksort};
sort(Lo,Hi);
end;
begin {qsort}
Write('Now generating 1000 random numbers...');
Randomize;
for i:=1 to max do data[i]:=Random(30000);
Writeln;
Write('Now sorting random numbers...');
quicksort(data,1,max);
Writeln;
for i:=1 to 1000 do Write(data[i]:8);
end.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | največkrat pojavljeni element v tabeliOddelek: Programiranje | 1981 (1356) | pac1 |
» | Quick sortOddelek: Programiranje | 2537 (1285) | drola |
» | It means business (strani: 1 2 3 4 5 6 7 8 )Oddelek: Znanost in tehnologija | 28586 (14585) | Thomas |
» | Šah [Pacsal]Oddelek: Programiranje | 2248 (1851) | NeOman |
» | sortiranje neznano dolge datoteke v pascaluOddelek: Programiranje | 1065 (980) | mmisv |