Oppure

Loading
26/03/12 17:54
ShuichiAkai
Ciao a tutti!
ho un problema...
nel main ho dichiarato:

 char **mappa[11][2];


che passo a una funzione...
in questa funzione nella dichiarazione ho messo:
void funzione(***mappa)
{
      mappa[1][1]="nella cabina di pilotaggio";
      mappa[1][2]="000000000002";
      mappa[2][1]="ad un'estremita' del corridoio";
      mappa[2][2]="000300050100";
      ......
}


dove sbaglio?:(
aaa
26/03/12 18:05
nessuno
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

	char mappa[][2][50] = 
	{
		{"nella cabina di pilotaggio", "000000000002"}, 
		{"ad un'estremita' del corridoio", "000300050100"} 
	};

	printf("%s ... %s\n", mappa[0][0], mappa[0][1]);
	printf("%s ... %s\n", mappa[1][0], mappa[1][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à.
26/03/12 18:12
ShuichiAkai
allora..
inizialmente avevo questi due vettori:
char *descrizione_direzioni[dimensione1];
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:
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 26/03/12 18:14
aaa
26/03/12 21:16
nessuno
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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
31/03/12 22:54
ramy_89
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.
aaa
31/03/12 23:30
nessuno
Postato originariamente da ramy_89:

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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
11/05/12 17:52
splittik
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...


//riempire matrice
for(i=0; i<righe; i++){
for(j=0; j<righe; j++){
scanf("%f", &matrice[i*colonne+j])
}

//stampa matrice
//riempire matrice
for(i=0; i<righe; i++){
for(j=0; j<righe; j++){
printf("%f", matrice[i*colonne+j])
}
//stampa "\n"


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

ringrazio anticipatamente chiunque voglia spiegarmi la questione
ciaociao
aaa
11/05/12 17:54
splittik
Scusate ma questo è il codice corretto:pat:

for(i=0; i<righe; i++)
  {
    for(j=0; j<colonne; j++)
    {
      printf("\nElem (%d, %d):  ", i, j);
      scanf("%f", &matrA[i*colonne+j]);
    }
  }


for(i=0; i<colonne; i++)
  {
    for(j=0; j<righe; j++)
    {
      printf("%f ", matrB[i*righe+j]);
    }
    printf("\n");
  }

aaa