Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Rotazione matrice
Forum - Pascal - Rotazione matrice

Avatar
djleo (Member)
Pro


Messaggi: 72
Iscritto: 07/03/2010

Segnala al moderatore
Postato alle 18:34
Lunedì, 27/09/2010
Ciao come posso fare per far ruotare il contenuto di una matrice.
es

a b c d e
f g h i   j
k l m n o
p q r s t
u v w x y
z 1 2 3 4
5 6 7 8 9

Devo spostare tutto il contenuto verso sinistra di n elementi.
es
3
d e f g h
i j k l m
n o p q r
s t u v w
x y z 1 2
3 4 5 6 7
8 9 a b c

Datemi un indizio, ci sto lavorando da più di 3 giorni.























<a href=http://1-parts.autosites.com.ua/ >иномарки</a>

Ultima modifica effettuata da djleo il 27/09/2010 alle 20:52
PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 18:55
Lunedì, 27/09/2010
In geometria questo è possiblie
http://it.wikipedia.org/wiki/Rotazione_%28matematica%29

ma tu vuoi tipo scambiare le righe con le colonne??
esempio

a b  -->  a c
c d         b d

solo per matrici quadrate.


Ultima modifica effettuata da Bonny il 27/09/2010 alle 18:58
PM Quote
Avatar
djleo (Member)
Pro


Messaggi: 72
Iscritto: 07/03/2010

Segnala al moderatore
Postato alle 19:06
Lunedì, 27/09/2010
No non devo scambiare le colonne con le righe ma fare come da esempio

es

a b c d e
f g h i   j
k l m n o
p q r s t
u v w x y
z 1 2 3 4
5 6 7 8 9

Devo spostare tutto il contenuto verso sinistra di n elementi.
es
3
d e f g h
i j k l m
n o p q r
s t u v w
x y z 1 2
3 4 5 6 7
8 9 a b c



Ultima modifica effettuata da djleo il 27/09/2010 alle 19:11
PM Quote
Avatar
djleo (Member)
Pro


Messaggi: 72
Iscritto: 07/03/2010

Segnala al moderatore
Postato alle 20:54
Lunedì, 27/09/2010
Risolto in un modo molto bruto ma risolto. Spiego ho caricato il contenuto della matrice in un vettore poi ho fatto la rotazione in fine ho riportato il tutto nella matrice.



















PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 22:53
Lunedì, 27/09/2010
Salve,
se ho capito bene devi slittare tutti i caratteri di 3 posizioni, eventualmente portandoli sulla riga precedente; prova cosi':

Codice sorgente - presumibilmente Delphi

  1. Var Temp: array[1..3] of char;
  2.     I, J, Ki, Kj: Integer;
  3. [...]
  4. For I:=1 to NColonne do
  5. Begin
  6.   For J:=1 to NRighe do
  7.   Begin
  8.     Ki := I - 3;
  9.  
  10.     If (Ki < 0) Then
  11.        Begin
  12.          Ki := Ki + NColonne;
  13.          Kj := Kj - 1;
  14.        End
  15.      Else
  16.        Kj := J;
  17.  
  18.     If (Kj < 0) Then
  19.        Temp[I] := Matrice[I, J]
  20.      Else
  21.        Matrice[Ki, Kj] := Matrice[I, J]
  22.  
  23.   End;
  24.  
  25.   For I := 1 to 3 do
  26.     Matrice[NColonne + I - 3, NRighe] := Temp[I]
  27. End;



Ciao :k:

Luigi

Ultima modifica effettuata da gigisoft il 27/09/2010 alle 23:49
PM Quote
Avatar
crack001 (Normal User)
Rookie


Messaggi: 52
Iscritto: 25/10/2007

Segnala al moderatore
Postato alle 0:14
Martedì, 28/09/2010
da come ho capito è un lavoro di indici, utilizzi 2 cicli per una matrice, 1 per le righe e 1 per le colonne...devi rallentare l'indice delle righe...

PM Quote