StandardOil ha scritto:
Ma un minimo di main() per poter provare le tue funzioni non ne metti mai?
la tua funzione mi "suona strana", ma non mi ci metto a provarla senza un main()
tu la hai provata? funziona anche su casi di matrici di ordine 4 o 5?
Per ordini superiori non mi fa la somma di tutte .PS: in effetti si, solo che non commentando si potrebbe non capire, perciò non lo posto,comunque ecco qui
#include <stdio.h>
#include <stdlib.h>
#define MAX 16
void leggi(int mat[MAX][MAX],int *r,int *c);
void stampa(int mat[MAX][MAX],int r,int c);
void somma(int mat[MAX][MAX],int r,int c);
int main()
{
int mat[MAX][MAX],r,c;
leggi(mat,&r,&c);
stampa(mat,r,c);
printf("\n\n");
somma(mat,r,c);
return 0;
}
void leggi(int mat[MAX][MAX],int *r,int *c)
{
FILE *fp=fopen("input.txt","r");
if(fp!=NULL)
{
fscanf(fp,"%d",r);
fscanf(fp,"%d",c);
for(int i=0;i<*r;i++)
for(int j=0;j<*c;j++)
fscanf(fp,"%d",&mat[i][j]);
fclose(fp);
}
}
void stampa(int mat[MAX][MAX],int r,int c)
{
for(int i=0;i<r;i++)
{
printf("\n");
for(int j=0;j<c;j++)
printf(" %d \t",mat[i][j]);
}
}
void somma(int mat[MAX][MAX],int r,int c)
{
int somma = 0;
for(int i=0; i<r; i++)
{ for (int j=0; j<c; j++)
{
for(int k=1;k<=r-1-j-i;k++)
{
if(k==1)
{
somma=somma+mat[i][j]+mat[i+k][j+k];
}
else somma=somma+mat[i+k][j+k];
}
printf("%d ",somma);
somma=0;
}
}
}