Matrici allocate dinamicamente

di il
8 risposte

Matrici allocate dinamicamente

Salve! Mi servirebbe una grossa mano
Devo creare un programma in cui l'utente inserisce due matrici, e in seguito viene effettuato il prodotto e la somma di esse.
Il programma va effettuato utilizzando le funzioni.
Ora mi sto concentrando sulla funzione che crea la matrice ( le matrici devono essere allocate dinamicamente).
Ho il codice che crea la matrice ma non so come va impostato nella funzione, ovvero che paramentri di ingresso inserire e cosi via.
Questo è il codice che ho fatto finora:

/* inclusione delle librerie */
#include <stdio.h>

/* dichiarazione delle funzioni */

void crea_matrice(double **);

int main(void)
{
     
     double **matrice;
     crea_matrice(matrice[][num_colonne]);
     return(0);
}

 /* definizione della funzione per creare una matrice */

 void crea_matrice(double ** matrice[][num_colonne])
{


        int num_righe, num_colonne;
        int i, j;
  
        printf("inserisci il numero di righe della matrice --> ");
 scanf("%d",&num_righe);
 
 printf("\n\nInserisci il numero di colonne della matrice --> ");
 scanf("%d",&num_colonne);
 
/* inizializzo le righe della matrice */

 matrice= (double**) malloc (num_righe*sizeof(double*));
 
/* inizializzo anche tutte le colonne della matrice */

 for(i = 0; i< num_righe; i++)
 {
     matrice[i] = (double*)malloc(num_colonne*sizeof(double));
 }

/*riempio la matrice*/
 
  for( i = 0; i < num_righe; i++)
   {
      for(j = 0; j< num_colonne; j++)
      {
         printf("\nElemento della %d riga e della %d colonna: ", i+1, j+1);
         scanf("%lf", &matrice[i][j]);
      }
   }
   
   printf("Ecco la matrice:\n\n");

   for(i=0; i<num_righe; i++)
   {
      
      for( j=0; j< num_colonne; j++)
      {
	      
         printf(" %.2f ",matrice[i][j]);
      }
      printf("\n");
   }


}
Non so come impostare correttamente la matrice come parametro in ingresso, mi date una mano?

8 Risposte

  • Re: Matrici allocate dinamicamente

    Ciao, inizia a postare il codice tra gli appositi tag, altrimenti non si capisce nulla!
  • Re: Matrici allocate dinamicamente

    Nippolo ha scritto:


    Ciao, inizia a postare il codice tra gli appositi tag, altrimenti non si capisce nulla!
    In che senso? Comunque, puoi aiutarmi?
  • Re: Matrici allocate dinamicamente

    Usa un puntatore ad un doppio puntatore.
  • Re: Matrici allocate dinamicamente

    oregon ha scritto:


    Usa un puntatore ad un doppio puntatore.
    In che senso? che paramentri devo inserire nella funzione quando la definisco?
  • Re: Matrici allocate dinamicamente

    In quale senso vuoi che sia? Per la funzione che crea la matrice ti ho detto quale parametro usare. Un puntatore al doppio puntatore.
  • Re: Matrici allocate dinamicamente

    oregon ha scritto:


    In quale senso vuoi che sia? Per la funzione che crea la matrice ti ho detto quale parametro usare. Un puntatore al doppio puntatore.
    quindi :
    
    void crea_matrice(double*** matrice) 
    
    questo intendi?
  • Re: Matrici allocate dinamicamente

    Certo ...
  • Re: Matrici allocate dinamicamente

    Oppure puoi eliminare i parametri, e fare si che la funzione restituisca un doppio puntatore (passando da "void a(float***b)" a "float**a()"). In tal caso dovrai assegnare il risultato della funzione a un doppio puntatore (passando da "float **b=NULL;a(&b)", situazione attuale, a "float **b=a();"). Dipende da quanto vuoi contorcere la casa
Devi accedere o registrarti per scrivere nel forum
8 risposte