Top.Mail.Ru
Ответы

Программирование. Массивы. Работа с максимальным значением и суммой.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
 #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-ом столбце найти максимальный элемент.
В той строке, где этот элемент находится, найти сумму модулей
элементов.
В чем ошибка?

По дате
По рейтингу
Аватар пользователя
Профи
9мес

Лайты, пишу на пайтоне.
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}")

Аватар пользователя
Искусственный Интеллект
9мес

#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;}

Аватар пользователя
Мудрец
9мес

хдэ код