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
Stránky: 1
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

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:
for i:= 1 to n do q[p[i]] := i;
Offline

Ano, p a q maji byt pole :-)
Offline
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

↑ myrek:V tom kodu co tu je vypsany jsou ruzne chyby. V cem je konkretne problem, povedlo se ti to alespon zkompilovat?
Offline
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

↑ 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:
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
ved ale mne z toho nic nefunguje a som zufaly
Offline

Jeste se muzes podivat, pripadne psat, sem.
Offline
Stránky: 1