Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 05. 10. 2011 15:51

janca361
.
Příspěvky: 3284
 

Seřazení 2D pole

Zdravím,
mám 2D pole(n x n), znám jeho rozměr (n). Potřebuju seřadit jeho řádky (vždy se přeosuvá celý řádek) podle prvního prvku na řádku od největšího po nejmenší.
Moje pokusy skončily takto:
Free Pascal mi háže pořád Runtime error.

Code:

program pole_razeni;
type t_pole=array [1..5,1..5] of integer;
procedure nacteni (n:integer;var pole:t_pole);
 var i1,i2:integer;
 const max=10;
 begin
  randomize;
  for i1:=1 to n do
   for i2:=1 to n do
    pole[i1,i2]:=random(max);
 end;
procedure setridit (n:integer;var pole:t_pole);
 var pomocne:array[1..5] of integer;
     i,i1,konec(*i2,max*):integer;
 begin
  i:=0;
  repeat
   i:=i+1;
   konec:=1;
   if pole[i,1]<pole[i+1,1]
    then
     for i1:=1 to n do
      begin
       pomocne[i1]:=pole[i,i1];
       pole[i,i1]:=pole[i+1,i1];
       pole[i+1,i1]:=pomocne[i1];
      end;
   for i1:=1 to n do
    if pole[i1,1]<pole[i1+1,1]
     then
      konec:=0;
   if i=n-1
    then
     i:=0;
  until konec=1;
 end;
procedure vypsani(n:integer;pole:t_pole);
 var i1,i2:integer;
 begin
  for i1:=1 to n do
   begin
    for i2:=1 to n do
     write(pole[i1,i2],' ');
   writeln;
   end;
 end;
var pole:t_pole;
const n=5;(*rozmer pole*)

begin
nacteni(n,pole);
writeln('Puvodni:');
vypsani(n,pole);
setridit(n,pole);
writeln('Serazene:');
vypsani(n,pole);
end.

Pomůže mi to někdo opravit? Děkuji.

Offline

 

#2 05. 10. 2011 17:07 — Editoval frank_horrigan (05. 10. 2011 17:07)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Seřazení 2D pole

Ahoj,

budeš mít problém s kompilerem, pravděpodobně.

Já to zkoušel na Turbopascalu 7.0 pod W98 a jeho emulátorem MS-DOS, loadnul soubor se zdrojákem jak jsi ho sem dala, bez problémů zkompiloval a spustil... Výsledek je na obrázku :)

Takže ve zdrojáku problém nebude ;)

Obrázek


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#3 05. 10. 2011 17:29

janca361
.
Příspěvky: 3284
 

Re: Seřazení 2D pole

↑ frank_horrigan:
Vypadá, že je to OK.
Můžeš mi tedy poradit nějaký kompilátor míto FreePascalu, kterej je asi fakt na prd?

Offline

 

#4 05. 10. 2011 17:41

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Seřazení 2D pole

No, můžeš si stáhnout TP, ale bez emulátoru nějakýho hodně starýho operačního systému (ať už W95, W98), nebo samotnýho DOSu (třeba DOSBox) jej těžko spustíš (u XP+, nepředpokládám, že máš něco staršího). Přeci jen, klasický Pascal je dávno překonaná záležitost, jeho další a následný vývoj probíhá pod značkou Delphi.

Tedy, z toho plyne, že těch kompilátorů pro Pascal ani moc nenajdeš (ačkoli zkus pohledat, já jsem našel jen ten freepascal a pak "klasický" turbopascal, na kterém jsem před mnoha, mnoha lety začínal - tak asi ten bych si stáhnul, k němu DosBox (také volně ke stažení, pokud nenajdeš, dej mi do PM mejl, pošlu ti ho), a nebo nějaký emulátor (resp. virtuální stroj) starého operačního systému


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#5 05. 10. 2011 18:40

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Seřazení 2D pole

Omlouvam se, ze do toho vstupuju, drobny problem se zdrojakem tam podle me je, jak je ta cast:

Code:

   for i1:=1 to n do
    if pole[i1,1]<pole[i1+1,1]

Tam je n rovno 5, cili i1 jde od 1 do 5, ale na dalsi radce je pole[i1+1,1], ale to pole je definovane jen do 5 a i1+1 je 6. Rozdil je nejspis v tom, ze FP "vadi", ze se pouziva hodnota mimo to maximum, ale TP to "nevadi" a neohlasi chybu.
Tohle funguje i v FP:

Code:

   for i1:=1 to n-1 do
    if pole[i1,1]<pole[i1+1,1]

O kompilatorech pascalu toho moc nevim, to uz dal nejak rozhodnete vy, co pouzivat ci nepouzivat :-)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson