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 02. 03. 2013 15:23

Optix
Příspěvky: 134
Pozice: Student
Reputace:   
 

generování permutací- Pascal

Ahoj, potřeboval bych pomoci, nevím si rady jak vygenerovat všechny permutace. Když na vstupu dostanu číslo např. 6 tak vygenerovat všechny permutace čísel 1,2,3,4,5,6. Pokouším se o to už docela dlouho a jediný k čemu jsem se dopracoval je že buď udělám strašně moc for-cyklů a poté ještě víc podmínek a když jsem zkoušel přes rekurzi tak jsem se nedočkal ničeho jiného než zástupu jedniček. Tak věřím že mi tu pomůžete.
Předem děkuji :)

Offline

 

#2 04. 03. 2013 01:42 — Editoval RePRO (04. 03. 2013 02:12)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: generování permutací- Pascal

Zdravím,

hlavička programu (zejména deklarace):

Code:

Program AllPermutations;
uses CRT;
const n = 7;
var p: array [1..n] of integer;
    flag: array [1..n] of boolean;
    i: integer;

hlavní procedura:

Code:

procedure writePermutations(k: integer);
var i: integer;
begin
  if k = 0 then begin
    for i := 1 to n do write(p[i], ', ');
    writeln;
  end
  else begin
    for i := 1 to n do
      if flag[i] then begin
        flag[i] := false;
        p[k] := i;
        writePermutations(k-1);
        flag[i] := true;
      end;
  end;
end;

hlavní blok programu:

Code:

begin
  clrscr;
  for i := 1 to n do flag[i] := true;
  writePermutations(n);
  readln;
end.

Trošku jsem porušil pravidlo, že bych neměl psát rovnou celé programy, ale nemám chuť na podrobné vysvětlování, proto se omlouvám... k zadavateli: Pokud něčemu nerozumíš, nebo Ti není zcela jasné ptej se.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#3 09. 03. 2013 15:43

Optix
Příspěvky: 134
Pozice: Student
Reputace:   
 

Re: generování permutací- Pascal

děkuju, mě jenom není jasné, ty jsi si tam určil jako konstantu 7, ale kdybych dopředu neznal kolik prvků bude?? dalo by se to nějak udělat??

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson