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
C/C++ - Problema con vettore multidimensionale
Forum - C/C++ - Problema con vettore multidimensionale - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 9:20
Lunedì, 26/03/2012
Ho provato questo codice:

Codice sorgente - presumibilmente C++

  1. void roto(int cube, int cubic[][cube][cube], int row, bool direction, int nrot);
  2.  
  3.  
  4.  
  5. int main()
  6. {
  7. int cubic[10][10][10];
  8. roto(10, cubic, 0, 0, 1);
  9. }
  10.  
  11.  
  12.  
  13. void roto(int cube, int cubic[][cube][cube], int row, bool direction, int nrot)
  14. {
  15.     int tmp[cube];
  16.     int i;
  17.  
  18.     while(nrot-- > 0)
  19.     {
  20.     for(i = 0; i <= cube - 2; i++)
  21.     {
  22.       memcpy(tmp, cubic[i + 1][row][0], sizeof(int) * cube);
  23.       memcpy(cubic[i + 1][row][0], cubic[0][row][0], sizeof(int) * cube);
  24.       memcpy(cubic[0][row][0], tmp, sizeof(int) * cube);
  25.     }
  26.     }
  27. }



Restituisce un errore durante l'esecuzione del programma.

Ultima modifica effettuata da drewnik99 il 26/03/2012 alle 9:21
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:48
Lunedì, 26/03/2012
E che è cube?

Ti ho detto di usare delle costanti ... quindi cube non serve e le costanti devono essere indicate

void roto(int cubic[10][10][10], int row, bool direction, int nrot)

e quindi

roto(cubic, 0, 0, 1);


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 16:12
Giovedì, 29/03/2012
Perchè dopo aver allocato dinamicamente il vettore a tre dimensioni cubic, posso accedere ad esso, ad esempio per stampare un valore che contiene(printf("%i", cubic[num][num][num])), ma non riesco ad utilzzare memcpy:

Codice sorgente - presumibilmente Plain Text

  1. memcpy(cubic, mio_array, sizeof(mio_array));



mio_array è un array monodimensionale della stessa grandezza di cubic.


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 1:23
Venerdì, 30/03/2012
Testo quotato

Postato originariamente da drewnik99:

Perchè dopo aver allocato dinamicamente il vettore a tre dimensioni cubic, posso accedere ad esso, ad esempio per stampare un valore che contiene(printf("%i", cubic[num][num][num])), ma non riesco ad utilzzare memcpy:

Codice sorgente - presumibilmente Plain Text

  1. memcpy(cubic, mio_array, sizeof(mio_array));



mio_array è un array monodimensionale della stessa grandezza di cubic.




Non puoi usare il memcpy tra un "vettore lineare in memoria" e un array allocato dinamicamente tramite vettori di puntatori ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 14:25
Venerdì, 30/03/2012
Esiste allora un'alternativa altrettanto efficiente?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:34
Venerdì, 30/03/2012
Dovresti allocare il primo vettore come un array unidimensionale (come il secondo insomma) e allora potresti usare la memcpy ma non potresti usare l'accesso del tipo [][][] ...

Oppure usa delle for per copiare i singoli vettori con tante memcpy


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo