EDIT:alla fine ho risolto usando il double al posto del float
Ciao a tutti, sto cercando di creare un programma che elimini le linee con la somma=0 da una matrice e le salvi in un altra matrice, il problema è che il programma le elimina correttamente, ma non le riesco a salvare correttamente sull altra matrice perche praticamente mi salva soltanto la prima riga con somma=0 che incontra
int main()
{
int i;
int j;
riga struttura[NMAX];
int riga;
int colonna;
float mat[NMAX][NMAX];
FILE *fp = fopen("input.txt", "r");
if(fp == NULL)
{
perror("Error: ");
return 1;
}
if(fp != NULL)
{
fscanf(fp,"%d",&riga);
fscanf(fp,"%d",&colonna);
for( i=0; i<riga; i++)
for( j=0; j<colonna; j++)
fscanf(fp,"%G",&mat[i][j]);
}
fclose(fp);
int somma;
int k;
int x=0;
int n=0;
float buff[NMAX][NMAX];
for(i=0;i<riga;i++)
{ somma=0;
for(j=0;j<colonna;j++)
{
somma=somma+mat[i][j];
}
if(somma==0)
{ for(j=0;j<colonna;j++)
buff[x][j]=mat[i][j];
for(k=i;k<riga;k++)
for(j=0;j<colonna;j++)
mat[i][j]=mat[i+1][j];
}
riga--;
x++;
}
int rigacopia=x;
for(i=0;i<riga;i++){
printf("\n");
for(j=0;j<colonna;j++)
printf("%G ",mat[i][j]);
}
printf("\n\n");
for(x=0;x<rigacopia;x++){
printf("\n");
for(j=0;j<colonna;j++)
printf("%G ",buff[x][j]);
}
return 0;
}
il contenuto del file di input è questo:
5
4
-1 0 0 3.2
-1 0 0 1
3.2 0 0 3.2
-4.3 2.3 1 1
0 -3 2 1
L'output che ottengo è questo:
-1 0 0 3.2
3.2 0 0 3.2
^^La matrice viene modificata correttamente
0 0 0 0
-1 0 0 1
0 0 0 0
^^Solo 1 riga su 3 viene copiata correttamente