Matice – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Matice – Pascal – Fórum – Programujte.comMatice – Pascal – Fórum – Programujte.com

 

Kadla
~ Anonymní uživatel
43 příspěvků
28. 8. 2007   #1
-
0
-

Dobrý den, pomohl by mi nekdo vyresit ulohu cislo 6???Dekuju mockrat!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!§

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
28. 8. 2007   #2
-
0
-

No, nerad se opakuju, ale v čem KONKRÉTNĚ je problém? Myslíš, že ti tu někdo vysmahne řešení bez toho, aniž bys nad tím popřemýšlel?

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
28. 8. 2007   #3
-
0
-

To Jura: Ne to ne, ale napadaj me dve reseni a nevim, jak to spravne udelat...zaprvy kazder radek a sloupec seradit a pak zjistit, jestli je tam patricna posloupnost nebo nejakej algoritmus a otestovat, jestli jsou tam ty hodnoty....

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
28. 8. 2007   #4
-
0
-

Mno, zřejmě řešíme každý jinou úlohu. Jedná se o úlohu č. 6 z dokumetu http://www.fm.tul.cz/prg/Ulohy/UlohyMatice.pdf?
Pokud ano, tak bych postupoval asi takto:

1) naplnit matici
2) zapamatovat si index řádku a sloupce, ve kterém se nachází maximální hodnota - normálně projdeš 2 rozměrné pole
3) prohodit třeba nejprve 1.řádek s řádkem, ve kterém je maximální hodnota
4) prohodit 1. sloupec s požadovaným sloupcem
5) radovat se

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
28. 8. 2007   #5
-
0
-

To Jura:Jeee ja jsem hlupak, tudle ulohy umim..ale spletl jsem s osmickou!!!
Uloha cislo osm mi vebuce nejde :-(
jinak se taky raduju

Nahlásit jako SPAM
IP: ...–
tucna0
Návštěvník
29. 8. 2007   #6
-
0
-

Prostě projdeš sloupec po sloupci, řádek po řádku obě diagonály a otestuješ pokaždé jestli obsahují tu permutaci. Pokud ano, pak jde o latinský čtverec. Neumíš číst? Přesně toto máš napsané v zadání!

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
29. 8. 2007   #7
-
0
-

To tucna:promin, mozna me mas za nejvetsiho idiota, ale ja mam s tim fakt nejvetsi problem, ze si prectu zadani a vubec nevim cp mam delat...az pak mi to dojde..jsem rad, ze mi pomahas, ale nemusis na me porad utocit.ja vim, ze nejsem dobrej programator a asi nikdy nebudu, ale docela me to bavi a chtel bych se neco naucit, tak se mnou mej strpeni

Nahlásit jako SPAM
IP: ...–
tucna0
Návštěvník
29. 8. 2007   #8
-
0
-

To Kadla: já mám strpení :) Kadlo pokud se chceš něco naučit tak se to UČ a neptej se pořád na totéž. Čemu konkrétně, ale opravdu konkrétně, nerozumíš?

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
29. 8. 2007   #9
-
0
-

To tucna: chapu jak ji mam projit tu permutaci, ale vubec nechapu jak mam otestovat tu permutaci.

Nahlásit jako SPAM
IP: ...–
tucna0
Návštěvník
29. 8. 2007   #10
-
0
-

Citát viz. Wikipedie

Příklad
Mějme skupinu tří různých prvků a,b,c.

Permutace těchto prvků představují skupiny abc, acb, bac, bca, cab, cba.



...ale předpokládám že víš co je permutace, to jen tak na okraj ;)

Tedy máš matici řádu N. Nechť N je 3. Tzn že je ta matice dvourozměrné pole 3x3. Teď musíš zkontrolovat zda jsou prvky každého sloupce, řádku, diagonály, permutací 1..N, tedy 1,2,3. Tzn. že řádek může vypdat např. takto - 1,3,2. Ale ne např. takto - 5,3,1 (5 už je větší než N).

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
29. 8. 2007   #11
-
0
-

To tucna:krasne si mi to vysvetlil. Tak ja jdu na to....

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
29. 8. 2007   #12
-
0
-

To tucna: slo by to takhle?..udelal jsem jenom pro radky. Prosimte, rekl by si mi taky k tomu jak se ma delat spravne odsazeni?


program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
P : array [1..20, 1..20] of integer;
perumtace : boolean;
N,i,j : integer;
begin

read(N);

permutace:=true;

for i:=1 to N
do for j:=1 to N
do P[i,j]:=Random(N+1);

for i:=1 to N
do begin
for j:=1 to N
do write(P[i,j]:3);
writeln;
end;

for i:=1 to N
do begin
for j:=1 to N
do if P[i,j]<>j then permutace:=false else permutace:=true;
end;

readln;


end.

Nahlásit jako SPAM
IP: ...–
tucna0
Návštěvník
29. 8. 2007   #13
-
0
-

Co myslíš odsazením?

První chybu máš tady

for i:=1 to N

do for j:=1 to N
do P[i,j]:=Random(N+1);


...patrně jsi měl na mysli spíš

for i:=1 to N

do for j:=1 to N
do P[i,j]:=Random(N)+1;


Ten první a druhý blok bych napsal do jednoho cyklu (prostě vložil do matice a hned vypsal na monitor).

A ten třetí blok
for i:=1 to N

do begin
for j:=1 to N
do if P[i,j]<>j then permutace:=false else permutace:=true;
end;


Není správně - nemusí to vypadat jen 1,2,3. Může to být třeba 2,3,1. Nastuduj si použití množin (set of). Ty ti v tomto případě dost pomůžou - přidáš do množiny prvky od 1 do N, pak když prvek v řádku najdeš odstraníš jej z množiny a na konci průchodu řádku zkontroluješ jestli je množina prázdná. Pokud ano je to OK pokud ne, víš že tam jsou jinné prvky a nastává FALSE.

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
29. 8. 2007   #14
-
0
-

To tucna:jak elegatni reseni!Diky

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
29. 8. 2007   #15
-
0
-

to tucna: program matka;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
P : array [1..20, 1..20] of integer;
permutace : boolean;
N,i,j : integer;
cislice : set of byte;
begin


read(N);
cislice:=[1..N];
permutace:=true;

for i:=1 to N
do for j:=1 to N
do P[i,j]:=Random(N)+1;

for i:=1 to N
do begin
for j:=1 to N
do write(P[i,j]:3);
writeln;
end;

for i:=1 to N
do begin
for j:=1 to N
do if P[i,j] in cislice then
begin
cislice:=cislice - [P[i,j]];
end;
if cislice=[] then permutace:=True else permutace:=False; //todle asi nebude spravne, ale nevedel jsem jak otestovat, kdyz je mnozina spravna
end;


write(permutace);
readln;
readln;


end.


ty jo ale stejne mi to nefunguje :-((((((

Nahlásit jako SPAM
IP: ...–
tucna0
Návštěvník
29. 8. 2007   #16
-
0
-

Zrovna nemám moc času, ale jak na to tak zběžně koukám příjde mi to ok. Možná to místo kde se ptáš jestli je ta množina prázdná - nejde použít length?

EDIT: a nezapomeň ještě, že tu proměnou cislice musíš po každém řádku znova naplnit čísly 1..N ;)

Nahlásit jako SPAM
IP: ...–
Kadla
~ Anonymní uživatel
43 příspěvků
29. 8. 2007   #17
-
0
-

To tucna:diky moc..!!!!J

Nahlásit jako SPAM
IP: ...–
Mircosoft+1
Věrný člen
30. 8. 2007   #18
-
0
-

>Kadla:

Prosimte, rekl by si mi taky k tomu jak se ma delat spravne odsazeni?


Jestli myslíš, jak to udělat, aby se ti tady na fóru zobrazil kód správně odsazený, tak si ho celý označ a pak klikni na tlačítko KOD vpravo nad tím polem, do kterého píšeš.
A jestli máš na mysli, jak správně odsazovat příkazy ve zdrojáku, tak je odpověď jednoduchá: tak, aby ses v něm vyznal, jinak na tom nezáleží. Já osobně mám rád, když jsou begin a k němu patřící end přesně pod sebou, ale to je věc vkusu.

BTW - místo tohohle:
if cislice=[] then permutace:=True else permutace:=False;

se dá napsat:
permutace:=cislice=[];

Výraz "cislice=[]" dává hodnotu typu boolean, kterou můžeš rovnou přiřadit do proměnné Permutace, která je taky boolean, a nemusíš se zdržovat psaním ifů. Výsledný efekt je ale stejný.

>tucna:

Možná to místo kde se ptáš jestli je ta množina prázdná - nejde použít length?


Length dává délku řetězce a ne množiny, takže nejde.

Nahlásit jako SPAM
IP: ...–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Kadla
~ Anonymní uživatel
43 příspěvků
30. 8. 2007   #19
-
0
-

To Mircosoft:Jo a jeste bych se chtel zeptat, ted jsem resil priklad, kdy jsem mel vypsat pismena, ktere uzivatel nenapsal v retezci. Ja jsem to resil odcitanim z mnoziny vsech pismen. Mam ted jen takovej problem, ze nevim jak se vypisuje mnozina.Potrebuju vypsat, pismena, ktery uzivatel nenapsal...


Jinak jsem myslel spravne odsazeni ve zdrojaku

Nahlásit jako SPAM
IP: ...–
Mircosoft+1
Věrný člen
31. 8. 2007   #20
-
0
-

Hmmm... tak tohle je zajímavá úloha. Množina normálně vypsat nejde, musíš oklikou:



var znak:char;
mnozina:set of char;
...
for znak:=#0 to #255 do if znak in mnozina then write(znak);

Nahlásit jako SPAM
IP: ...–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Kadla
~ Anonymní uživatel
43 příspěvků
1. 9. 2007   #21
-
0
-

To Mircosoft: e co kdyz potrebuju vypsat zda dany prvek nelezi v mnozine? existuje neco jako not in?

Nahlásit jako SPAM
IP: ...–
Mircosoft+1
Věrný člen
1. 9. 2007   #22
-
0
-

Jasně:

if not (znak in mnozina) then ...

Pozor, že potřebuješ znegovat celý výraz "znak in mnozina". Kdybys to napsal bez té závorky, vyhodnotilo by se to jako "if (not znak) in mnozina" (protože not má ze všech operátorů největší prioritu), což by dalo úplně jiný výsledek, než jsi chtěl (not použitý na znak nebo číslo otočí hodnotu všech jeho bitů).

Nahlásit jako SPAM
IP: ...–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Kadla
~ Anonymní uživatel
43 příspěvků
1. 9. 2007   #23
-
0
-

To Mircosoft:Diky...nedovedu ted popsat, jak jsem stastej!diky

Nahlásit jako SPAM
IP: ...–
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, 14 hostů

Podobná vlákna

Matice — založil Frantisek

Matice — založil plsicek

Matice — založil Frantisek

Matice — založil nettinka

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ý