Buonasera
Avrei un dubbio con un programma che in poche parole prende in un input una matrice di N righe ed M colonne, più un numero intero X e un puntatore ad intero. Io devo restituire una nuova matrice che contenga SOLAMENTE le righe della matrice originale in cui compare il numero X, ed assegnare al puntatore il numero di righe copiate.
Avevo pensato a questo
#include <stdio.h>
#include <stdlib.h>
int** estrai(int** mat, int n, int m, int x, int* p){
int** mat2=(int**) malloc (sizeof(int*));
int contatore=0;
int i=0;
int l=0;
int a=1;
for (i;i<n; i++) {
for (l; l<m; l++) {
if (mat[i][l]==x) {
mat2[contatore]=mat[i];
a++;
*(mat2)=realloc(*(mat2),sizeof(int*)*a);
contatore++;
i++;
}
}
}
*p=contatore;
return mat2;
}
Il problema si presenta quando c'è una riga che non contiene un elemento uguale ad X, poichè la funzione si interrompe. Come potrei risolvere? Grazie in anticipo.