Определить номер строки матрицы, сумма элементов которой максимальна - C (СИ)
Формулировка задачи:
Задача: Написать программу, которая определяет номер строки прямоугольной
матрицы случайных действительных чисел A[N][M], сумма элементов
которой максимальна. Вывести на экран эту строку отдельно.
Пока что дошло до этого...
Не знаю, как совместить выделение памяти для матрицы и нахождение строки с максимальной суммой элементов. Если возможно, то желательно написать всю программу на C, буду премного благодарен.
#include <stdio.h> #include <conio.h> #include <locale.h> #include <stdlib.h> typedef int *pInt; void main() { int M, N, i, j; int random (int N) {return rand() % N;} pInt *A; printf("Введите размер матрицы, сперва количество строк, потом количество строчек"); scanf("%d%d", &M, &N); A = new pInt[M]; for ( i = 0; i < M; i++ ) A[i] = new int[N]; int random ( int N ) { return rand() % N; } }
Решение задачи: «Определить номер строки матрицы, сумма элементов которой максимальна»
textual
Листинг программы
/*Задача: Написать программу, которая определяет номер строки прямоугольной матрицы случайных действительных чисел A[N][M], сумма элементов которой максимальна. Вывести на экран эту строку отдельно.*/ #include <stdio.h> #include <conio.h> #include <locale.h> #include <stdlib.h> #include <time.h> int i; int j; int m; int n; int k; int str_sum; int max_str; int max_str_id; int fill_matr(void){ //Функция заполняет матрицу srand (time( NULL )*k/1000);// инициализация функции rand значением int matr_number = rand(); return matr_number; //вернуть число } int main(int argc, char** argv[]) { setlocale(LC_ALL, "RUS"); puts("Введите количество столбцов матрицы:"); scanf("%d",&m); puts("Введите количество строк матрицы:"); scanf("%d",&n); int str_sum[m]; int matrix[m][n]; for (i = 0; i < m; i++ ){ for (j=0; j<n; j++){ matrix[i][j]=fill_matr();//заполняем матрицу k++; } printf( "\n" ); } printf( "Вот такой массив у нас получился:\n" ); for ( i = 0; i < m; i++ ) { str_sum[i]=0; for ( j = 0; j < n; j++ ) { printf( "[%d][%d]=%d ", i, j, matrix[i][j] ); str_sum[i]+=matrix[i][j];//вычисляем сумму эл-тов строки } printf( "\nсумма элементов строки: %d \n", str_sum[i] ); } int x; max_str=str_sum[0]; for ( x = 0; x < m; x++ ) { if (max_str<str_sum[x]){ max_str=str_sum[x]; max_str_id=x; } } printf( "Максимальная сумма элементов строки =%d и номер этой строки - %d \n \n",max_str,max_str_id); for(i=0; i<m; i++) { printf( "[%d][%d]=%d ", max_str_id, i, matrix[max_str_id][i] ); } }
Объяснение кода листинга программы
- Ввод количества столбцов и строк матрицы с помощью функции scanf.
- Создание матрицы и заполнение ее с помощью функции fill_matr, которая возвращает случайное число для каждого элемента матрицы.
- Вычисление суммы элементов каждой строки матрицы с помощью двух вложенных циклов и функции scanf.
- Поиск строки с максимальной суммой элементов с помощью двух вложенных циклов и функции if.
- Вывод на экран строки с максимальной суммой элементов с помощью функции printf.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д