Определить максимальное значение в матрице и номер его столбца и строки. Почему не работает программа? - C (СИ)
Формулировка задачи:
Дана матрица размером N*M. Напишите программу, определяющую максимальное значение в матрице и номер его столбца и строки.Ввод с экрана.Динамические массивы.
Листинг программы
- #include<stdio.h>
- #include <iostream>
- #include <stdlib.h>
- #include <time.h>
- using namespace std;
- int main ( ) {
- setlocale(LC_ALL, "Russian");
- int **a,i,max,x,y,n,m,j;
- printf("N= ");
- scanf("%d", &n);
- printf("M= ");
- scanf("%d", &m);
- printf("\n Матрица \n");
- a=new int*[m];
- for(j=0;j<m;j++)
- a[j]=new int[n];
- for(i=0;i<n;i++)
- for(j=0;j<m;j++)
- scanf("%d", &a[j][i]);
- for(i=0;i<n;i++){
- for(j=0;j<m;j++)
- printf ("%d ", a[j][i]);
- printf ("\n");
- printf ("\n");}
- {
- max=a[i][j];
- for( i=0; i<=n; i++)
- for( j=0; j<m; j++)
- if(max< a[i][j]){
- max=a[i][j];
- x=i;
- y=j;
- }}
- printf("x=%f",x);
- printf("y=%f",y);
- printf("max=%d",max);
- system("pause");
- return 0;
- }
Решение задачи: «Определить максимальное значение в матрице и номер его столбца и строки. Почему не работает программа?»
textual
Листинг программы
- #include<stdio.h>
- #include <locale.h>
- #include <stdlib.h>
- int main ( )
- {
- int **a,i,max,x,y,n,m,j;
- setlocale(LC_ALL, "Russian");
- printf("N= ");
- scanf("%d", &n); // Количество строк
- printf("M= ");
- scanf("%d", &m); // Количество столбцов
- printf("\n Матрица \n");
- a=new int*[n];
- for(i=0;i<n;i++)
- a[i]=new int[m];
- for(i=0;i<n;i++)
- for(j=0;j<m;j++)
- scanf("%d", &a[i][j]);
- for(i=0;i<n;i++)
- {
- for(j=0;j<m;j++)
- printf ("%d ", a[i][j]);
- printf ("\n");
- }
- printf ("\n");
- max=a[0][0];
- x=y=0;
- for( i=0; i<n; i++)
- for( j=0; j<m; j++)
- if(max< a[i][j])
- {
- max=a[i][j];
- x=i;
- y=j;
- }
- for(i=0;i<n;i++)
- delete[] a[i];
- delete[] a;
- printf("x=%d\n",x);
- printf("y=%d\n",y);
- printf("max=%d\n",max);
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
- Программа начинает с ввода количества строк и столбцов матрицы с помощью функции scanf.
- Затем происходит выделение памяти под матрицу с помощью оператора new.
- Далее, с помощью двух вложенных циклов, происходит заполнение матрицы значениями с помощью функции scanf.
- Затем, с помощью двух вложенных циклов, происходит вывод значений матрицы на экран с помощью функции printf.
- После этого происходит поиск максимального значения в матрице с помощью двух вложенных циклов. Если текущее значение больше максимального, оно становится новым максимальным, а индексы (строка и столбец) этого значения сохраняются в переменных x и y.
- После этого происходит освобождение памяти, выделенной под матрицу, с помощью функции delete.
- Наконец, с помощью функции printf выводятся на экран найденные максимальное значение, строка и столбец.
- Программа завершается с помощью функции system(
pause
) и возвращает 0. Возможные причины ошибок:- Неверно указаны входные данные (количество строк или столбцов).
- Недостаточно памяти для выделения под матрицу.
- Возможно, ввод значений в матрицу или поиск максимального значения выполняются некорректно.
- Некорректно освобождается память после использования функции delete.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д