Определить номер строки матрицы, сумма элементов которой максимальна - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д