#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int xsum(int k, int n, int **x)
{
int i, s=0;
for(i=0; i<n; i++)
s += fabs(x[k][i]);
return s;
}
void xmax(int n, int*x, int*r, int*k)
{
int i;
*r=x[0]; *k=0;
for(i=1;i<n;i++)
if (x[i]>*r)
{
*r=x[i]; *k=i;
}
return;
}
int main()
{
int i, j, n, m, k, r, *y, *x, *s, **a;
FILE *in;
if((in=fopen("digits.txt","r"))==NULL){
printf("\nFile is not opened");
getchar();
exit(1);
}
printf("Type values of m and n: ");
scanf("%d%d", &m, &n);
x=(int*)malloc(n*sizeof(int));
s=(int*)malloc(n*sizeof(int));
a=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
a[i]=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fscanf(in, "%d",&a[i][j]);
printf("Type the number of the column (k): ");
scanf("%d", &k);
xmax(m, y, &r, &k);
y = (int*)malloc(n * sizeof(int));
for(i=0;i<n;i++)
y[i] = a[i][k];
printf("summ = %d, max_element = %d", xsum(k, n, a), r);
for(i=0;i<n;i++)
free(a[i]);
free(a); free(x); free(s); free(y);
fclose(in);
getchar();
}
вводимое с клавиатуры. В k-ом столбце найти максимальный элемент.
В той строке, где этот элемент находится, найти сумму модулей
элементов.
Я составил следующий код:
Пробовал вводить разные значения — ответы неверные. Например, при m = 3 и n = 3 программа выдает: "summ = 12, max_element = 1077940385". Подскажите, в чем ошибка?
Файл txt такой: 3 -4 5 -5 0 1 -1 -2 3.