#include <stdio.h>
#include <stdlib.h>
void acquisisci_matrice(FILE *, double**MAT, int, int);
double somma_riga(double *vett, int);
int main(void)
{
FILE *fp;
double **MAT;
double *somma;
int i, j, N, M;
fp = fopen("A:\Input.txt", "r");
if (fp == NULL)
{
printf("IMPOSSIBILE APRIRE IL FILE!");
exit(1);
}
fscanf(fp, "%d", &N);
fscanf(fp, "%d", &M);
somma = (double*)calloc(N, sizeof(double));//CREO LO SPAZIO NECESSARIO PER CONTENERE IL VETTORE SOMMA DELLE RIGHE
MAT = (double**)calloc(N, sizeof(double*));
for (i = 0; i<N; i++)
{
MAT[i] = (double*)calloc(M, sizeof(double));
}
acquisisci_matrice(fp, MAT, N, M);
fclose(fp);
printf("LA MATRICE RISULTA\n");
for (i = 0; i<N; i++)
{
for (j = 0; j<M; j++)
{
printf("%lf\t", MAT[i][j]);
}
printf("\n");
}
printf("LA SOMMA DI OGNI SINGOLA RIGA E':\n");
for (i = 0; i<N; i++)
{
somma[i] = somma_riga(MAT[i], M);
printf("%f", somma[i]);
printf("\n");
}
for (i = 0; i<N; i++)
{
free(MAT[i]);
}
free(MAT);
return 0;
}
void acquisisci_matrice(FILE *fp, double **MAT, int N, int M)
{
int i, j;
for (i = 0; i<N; i++)
{
for (j = 0; j<M; j++)
{
fscanf(fp, "%lf", &MAT[i][j]);
}
}
}
double somma_riga(double *vett, int N)
{
int i;
double summ = 0;
for (i = 0; i<N; i++)
{
summ+=vett[i];
}
return summ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgYWNxdWlzaXNjaV9tYXRyaWNlKEZJTEUgKiwgZG91YmxlKipNQVQsIGludCwgaW50KTsKZG91YmxlIHNvbW1hX3JpZ2EoZG91YmxlICp2ZXR0LCBpbnQpOwoKaW50IG1haW4odm9pZCkKewoJRklMRSAqZnA7Cglkb3VibGUgKipNQVQ7Cglkb3VibGUgKnNvbW1hOwoJaW50IGksIGosIE4sIE07CglmcCA9IGZvcGVuKCJBOlxJbnB1dC50eHQiLCAiciIpOwoJaWYgKGZwID09IE5VTEwpCgl7CgkJcHJpbnRmKCJJTVBPU1NJQklMRSBBUFJJUkUgSUwgRklMRSEiKTsKCQlleGl0KDEpOwoJfQoJZnNjYW5mKGZwLCAiJWQiLCAmTik7Cglmc2NhbmYoZnAsICIlZCIsICZNKTsKCXNvbW1hID0gKGRvdWJsZSopY2FsbG9jKE4sIHNpemVvZihkb3VibGUpKTsvL0NSRU8gTE8gU1BBWklPIE5FQ0VTU0FSSU8gUEVSIENPTlRFTkVSRSBJTCBWRVRUT1JFIFNPTU1BIERFTExFIFJJR0hFCglNQVQgPSAoZG91YmxlKiopY2FsbG9jKE4sIHNpemVvZihkb3VibGUqKSk7Cglmb3IgKGkgPSAwOyBpPE47IGkrKykKCXsKCQlNQVRbaV0gPSAoZG91YmxlKiljYWxsb2MoTSwgc2l6ZW9mKGRvdWJsZSkpOwoJfQoJYWNxdWlzaXNjaV9tYXRyaWNlKGZwLCBNQVQsIE4sIE0pOwoJZmNsb3NlKGZwKTsKCXByaW50ZigiTEEgTUFUUklDRSBSSVNVTFRBXG4iKTsKCWZvciAoaSA9IDA7IGk8TjsgaSsrKQoJewoJCWZvciAoaiA9IDA7IGo8TTsgaisrKQoJCXsKCQkJcHJpbnRmKCIlbGZcdCIsIE1BVFtpXVtqXSk7CgkJfQoJCXByaW50ZigiXG4iKTsKCX0KCXByaW50ZigiTEEgU09NTUEgREkgT0dOSSBTSU5HT0xBIFJJR0EgRSc6XG4iKTsKCWZvciAoaSA9IDA7IGk8TjsgaSsrKQoJewoJCXNvbW1hW2ldID0gc29tbWFfcmlnYShNQVRbaV0sIE0pOwoJCXByaW50ZigiJWYiLCBzb21tYVtpXSk7CgkJcHJpbnRmKCJcbiIpOwoJfQoJZm9yIChpID0gMDsgaTxOOyBpKyspCgl7CgkJZnJlZShNQVRbaV0pOwoJfQoJZnJlZShNQVQpOwoJcmV0dXJuIDA7Cn0Kdm9pZCBhY3F1aXNpc2NpX21hdHJpY2UoRklMRSAqZnAsIGRvdWJsZSAqKk1BVCwgaW50IE4sIGludCBNKQp7CglpbnQgaSwgajsKCWZvciAoaSA9IDA7IGk8TjsgaSsrKQoJewoJCWZvciAoaiA9IDA7IGo8TTsgaisrKQoJCXsKCQkJZnNjYW5mKGZwLCAiJWxmIiwgJk1BVFtpXVtqXSk7CgkJfQoJfQp9CmRvdWJsZSBzb21tYV9yaWdhKGRvdWJsZSAqdmV0dCwgaW50IE4pCnsKCWludCBpOwoJZG91YmxlIHN1bW0gPSAwOwoJZm9yIChpID0gMDsgaTxOOyBpKyspCgl7CgkJc3VtbSs9dmV0dFtpXTsKCX0KCXJldHVybiBzdW1tOwp9