» »

[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

St@jler ::

uf kazalci...to je EVIL :D keep away!!

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;

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.

Zgodovina sprememb…

  • spremenilo: Grey ()

DSmidgy ::

QuickSort je dodan k Turbo Pascal 7 za DOS.

Grey ::

In to naj bi pomenilo?

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')?

DSmidgy ::

To pomen, da tam lahko najdeš QuickSort algoritem v pascal kodi (.pas datoteka).

Primoz ::

Gundolf z[i]^:=

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.

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:)))

DSmidgy ::

{ 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.

Grey ::

Tnx:D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

največkrat pojavljeni element v tabeli

Oddelek: Programiranje
181891 (1266) pac1
»

Quick sort

Oddelek: Programiranje
102414 (1162) drola
»

It means business (strani: 1 2 3 4 5 6 7 8 )

Oddelek: Znanost in tehnologija
37427796 (13795) Thomas
»

Šah [Pacsal]

Oddelek: Programiranje
152179 (1782) NeOman
»

sortiranje neznano dolge datoteke v pascalu

Oddelek: Programiranje
101014 (929) mmisv

Več podobnih tem