Матрицы: номера строк и столбцов всех седловых точек матриц - C (СИ)
Формулировка задачи:
Дана целочисленная прямоугольная матрица. Определить:
1) Сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
2) Номера строк и столбцов всех седловых точек матриц.
Кто сможет, решите
Решение задачи: «Матрицы: номера строк и столбцов всех седловых точек матриц»
textual
Листинг программы
#include<stdio.h> #include<stdlib.h> #include<conio.h> int main(void) { int RowCount,ColCount; //количество строк и столбцов матрицы int i,j,k; //переменные цикла int Sum; //счетчик суммы int** Matrix; //матрица int flag; //флаг наличия отрицательного элемента int MinJ,MaxJ; //индексы столбца минимума и максимума int MinI,MaxI; //индексы строк минимума и максимума printf("%s","Enter number of rows:\n"); //вводим количество строк scanf("%d",&RowCount); printf("%s","Enter number of columns:\n"); //вводим количество столбцов scanf("%d",&ColCount); //выделение памяти Matrix=(int *)malloc(RowCount*sizeof(int*)); for(i=0;i<RowCount;i++) Matrix[i]=(int*)malloc(ColCount*sizeof(int)); //ввод матрицы for(i=0;i<RowCount;i++) { for(j=0;j<ColCount;j++) { printf("%s%d%s%d%s","Enter element [",i,";",j,"]:"); scanf("%d",&Matrix[i][j]); } } //вывод матрицы for(i=0;i<RowCount;i++) { for(j=0;j<ColCount;j++) { printf("%d%s",Matrix[i][j]," "); } printf("%s","\n"); } //задание 1 for(i=0;i<RowCount;i++) { j=0; flag=0; while((j<ColCount)&&(flag==0)) { if(Matrix[i][j]<0) flag=1; j++; } if(flag==1) { Sum=0; for(j=0;j<ColCount;j++) Sum=Sum+Matrix[i][j]; //считаем сумму элементов строки printf("%s%d%s%d%s","Row ",i," - Sum=",Sum,".\n"); } } //задание 2 for(i=0;i<RowCount;i++) { for(j=0;j<ColCount;j++) { //ищем минимум в строке, т.е. индекс столбца MinJ=0; for(k=1;k<ColCount;k++) { if(Matrix[i][k]<Matrix[i][MinJ]) MinJ=k; } //ищем максимум в столбце, т.е. индеск строки MaxI=0; for(k=1;k<RowCount;k++) { if(Matrix[k][j]>Matrix[MaxI][j]) MaxI=k; } if((MaxI==i)&&(MinJ==j)) printf("%s%d%s%d%s%d%s","Saddle point at [",i,";",j,"]=",Matrix[i][j],".\n"); else { //ищем максимум в строке, т.е. индекс столбца MaxJ=0; for(k=1;k<ColCount;k++) { if(Matrix[i][k]>Matrix[i][MaxJ]) MaxJ=k; } //ищем минимум в столбце, т.е. индеск строки MinI=0; for(k=1;k<RowCount;k++) { if(Matrix[k][j]<Matrix[MinI][j]) MinI=k; } if((MinI==i)&&(MaxJ==j)) printf("%s%d%s%d%s%d%s","Saddle point at [",i,";",j,"]=",Matrix[i][j],".\n"); } } } //освобождаем память for(i=0;i<RowCount;i++) free(Matrix[i]); free(Matrix); getch(); return 0; }
Объяснение кода листинга программы
- Объявление переменных: RowCount, ColCount, i, j, k, Sum, Matrix, flag, MinJ, MaxJ, MinI, MaxI.
- Ввод количества строк и столбцов.
- Выделение памяти под матрицу.
- Ввод матрицы.
- Вывод матрицы.
- Поиск строки с отрицательным элементом и вывод суммы элементов такой строки.
- Поиск столбца с минимальным элементом в строке и поиск строки с максимальным элементом в столбце.
- Проверка найденных седловых точек.
- Освобождение памяти.
- Возврат значения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д