Jak přepínat mezi metodami? – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak přepínat mezi metodami? – Pascal – Fórum – Programujte.comJak přepínat mezi metodami? – Pascal – Fórum – Programujte.com

 

Arkan
~ Anonymní uživatel
7 příspěvků
5. 1. 2008   #1
-
0
-

Pls potreboval bych pomoct. Mám tento zdrojový kód:



program tridici_metody;
uses crt,trideni;
const m=10000;
var n:integer;
c1,c2:real;


begin
clrscr;
n:=0;
repeat
n:=n+500;
nacti(p,n);

sound(100);
c1:=cas;
BubbleSort(p,n);
c2:=cas;
nosound;

tisk(p,n);
writeln;
writeln('Cas trideni pro ',n,' prvku je:',(c2-c1):5:2,' sekundy');

delay(5000);
until n=5000;
writeln('Pro ukonceni stisknete cokoliv');
readkey;
end.


ve vlastní unite mam napsané kódy pěti třídících metod ale nevím jak udělat abych si mohl zadat kterou chcu použít. Mělo by to fungovat nějak tak že se me program zeptá kterou metodou chci třídít a já bych si jen vybral třeba číslo této metody. Zkoušel jsem to delat přes CASE ale nejak mi to nefungovalo. Prosím o pomoc je to úkol do školy, moc dík.

Nahlásit jako SPAM
IP: 90.176.43.–
geckon0
Návštěvník
5. 1. 2008   #2
-
0
-

A jak jsi mel ten CASE napsany? To by melo fungovat, ne? Nemel jsi tam nekde chybu?

Nahlásit jako SPAM
IP: 88.102.121.–
"Neberte život tak vážně. Stejně z něj nevyváznete živí."
Arkan
~ Anonymní uživatel
7 příspěvků
5. 1. 2008   #3
-
0
-

case mam napsany takto

case metoda of

1:BubbleSort(p,n);
2:HeapSort(p,n);
3:QuickSort(p,n);
4:SelectSort(p,n);
5:ShakerSort(p,n);

{nejde mi to nijak vypsat}

sound(100);
c1:=cas;
metoda;
c2:=cas;
nosound;

ale nevim jak to mam zadat

Nahlásit jako SPAM
IP: 90.176.43.–
geckon0
Návštěvník
5. 1. 2008   #4
-
0
-



var metoda: word;

.
.
.
.

writeln('Vyberte metodu');
{nasleduje seznam metod s prirazenymi cisly}
read(metoda);
{nasleduje CASE}



myslis tohle?

Nahlásit jako SPAM
IP: 88.102.121.–
"Neberte život tak vážně. Stejně z něj nevyváznete živí."
Arkan
~ Anonymní uživatel
7 příspěvků
5. 1. 2008   #5
-
0
-

ne to ne toto je muj cely zdrojak

var n:integer;

c1,c2:real;
metoda:word;

begin
clrscr;
n:=0;

writeln('Zadej kterou metodou chces tridit:');
writeln('BubbleSort - stiskni 1');
writeln('HeapSort - stiskni 2');
writeln('QuickSort - stiskni 3');
writeln('SelectSort - stiskni 4');
writeln('ShakerSort - stiskni 5');

case metoda of
1:BubbleSort(p,n);
2:HeapSort(p,n);
3:QuickSort(p,n);
4:SelectSort(p,n);
5:ShakerSort(p,n);
end;
readln(metoda);

repeat
n:=n+500;
nacti(p,n);

sound(100);
c1:=cas;
{metoda}
c2:=cas;
nosound;

tisk(p,n);
writeln;
writeln('Cas trideni metodou ',metoda,' pro ',n,' prvku je:',(c2-c1):5:2,' sekundy');

delay(5000);
until n=5000;

do tech zavorek z metodou mezi cas1 a cas2 mam tu metodu vypsat protoze mam zjistit cas trideni ale kdyz to tam dam tak mi to nesetridi tak nevim jak to tam mam zadat aby mi to setridilo. Jinak mi to vypise nesetrizene pole

Nahlásit jako SPAM
IP: 90.176.43.–
geckon0
Návštěvník
5. 1. 2008   #6
-
0
-

Podle me by to melo vypadat tak, ze "readln(metoda)" ma byt nad tim "case" a to cele dohromady mezi c1 a c2, ne?

Nahlásit jako SPAM
IP: 88.102.121.–
"Neberte život tak vážně. Stejně z něj nevyváznete živí."
Arkan
~ Anonymní uživatel
7 příspěvků
5. 1. 2008   #7
-
0
-

mezi c1 a c2 to urcite nemuze byt protoze tam mam cyklus repeat until takze by se to provedlo vicekrat. Tady je jeste ta unita:

unit trideni;

interface

uses crt,dos;
const m=10000;
type Tpole=array[1..m]of integer;
var p:Tpole;

function Cas:real;
procedure nacti(var p:Tpole;n:integer);
procedure tisk(var p:Tpole;n:integer);
procedure BubbleSort(var p:Tpole;n:integer);
procedure HeapSort(var p:Tpole;n:integer);
procedure QuickSort(var p:Tpole;n:integer);
procedure SelectSort(var p:Tpole;n:integer);
procedure ShakerSort(var p:Tpole;n:integer);

implementation

function Cas:real;
var h,m,s,ss:word;
hr:real;
begin
gettime(h,m,s,ss);
hr:=h;
cas:=hr*3600+m*60+s+ss/100;
end;


procedure nacti(var p:Tpole;n:integer);
var i:integer;
begin
randomize;
for i:=1 to n do
p[i]:=random(1000)+1;
end;

procedure tisk(var p:Tpole;n:integer);
var i:integer;
begin
for i:=1 to n do
write(p[i]:5);
end;


procedure BubbleSort(var p:Tpole;n:integer);
var i,j,x:integer;
begin
for i:=1 to n-1 do
for j:=1 to n-1 do
if p[j] > p[j+1] then begin
x:=p[j];
p[j]:=p[j+1];
p[j+1]:=x;
end;
end;

procedure HeapSort(var p:Tpole;n:integer);
var k,r,pom:integer;
procedure zarazeni;
var i,j:integer;
begin
i:=k;
j:=2*i;
pom:=p[i];
while j<=r do begin
if j<r then
if p[j]<p[j+1] then inc(j);
if pom>p[j] then break;
p[i]:=p[j];
i:=j;
j:=2*i;
end;
p[i]:=pom;
end;
begin
k:=(n div 2)+1;
r:=n;
while k>1 do
begin
dec(k);
zarazeni;
end;
while r>1 do
begin
pom:=p[1];
p[1]:=p[r];
p[r]:=pom;
dec(r);
zarazeni;
end;
end;

procedure QuickSort(var p:Tpole;n:integer);
procedure Trideni(LL,RR:longint);
var x,pom:integer;
L,R:longint;
begin
x:=p[(LL+RR) div 2];
L:=LL;
R:=RR;
repeat
while p[L] < x do inc(L);
while x < p[R] do dec(R);
if L<=R then begin
pom:=p[L];
p[L]:=p[R];
p[R]:=pom;
inc(L);
dec(R);
end;
until L>R;
if LL<r then Trideni(LL,R);
if L<RR then Trideni(L,RR);
end;
begin
Trideni(1,n);
end;


procedure SelectSort(var p:Tpole;n:integer);
var i,j,min,pom:integer;
begin
for i:=1 to n-1 do
begin
min:=p[i];
for j:=i+1 to n do
begin
if min>p[j] then
begin
min:=p[j];
pom:=j;
end;
end;
p[pom]:=p[i];
p[i]:=min;
end;
end;


procedure ShakerSort(var p:Tpole;n:integer);
var j,k,L,R,x:integer;
begin
L:=2;R:=n;k:=n;
repeat
for j:=R downto L do
if p[j-1]>p[j] then begin
x:=p[j-1];
p[j-1]:=p[j];
p[j]:=x;
k:=j;
end;
L:=k+1;
for j:=L to R do
if p[j-1]>p[j] then begin
x:=p[j-1];
p[j-1]:=p[j];
p[j]:=x;
k:=j;
end;
R:=k-1;
until L>R;
end;

begin
end.

Nahlásit jako SPAM
IP: 90.176.43.–
geckon0
Návštěvník
5. 1. 2008   #8
-
0
-

Jo mas pravdu, promin. Tak to "readln(metoda)" nech tam, kde to je a cely prikaz CASE dej mezi c1 a c2. Tim padem na zacatku zvolis metodu a ono ji to bude opakovat.

Nahlásit jako SPAM
IP: 88.102.121.–
"Neberte život tak vážně. Stejně z něj nevyváznete živí."
Arkan
~ Anonymní uživatel
7 příspěvků
5. 1. 2008   #9
-
0
-

Jj mas pravdu uz mi to jede diky ti :smile2:

Nahlásit jako SPAM
IP: 90.176.43.–
geckon0
Návštěvník
5. 1. 2008   #10
-
0
-

Nemas zac ;-) Jsem rad, ze se tady najde i dotaz, na ktery jsem schopny poradit i ja :-))

Nahlásit jako SPAM
IP: 88.102.121.–
"Neberte život tak vážně. Stejně z něj nevyváznete živí."
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý