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 07. 11. 2010 12:14

myrek
Příspěvky: 223
Reputace:   
 

pascal inverzní permutace

Dobrý den
mým ukolem je najít k zadané permutaci čísel 1 až n permutaci inverzní.
na vstupu bude kladné celé číslo menší nebo rovno 100. Poté následuje permutace čísel 1 až n a čísla jsou oddělena mezerami. Celý vstup je umístěn na jednom řádku.
a ted mam urcit inverzni permutaci a vypsat ji do jednoho radku na vystup cisla opet oddelena mezerami.

priklad vstupu 6 1 3 6 2 5 4
odpovidajici vystup 1 4 2 6 5 3

napada me toto reseni 

program permutace;
var i,n:integer;
begin
read(n);
for i:=1 to n do read(random(n)+1);
end.


no a ted nevim jak zaridit aby n nebylo vetsi nez 100?
a jak udelat inverzni permutaci?

dekuji za rady

Offline

  • (téma jako vyřešené označil(a) myrek)

#2 08. 11. 2010 16:43

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal inverzní permutace

vysvetli mi prosim nekdo pojem inverzni permutace? pripadne algoritmus?
dekuji moc

Offline

 

#3 08. 11. 2010 17:19 — Editoval Lumikodlak (08. 11. 2010 17:25)

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

Re: pascal inverzní permutace

Kdyz mas permutaci 'p', tak k ni inverzni permutace 'q' je takova, ze kdyz plati

i = p[j]

tak plati

j = q[i]

neboli

j = q[p[j]]

V Pascalu uz jsem dlouho nedelal, ale mohlo by to byt neco takoveho:

Code:

for i:= 1 to n do
  q[p[i]] := i;

Offline

 

#4 08. 11. 2010 19:47

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal inverzní permutace

hele prosimte p,g to mam zadat jako typ pole<

Offline

 

#5 08. 11. 2010 20:11

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

Re: pascal inverzní permutace

Ano, p a q maji byt pole :-)

Offline

 

#6 08. 11. 2010 22:26

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal inverzní permutace

a co takhle?

program permutace;
var i,n:integer;p:array[1..100]of integer;q:array[1..100]of integer;
begin
read(n[p]); {TED POTREBUJU ABY TO NACTLO NEJAKE LIBOVOLNE CISLO N Z P}
for i=1 to n write(random(' ',n)+1) {NYNI TREBA ABY TO NAPSALO LIBOVOLNOU PERMUTACI OD 1 DO ? PRICITAM 1 ABY TAM NEBYLA 0}
for i=1 to n do
q[p[i]]:=i;  {PRIRAD PRVKUM Z P PRVKY Q(INVERZNI)}
writeln(' ',q)
end.

JESTE BYCH CHTEL NAPSAT ZE TADY NEMAM PASCAL A NEMA OPRAVNENI K JEHO INSTALACI TAM KDE MAM PASCAL NEMAM NET Z TOHO PLYNE PRACUJI NA PORIZENI NETU.

Offline

 

#7 09. 11. 2010 19:25 — Editoval myrek (09. 11. 2010 19:26)

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal inverzní permutace

↑ myrek:
tak takhle to nepujde
sem ztracen a zmaten zadam pomoc
dik

Offline

 

#8 09. 11. 2010 19:51

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

Re: pascal inverzní permutace

↑ myrek:V tom kodu co tu je vypsany jsou ruzne chyby. V cem je konkretne problem, povedlo se ti to alespon zkompilovat?

Offline

 

#9 09. 11. 2010 20:32

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal inverzní permutace

prvni chyba je ze bych potreboval nacist libovolen cislo z pole 1 az 100
reknu to takhle znam postup ale v programovani zacinam

Offline

 

#10 09. 11. 2010 20:50

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal inverzní permutace

1) nacti kladne cele cislo mensi nebo rovno 100
2) nahodne na stejny radek vypis cisla 1 az to cislo ktere nactls cisla oddel mezerami
3) k temto cislum udelej inverzni zde by mel byt zrejme to prirazovani o kterem se zminovals

jinak jak udelat inverzni permutaci:

mejme treba permutaci se 4 prvky

3 2 4 1             ted si to oindexuju
1 2 3 4             a vidim ze 1 jde na 4, 2 na 2, 3 na 1, 4 na 3
4 2 1 3

k permutaci 3 2 4 1 je tedy inverzni 4 2 1 3

Offline

 

#11 09. 11. 2010 21:03 — Editoval Lumikodlak (09. 11. 2010 21:08)

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

Re: pascal inverzní permutace

↑ myrek:Podle zadani bys permutaci mel nacitat ze vstupu (jestli se nepletu). To znamena, ze kdyz ten program spustis, tak zadas nejdrive jedno cislo - n, a pak zadas tu permutaci. To vypada treba takhle:

Code:

program permutace;
var i,n,x:integer;p:array[1..100]of integer;q:array[1..100]of integer;
begin
read(n);                     {Nacist velikost permutace}
for i:=1 to n do read(p[i]); {Nacist permutaci}
 ...

Jestli se ale pletu, a opravdu by mel tu permutaci nahodne vytvorit sam program, tak dej vedet.

Offline

 

#12 09. 11. 2010 22:18

myrek
Příspěvky: 223
Reputace:   
 

Re: pascal inverzní permutace

jupi

Offline

 

#13 16. 11. 2010 20:36

unavenyjoe
Zelenáč
Příspěvky: 1
Reputace:   
 

Re: pascal inverzní permutace

ved ale mne z toho nic nefunguje a som zufaly

Offline

 

#14 16. 11. 2010 22:31

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

Re: pascal inverzní permutace

Jeste se muzes podivat, pripadne psat, sem.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson