Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - vettori di vettori in c
Forum - C/C++ - vettori di vettori in c

Avatar
ShuichiAkai (Normal User)
Newbie


Messaggi: 2
Iscritto: 26/03/2012

Segnala al moderatore
Postato alle 19:54
Lunedì, 26/03/2012
Ciao a tutti!
ho un problema...
nel main ho dichiarato:

Codice sorgente - presumibilmente C/C++

  1. char **mappa[11][2];



che passo a una funzione...
in questa funzione nella dichiarazione ho messo:
Codice sorgente - presumibilmente C/C++

  1. void funzione(***mappa)
  2. {
  3.       mappa[1][1]="nella cabina di pilotaggio";
  4.       mappa[1][2]="000000000002";
  5.       mappa[2][1]="ad un'estremita' del corridoio";
  6.       mappa[2][2]="000300050100";
  7.       ......
  8. }



dove sbaglio?:(

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:05
Lunedì, 26/03/2012
E' tutto sbagliato ...

Hai dichiarato una matrice di puntatori doppi a char ... la vorresti passare attraverso un puntatore triplo ... vorresti assegnare una stringa con l' = in C ... addirittura senza avere allocato un byte di spazio per tali stringhe.

Praticamente da rifare.

A cominciare da cosa vuoi fare ... chiarisci.

Se vuoi, puoi solo *inizializzare* le stringhe costanti in questo modo

Codice sorgente - presumibilmente C/C++

  1. char mappa[][2][50] =
  2.         {
  3.                 {"nella cabina di pilotaggio", "000000000002"},
  4.                 {"ad un'estremita' del corridoio", "000300050100"}
  5.         };
  6.  
  7.         printf("%s ... %s\n", mappa[0][0], mappa[0][1]);
  8.         printf("%s ... %s\n", mappa[1][0], mappa[1][1]);



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
ShuichiAkai (Normal User)
Newbie


Messaggi: 2
Iscritto: 26/03/2012

Segnala al moderatore
Postato alle 20:12
Lunedì, 26/03/2012
allora..
inizialmente avevo questi due vettori:
Codice sorgente - presumibilmente C/C++

  1. char *descrizione_direzioni[dimensione1];
  2. char *direzioni_mappa[dimensione2];



da cui dovevo implementare i vettori di vettori
i vettori vengono usati in questo modo nella funzione a cui li passo:
Codice sorgente - presumibilmente Plain Text

  1. descrizione_direzioni[++fine_mappa] = "nella cabina di pilotaggio"; direzioni_mappa[fine_mappa] = "000000000002";



purtroppo non ho trovato molto in rete

Ultima modifica effettuata da ShuichiAkai il 26/03/2012 alle 20:14
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 23:16
Lunedì, 26/03/2012
Finché sono stringhe costanti allora puoi scrivere

descrizione_direzioni[++fine_mappa] = "nella cabina di pilotaggio";

altrimenti devi usare la funzione

strcpy

per assegnare una stringa e devi *prima* allocare lo spazio necessario.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
ramy_89 (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/04/2012

Segnala al moderatore
Postato alle 0:54
Domenica, 01/04/2012
Testo quotato

Postato originariamente da nessuno:
... vorresti assegnare una stringa con l' = in C ... addirittura senza avere allocato un byte di spazio per tali stringhe.



Questo si può fare, fintanto che non si accede in scrittura alla stringa (-> segmentation fault).Ma in lettura non ci sono problemi.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 1:30
Domenica, 01/04/2012
Testo quotato

Postato originariamente da ramy_89:

Testo quotato

Postato originariamente da nessuno:
... vorresti assegnare una stringa con l' = in C ... addirittura senza avere allocato un byte di spazio per tali stringhe.



Questo si può fare, fintanto che non si accede in scrittura alla stringa (-> segmentation fault).Ma in lettura non ci sono problemi.



Infatti avevo scritto "finchè si tratta di stringhe costanti" nel senso che non verranno modificate. In caso contrario, c'è l'allocazione e la strcpy.



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
splittik (Normal User)
Rookie


Messaggi: 27
Iscritto: 25/04/2012

Segnala al moderatore
Postato alle 19:52
Venerdì, 11/05/2012
Ciao...dato che si parla di matrici, vorrei postare le mie difficolà su questi argomento.

in internet ho trovato questa soluzione per riempire e stampare matrici ma non capisco come possa funzionare...


Codice sorgente - presumibilmente Plain Text

  1. //riempire matrice
  2. for(i=0; i<righe; i++){
  3. for(j=0; j<righe; j++){
  4. scanf("%f", &matrice[i*colonne+j])
  5. }
  6.  
  7. //stampa matrice
  8. //riempire matrice
  9. for(i=0; i<righe; i++){
  10. for(j=0; j<righe; j++){
  11. printf("%f", matrice[i*colonne+j])
  12. }
  13. //stampa "\n"



compilandolo ed eseguendolo funziona, ma quello che mi sembra di capire è
che si passa una sola posizione ovvero matrice e non matrice[j]

ringrazio anticipatamente chiunque voglia spiegarmi la questione
ciaociao


System.out.print("road to diventare sviluppatore");
PM Quote
Avatar
splittik (Normal User)
Rookie


Messaggi: 27
Iscritto: 25/04/2012

Segnala al moderatore
Postato alle 19:54
Venerdì, 11/05/2012
Scusate ma questo è il codice corretto:pat:

Codice sorgente - presumibilmente Plain Text

  1. for(i=0; i<righe; i++)
  2.   {
  3.     for(j=0; j<colonne; j++)
  4.     {
  5.       printf("\nElem (%d, %d):  ", i, j);
  6.       scanf("%f", &matrA[i*colonne+j]);
  7.     }
  8.   }
  9.  
  10.  
  11. for(i=0; i<colonne; i++)
  12.   {
  13.     for(j=0; j<righe; j++)
  14.     {
  15.       printf("%f ", matrB[i*righe+j]);
  16.     }
  17.     printf("\n");
  18.   }



System.out.print("road to diventare sviluppatore");
PM Quote