cybergabry
02-04-2008, 00:19
Salve ragazzi, vi chiedo aiuto per scovare l'errore in questo programma.
Tale programma crea una matrice quadrata di dimensione specificata dall'utente, la stampa, richiede gli interi i1, i2, j1 e j2, crea la sottomatrice degli elementi compresi tra le righe i1 e i2 e tra le colonne j1 e j2 della matrice di partenza e stampa quest'ultima sottomatrice. All'interno del main, alla riga in cui richiamo la funzione sottomatrice ricevo dal compilatore un errore di undefined reference. Per favore qualcuno può darmi una mano a capire e correggere? Grazie.
#include <stdio.h>
#include <stdlib.h>
void sottomatrice (int **mat1, int **mat2, int i1, int i2, int j1, int j2);
int main ()
{
int i1, i2, j1, j2;
int dim1, cont=100, i, j;
int **mat1, **mat2;
printf ("Inserisci la dimensione della matrice di partenza ");
scanf ("%d", &dim1);
printf ("\nInserisci i1");
scanf ("%d", &i1);
printf ("\nInserisci i2");
scanf ("%d", &i2);
printf ("\nInserisci j1");
scanf ("%d", &j1);
printf ("\nInserisci j2");
scanf ("%d", &j2);
mat1=(int**) malloc (dim1*sizeof(int*));
for (i=0; i<dim1; i++)
{
mat1[i]= (int*) malloc (dim1*sizeof(int));
printf ("\n");
for (j=0; j<dim1; j++)
{
mat1[i][j]=cont;
printf (" %d ", mat1[i][j]);
cont++;
}
}
mat2=(int**) malloc ((i2-i1+1)*sizeof(int*));
for (i=0; i<(i2-i1+1); i++)
mat2[i]= (int*) malloc ((j2-j1+1)*sizeof(int));
sottomatrice (mat1, mat2, i1-1, i2-1, j1-1, j2-1);
for (i=0; i<i2-i1+1; i++)
{
printf ("\n");
for (j=0; j<j2-j1+1; j++)
printf (" %d ", mat2[i][j]);
}
return 0;
}
void sottomatrtice (int **mat1, int **mat2, int i1, int i2, int j1, int j2)
{
int i, j, x=0, y;
for (i=i1; i<i2+1; i++)
{
y=0;
for (j=j1; j<j2+1; j++)
{
mat2[x][y]=mat1[i][j];
y++;
}
x++;
}
}
Tale programma crea una matrice quadrata di dimensione specificata dall'utente, la stampa, richiede gli interi i1, i2, j1 e j2, crea la sottomatrice degli elementi compresi tra le righe i1 e i2 e tra le colonne j1 e j2 della matrice di partenza e stampa quest'ultima sottomatrice. All'interno del main, alla riga in cui richiamo la funzione sottomatrice ricevo dal compilatore un errore di undefined reference. Per favore qualcuno può darmi una mano a capire e correggere? Grazie.
#include <stdio.h>
#include <stdlib.h>
void sottomatrice (int **mat1, int **mat2, int i1, int i2, int j1, int j2);
int main ()
{
int i1, i2, j1, j2;
int dim1, cont=100, i, j;
int **mat1, **mat2;
printf ("Inserisci la dimensione della matrice di partenza ");
scanf ("%d", &dim1);
printf ("\nInserisci i1");
scanf ("%d", &i1);
printf ("\nInserisci i2");
scanf ("%d", &i2);
printf ("\nInserisci j1");
scanf ("%d", &j1);
printf ("\nInserisci j2");
scanf ("%d", &j2);
mat1=(int**) malloc (dim1*sizeof(int*));
for (i=0; i<dim1; i++)
{
mat1[i]= (int*) malloc (dim1*sizeof(int));
printf ("\n");
for (j=0; j<dim1; j++)
{
mat1[i][j]=cont;
printf (" %d ", mat1[i][j]);
cont++;
}
}
mat2=(int**) malloc ((i2-i1+1)*sizeof(int*));
for (i=0; i<(i2-i1+1); i++)
mat2[i]= (int*) malloc ((j2-j1+1)*sizeof(int));
sottomatrice (mat1, mat2, i1-1, i2-1, j1-1, j2-1);
for (i=0; i<i2-i1+1; i++)
{
printf ("\n");
for (j=0; j<j2-j1+1; j++)
printf (" %d ", mat2[i][j]);
}
return 0;
}
void sottomatrtice (int **mat1, int **mat2, int i1, int i2, int j1, int j2)
{
int i, j, x=0, y;
for (i=i1; i<i2+1; i++)
{
y=0;
for (j=j1; j<j2+1; j++)
{
mat2[x][y]=mat1[i][j];
y++;
}
x++;
}
}