Программирование. Массивы. Работа с максимальным значением и суммой.
#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();
}
Задание: дана матрица A(N,M), которая вводится из файла, и число k,
вводимое с клавиатуры. В k-ом столбце найти максимальный элемент.
В той строке, где этот элемент находится, найти сумму модулей
элементов.
В чем ошибка?
Лайты, пишу на пайтоне.
import numpy as np
# Чтение матрицы из файла
def read_matrix_from_file(filename):
with open(filename, 'r') as file:
lines = file.readlines()
matrix = []
for line in lines:
row = list(map(int, line.split()))
matrix.append(row)
return np.array(matrix)
# Ввод числа k с клавиатуры
k = int(input("Введите номер столбца k: "))
# Чтение матрицы из файла
filename = "matrix.txt" # Укажите имя файла с матрицей
A = read_matrix_from_file(filename)
# Проверка, что k находится в допустимых пределах
if k < 0 or k >= A.shape[1]:
print("Номер столбца k выходит за пределы матрицы.")
else:
# Нахождение максимального элемента в k-ом столбце
max_element = np.max(A[:, k])
# Нахождение индекса строки, в которой находится максимальный элемент
max_row_index = np.where(A[:, k] == max_element)[0][0]
# Нахождение суммы модулей элементов в этой строке
sum_of_abs = np.sum(np.abs(A[max_row_index, :]))
print(f"Максимальный элемент в столбце {k}: {max_element}")
print(f"Сумма модулей элементов в строке с максимальным элементом: {sum_of_abs}")

#include <stdio.h>
#include <math.h>
int main(){
int n,m,k; printf("N M k: "); scanf("%d%d%d",&n,&m,&k); k--;
int a[n][m],i,j,p=0,s=0; FILE *fp; fp=fopen("matrix.txt","r");
for(i=0;i<n;i++)for(j=0;j<m;j++)fscanf(fp,"%d",&a[i][j]);
for(i=1;i<n;i++)if(a[i][k]>a[p][k])p=i; fclose(fp);
for(j=0;j<m;j++)s+=abs(a[p][j]); printf("sum=%d",s);return 0;}
хдэ код