Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] Matrici

  1. #1

    [C] Matrici

    Come devo fare per passare una matrice ad una funzione? Ho provato a dichiararla come puntatore a puntatore ma non mi funziona...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Mostra il codice, sia quello in cui allochi la matrice, sia quello in cui la passi alla funzione ... e anche la funzione in questione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    codice:
    #include <stdio.h>
    
    #define dmax 5
    
    void Matr(int **var);
    
    int main(){
        int Matrice[dmax][dmax];
        printf("Inserisci matrice: \n");
        Matr(Matrice);
        getch();
    }
    
    void Matr(int **var){
        int i,j;
        for(i=0;i<dmax;i++)
        for(j=0;j<dmax;j++){
            printf("Inserisci valore della riga %d colonna %d\n",i+1,j+1);
            scanf("%d",&var[j][i]);
        }
        for(i=0;i<dmax;i++)
        for(j=0;j<dmax;j++){
            printf("%d\t",var[j][i]);}
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    codice:
    #include <stdio.h>
    
    #define DMAX 5
    
    void Matr(int m[][DMAX]);
    
    int main()
    {
        int Matrice[DMAX][DMAX];
        printf("Inserisci matrice: \n");
    
        Matr(Matrice);
    
        return 0;
    }
    
    void Matr(int m[][DMAX])
    {
        int i,j;
    
       for(i=0;i<DMAX;i++)
          for(j=0;j<DMAX;j++)
          {
    	printf("Inserisci valore della riga %d colonna %d\n",i+1,j+1);
    	scanf("%d",&m[j][i]);
          }
    
        for(i=0;i<DMAX;i++)
           for(j=0;j<DMAX;j++)
    	printf("%d\t",m[j][i]);
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ma perchè non posso metterla come puntatore a puntatore?
    Io per esempio per un vettore facevo
    void Funz(int *vett);
    per le matrici
    void Funz(int **matr); //perchè non va?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Se vuoi usare un puntatore a puntatore, devi dichiarare la matrice con

    int **Matrice;

    e allocarla dinamicamente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Si ma ad una funzione gli passo una matrice già allocata, quindi perchè non andava il mio programma?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Perche' la tua matrice e' allocata come una sequenza di interi in memoria.

    In memoria quindi non hai una sequenza di puntatori ma una sequenza di interi ... cosa molto diversa.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.