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 29. 10. 2011 20:28

milwoukee
Příspěvky: 158
Reputace:   
 

otocenie pola v C

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

 

#2 29. 10. 2011 21:01 — Editoval frank_horrigan (29. 10. 2011 21:47)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: otocenie pola v C

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 :)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#3 30. 10. 2011 15:12 — Editoval RePRO (30. 10. 2011 15:22)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: otocenie pola v C

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)

Code:

for n = 0 to N - 2
    for m = n + 1 to N - 1
        swap A(n,m) with A(m,n)

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson