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
V jazyku C Mam nacitane so stadardneho vstupu n riadkov po n znakov co vytvara stvorec. A chcem tuto maticu rotovat o 90stupnov doprava(a potom este 2 krat zopakovat ) , nevie mi niekto poradit ako na to? vdakaaa
Nacitane to je tak ze kazdy riadok je jedno pole charov.
A B C
D E F
G H I
G D A
H E B
I F C
Offline

Také Tě zdravím (slušní lidé to tak obvykle dělají)
zkusil bych tu matici uložit do dvourozměrnýho pole, a pak pomocí cyklů jednoduše měnit "řádkové" a "sloupcové" indexy.
Tedy - obecně, (kód ti dám, pokud nepochopíš níže uvedené, a pokud nebudu líný to psát) - znaky na indexy [1][x] budou mit [x][3], znaky na [2][x] budou mit [x][2] a znaky na [3][x] budou mit [x][1] - prostě prohodíš řádky za sloupce. x je iterační proměnná pozice na řádku.
Jak tuto operaci provedeš, udělej s polem co potřebuješ (například vypiš takto upravenou matici, opět pomocí cyklů), a operaci buď opakuj (nějakým "nadřízeným cyklem o celkem 3 průchodech), a nebo vrať řízení funkci main(...) (u konzlovky)
EDIT: s těma indexama - ať Ti nepletu hlavu - předpokládám ve výše uvedeném, že začneš cyklovat od jedničky, nikoli od nuly, jak je v C a obecně v programování zvykem - tedy nulté indexy obou rozměrů by v takovém případě zůstaly nevyužité, a pole by muselo mít velikost [4][4] (právě z povahy nulté pozice - pole deklarované jako [n] velké má poslední platný index n-1, index n je neplatný, a tím bys psal/četl paměť už za polem... Snad jsem Tě editem moc nezblbnul :)
Offline
Zdravím,
jde o běžné operace s maticemi. Stačí najít algoritmus a je to. Btw: jelikož se jedná o čtvercovou matici, o to více to máme jednoduší.
algoritmus (ve třech krocích)
1) vstupní matice
1 2 3
4 5 6
7 8 9
2) uděláme transponovanou matici (prohodíme řádky za sloupce)
1 4 7
2 5 8
3 6 9
3) a prohodíme sloupečky podle prostředního sloupce (osa y - řečeno lajdsky)
7 4 1
8 5 2
9 6 3
implementace (pro pseudokód)
for n = 0 to N - 2
for m = n + 1 to N - 1
swap A(n,m) with A(m,n)Offline