n, k)-talizmanový stvorec je stvorcová matica rozmerov n×n v ktorej sú vsetky císla od 1 do n^2
pricom platí, ze rozdiel medzi lubovolným prvkom a jeho susedom (vertikálnym, horizontálnym
alebo diagonálnym) je v absolútnej hodnote väcsí alebo rovný k. Cez okraje sa neprechádza.
Napíste program, ktorý na vstupe dostane súbor, v ktorom bude stvorcová matica. Túto
maticu nacíta a urcí ci je to talizmanový stvorec a akého rádu.
.. ludia toto potrebujem spravit.. a uz ma to dost dlho sere... ked niekto vie. budem mu velmi povdacny ... diky :)
Fórum › Pascal
Potrebujem surne pomoc s prikladom
Z jakého souboru tu matici chceš načítat? Předpokládám, že z textového, takže použij procedury Read a Readln. Rozměry jsou pevně dané nebo je musíš zjišťovat při načítání?
Nadeklarovat dvojrozměrné pole (array [1..n,1..n] of ...) doufám není problém.
Takže dejme tomu, že matici máš načtenou.
Jestli je talismanová (obsahuje všechna čísla 1..n^2), poznáš tak, že (třeba) si uděláš množinu čísel (set of byte, snad ta matice nebude moc velká), do ní nasypeš čísla od 1 do n^2 (buď sjednocením (+) nebo procedurou Include nebo prostě zápisem mnozina:=[1..n], kde n je konstanta). Potom projdi tu matici prvek po prvku (dvojitým cyklem typu For) a každé nalezené číslo z té množiny vyhoď (rozdílem (-) nebo procedurou Exclude). Pokud je na konci množina prázdná (mnozina=[]), znamená to, že matice je talismanová.
Jestli nemáš rád množiny, tak můžeš v matici hledat postupně čísla od 1 do n^2 a jakmile zjistíš, že tam některé z nich není, tak víš, že matice není talismanová.
Jestli dobře chápu, že řád je to číslo k, tak je to celkem jednoduchá úloha na nalezení minima. Postup: deklaruj si pomocnou proměnnou a vlož do ní nějakou největší možnou hodnotu (nebo radši abs. hodnotu rozdílu libovolných dvou prvků matice). Potom opět projdi celou matici prvek po prvku, u každého spočítej absolutní hodnotu (funkce Abs) rozdílu se všemi jeho sousedy (pozor na okraje matice, to ošetři ifem) a porovnej ji s tou pomocnou proměnnou. Pokud je ten rozdíl menší než ta proměnná, ulož ho do ní. Na konci budeš v té proměnné mít minimum, čili hledaný řád talismanové matice.
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Java - GUI prosím pomoc súrne — založil eraz
Surne! Ponukam Finančú Odmenu za Pomoc z PLC Simatic S7-300 — založil PlcHint
C++ potrebujem pomoc — založil Anonymní uživatel
Potrebujem pomoc!!! — založil Andel
Pomoc potrebujem — založil Marek
Moderátoři diskuze