» »

rotiranje dvodimenzionalnih matrik

rotiranje dvodimenzionalnih matrik

freserovski ::

Oj, imam en problem, kako to naredit, nekaj sem ustvarjal, ampak ne deluje najboljše, rotirat mora samo zunanje ploskve matrike :

1234
5678
9876

2348
1676
5987
tako bi naj deloval program, naredil sem tako, vendar mi stavki za premik stolpca na levi in spodnje vrstice odrežeta zadnje cifre :\ , stavka za zgornjo vrstico in desni stolpec pa delata pravilno...
void rotiranje_robnih_el(int polje[vel][vel][vel])
{
int temp,temp1,temp2,temp3;
for (int i=0; i < glo; i + + ){

for (int j=0; j < vis; j + + ){

for (int k=0; k < sir; k + + ){



if (j==0){//obraca zgornjo vrstico
temp2=polje[i][j][k];
polje[i][j][k]=polje[i][j][k+1];
polje[i][j][k+1]=temp2;}

if(k==0){//obraca levi stolpec
temp=polje[i][vis-j-1][k];
polje[i][vis-j-1][k]=polje[i][vis-j-2][k];
polje[i][vis-j-2][k]=temp;}

if(j==vis-1){//obraca spodnjo vrstico
temp1=polje[i][j][sir-k-1];
polje[i][j][sir-k-1]=polje[i][j][sir-k-2];
polje[i][j][sir-k-2]=temp1;}

if(k==sir-1){//obraca desni stolpec
temp3=polje[i][j][k];
polje[i][j][k]=polje[i][j+1][k];
polje[i][j+1][k]=temp3;}
Problemi so, problemi bodo! Kurc jih gleda!!

Seadoo ::

A to rabiš za matriko poljubne velikosti al točno 3x4? Pa tista tvoja koda je res ful pregledna... dej raje tri normalne for stavke.

freserovski ::

za poljubno rabim :) , sment, koda se pa sploh ne vidi cela, a obstaja kak html ukaz, da bi lahko normalno kodo vstavo sem?
Problemi so, problemi bodo! Kurc jih gleda!!

Seadoo ::

Če hočeš vstavit kodo, uporabi PRE ukaz.

Glede kode pa: ne razumem zakaj ti to teče po treh spremenljivkah? Matrika je dvodimenzinalna, zakaj rabiš še tretjo dimenzijo?

Če pa že praviš da ti odreže samo zadnje elemente, probaj spremenit robne pogoje zank...

Zgodovina sprememb…

  • spremenilo: Seadoo ()

d-mon ::

Vse matrike v Cju se pisejo kot enodimenzionalna tabela.

Recimo matrika 4x4 je matrix[16], kjer potem v for zanki naredis tako, da je multiplikator od 4 vedno prvi stolpec, i+1 drugi....
Tako si celotno kodo pohitris in seveda poenostavis.

Se pravi pri tvojem primeru bi moral pozicijo iz mesta i premakniti na mesto i+4, kjer je i multiplikator 4, za vse ostale pa na mesto i-1.
[D-mon]


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Spreminjanje vrednosti v polju [C]

Oddelek: Programiranje
102042 (1841) specing
»

križci krožci c # (strani: 1 2 )

Oddelek: Programiranje
5011170 (9829) Yacked2
»

Kruskalov algoritem težave pri implementaciji

Oddelek: Programiranje
51540 (1314) zacetnik11
»

Programski jezik C- pomoč

Oddelek: Programiranje
61621 (1539) alexa-lol
»

Bubble sort

Oddelek: Programiranje
71484 (1376) OwcA

Več podobnih tem