Problema nell'usare una matrice

di il
3 risposte

Problema nell'usare una matrice

Salve ragazzi ho 1 problema nel gestirmi questa matrice mi da svariati errori a cominciare dai prototipi scorretti vi posto il codice


#include <stdio.h>
void acquis(int[][],int,int,int);
void inizializza(int[][],int,int,int);
void stampa(int[][],int,int,int);

int main(int argc, const char * argv[])
{   int mat[5][5],scelta,size;
    int i,j;
    
    
    size=5;
    i=j=0;  
    do{
        
        printf("1:inizializza.\n");
        printf("2:acquisisci.\n");
        printf("3:stampa.\n");
        printf("4:esci\n");
        scanf("%d",&scelta);
        switch(scelta){
                
            case 1: inizializza(mat, i, j,size);
                break;
            case 2:  acquis(mat, i, j,size);
                break;
            case 3: stampa(mat,i,j,size);
                break;
                
            case 4: printf("arrivederci\n");
            default: printf("scelta errata\n");
                
                
        }
    }while(scelta!=4);

 
    return 0;
}



void acquis(int mat[][],int i,int j,int size){
    for(i=0;i<size;i++){
        for(j=0;j<size;j++){
            printf("inserisci l'elemento(%d,%d)\n",i,j);
            scanf("%d ",&mat[i][j]);
        }
        }

}


void inizializza(int mat[][],int i,int j,int size){

    for(i=0;i<size;i++){
        for(j=0 ;j<size;j++)
            mat[i][j]=0;
    }

}


void stampa(int mat[][],int i,int j,int size){

    for(i=0;i<size;i++){
        
        for(j=0;j<size;j++){
            printf("%d ",mat[i][j]);
        }
        printf("\n");        
        }




}


3 Risposte

  • Re: Problema nell'usare una matrice

    Sia il vettore che la matrice vengono passate per riferimento, MA mentre nel vettore il compilatore è in grado di puntare all'elemento eseguendo una semplice addizione, nella matrice non può farlo a meno che non conosca a precedentemente la dimensione della COLONNA.
    
    void foo (int vettore[], int n);
    void bar (int matrice[COLONNA][], int n);
    
    OPPURE si può passare il puntatore al primo elemento della matrice e calcolarsi la posizione dell'elemento con una formula: ptr_elemento=ptr_matrice+(i*COLONNA)+j
    OPPURE passando un array di puntatori. Scelta spesso utilizzata nelle allocazioni di matrici dinamiche
  • Re: Problema nell'usare una matrice

    ixamit ha scritto:


    Sia il vettore che la matrice vengono passate per riferimento, MA mentre nel vettore il compilatore è in grado di puntare all'elemento eseguendo una semplice addizione, nella matrice non può farlo a meno che non conosca a precedentemente la dimensione della COLONNA.
    
    void foo (int vettore[], int n);
    void bar (int matrice[COLONNA][], int n);
    
    La colonna è sempre quella a destra
    void bar (int matrice[][COLONNA], int n);
  • Re: Problema nell'usare una matrice

    shodan ha scritto:


    La colonna è sempre quella a destra
    void bar (int matrice[][COLONNA], int n);
    Eh.. già
Devi accedere o registrarti per scrivere nel forum
3 risposte