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