В квадратной матрице найти максимум главной диагонали и минимум в побочной - C (СИ)
Формулировка задачи:
#include <stdio.h> int main(int argc, char *argv[]) { int a, m[a][a], max, min; printf("Vvedite kolichestvo strok stolbcov: "); scanf("%d",&a); printf("Vvedite matricu: \n"); for(int i=0; i<a;i++) for(int j=0; j<a; j++) scanf("%d", &m[i][j]); min=m[0][0]; max=m[0][0]; for(int i=0; i<a;i++) for(int j=0; j<a; j++){ if(i==j) if(max<m[i][j]) max=m[i][j]; if(i+j==a-1) if(min>m[i][j]) min=m[i][j]; } printf("%d %d",max, min); return 0; }
Решение задачи: «В квадратной матрице найти максимум главной диагонали и минимум в побочной»
textual
Листинг программы
#include <stdio.h> //Библиотека стандартного ввода/вывода int main(int argc, char *argv[]) { int N,M; //Переменные для хранения размера матрицы //Приглашение к вводу размеров матрицы printf("Введите размеры матрицы: "); //Ввод размеров матрицы scanf("%d %d",&N,&M); //Если размеры введены некорректно, то выход из программы if((N<2)||(M<2)){ printf("Размеры введены некорректно!\n"); return 0; } //Приглашение к вводу матрицы printf("Введите матрицу:\n"); //Создание динамической матрицы int matrix[N][M]; //Ввод матрицы в двух вложенных циклах for(int i=0;i<N;i++) for(int j=0;j<M;j++) scanf("%d",&matrix[i][j]); //Объявление и инициализация переменных для хранения //значений максимума и минимума матрицы int max = matrix[0][0], min = matrix[0][0]; //Объявление и инициализация переменных для хранения //номеров строк, содержащих максимум и минимум матрицы int imax = 0, imin = 0; //Просмотр всей матрицы в двух вложенных циклах for(int i=0;i<N;i++) for(int j=0;j<M;j++){ //Если текущий элемент матрицы больше найденного ранее //максимума, то записываем новый максимум и его строку if(max < matrix[i][j]) {max = matrix[i][j]; imax = i;} //Если текущий элемент матрицы меньше найденного ранее //минимума, то записываем новый минимум и его строку if(min > matrix[i][j]) {min = matrix[i][j]; imin = i;} } //Если номер строки минимума не равен номеру строки //максимума, то обмениваем значения строк if(imin != imax){ //Обмен значений двух строк в цикле по всем столбцам //через дополнительную переменную for(int j=0;j<M;j++){ int tmp = matrix[imin][j]; matrix[imin][j] = matrix[imax][j]; matrix[imax][j] = tmp; } }else{ //В противном случае //Обнуление всех элементов строки for(int j=0;j<M;j++) matrix[imin][j] = 0; } //Форматированный вывод результата printf("Результат:\n"); for(int i=0;i<N;i++){//Цикл по строкам матрицы //Вывод строки матрицы for(int j=0;j<M;j++) printf("%4d ",matrix[i][j]); //Переход на новую строку printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде выполняются следующие действия:
- Подключение библиотеки стандартного ввода/вывода.
- Определение переменных N и M для хранения размеров матрицы.
- Вывод приглашения к вводу размеров матрицы.
- Ввод размеров матрицы с помощью функции scanf.
- Проверка корректности введенных размеров матрицы. Если они некорректны, программа выводит сообщение об ошибке и завершается.
- Создание динамической матрицы с помощью массива matrix.
- Ввод матрицы в двух вложенных циклах с помощью функции scanf.
- Инициализация переменных max и min для хранения максимального и минимального значений матрицы, а также переменных imax и imin для хранения номеров строк, содержащих эти значения.
- Проход по всей матрице в двух вложенных циклах и обновление max и min, если найдены новые значения.
- Если min и max находятся в разных строках, обмен значений этих строк.
- Если min и max находятся в одной и той же строке, обнуление всех элементов этой строки.
- Форматированный вывод результата с помощью цикла for и функции printf.
- Возврат 0, указывающий на успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д