Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    [c] passare ad una funzione un multiarray

    ho creato una funzione così:
    codice:
    void creo_array_colonna(char *a, char **m, int l){ .... }


    richiamata cosi:
    codice:
      char mappa[MAXR][MAXC];
      char st2[lungh_arg];
      creo_array_colonna(st2,&mappa[i][j],lungh_arg);
    Il mio scopo sarebbe di creare una funzione per stampare una colonna della matrice.
    dove sbaglio? Il compilatore mi dice: "tipi incompatibili".

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Allora...ho fatto questa modifica, ma ancora non ci siamo. Ho fatto una prova per stampare un carattere della matrice. ma ottengo il carattere ripetuto un po' di volte..

    codice:
    stampa_car_colonna(char m[][70], int x, int y){
      int i;
        printf("%c",m[x][y]);
    }
    la chiamo cosi:
    codice:
    stampa_car_colonna(mappa,3,7);

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Se la matrice è dichiarata come
    codice:
    char mappa[MAXR][MAXC]
    assumera come tipo
    codice:
    char (*)[MAXC]
    per cui il codice dovrebbe essere
    codice:
    void creo_array_colonna(char*a,char (*m)[MAXC],int l){....} 
    e ovviamente lo stesso per il resto...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Questo è un esempio creato ad-hoc. Non ha nessun significato ne uso se non quello di spiegare...
    codice:
    #include <stdio.h>
    
    #define SIZE 5
    
    
    void inizializza(char (*mat)[SIZE], int righe, int colonne) {
    	int i, j;
    	for(i = 0; i < righe; i++) {
    		for(j = 0; j < colonne; j++) {
    			mat[i][j] = 'a' + i * SIZE + j;
    		}
    	}
    }
    
    
    char stampacolonna(char (*mat)[SIZE], int righe, int colonna) {
    	int i;
    	for(i = 0; i < righe; i++) {
    		printf("%c\n", mat[i][colonna]);
    	}
    }
    
    
    int main(void) {
    	char a[SIZE][SIZE];
    	int i, j;
    	inizializza(a, SIZE, SIZE);
    	stampacolonna(a, SIZE, 3);
    	return 0;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.