Напечатать индексы всех седловых точек - C (СИ)
Формулировка задачи:
Добрый день! Я заблудился в коде. Не могу найти среди скобочек и всяких %d ошибку. Дана матрица 6х8 Напечатать индексы всех седловых точек. Программа проходит стадию вывода на экран самой матрицы, но дальше упорно не работает. Help me! Please!
// 7_1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <math.h> #include <locale.h> void main() { const int n=8,m=6; int mas[n][m]; int i,j,k,speedi,speedj,max,h,l; bool flag; setlocale(LC_ALL,"RUSSIAN"); printf("Введите матрицу 6x8\n"); for (i=0;i<n;i++) { for (j=0;j<m;j++) { printf("MAS[%d,%d]\n",i+1,j+1); scanf_s("%d",&mas[i][j]); } } printf("Полученная матрица:\n"); for (i=0;i<n;i++) { for (j=0;j<m;j++) { printf("%3.1d ",mas[i][j]); } printf(" \n"); } h=0; for (i=0;i<n;i++) { max=mas[i][1]; speedi=i; speedj=1; for (j=2;j<m;j++) { if (mas[i][j]<max) { max=mas[i][j]; speedi=i; speedj=j; }} k=1; flag=true; do { if (mas[k,speedj>max]) { flag=false; k++; } } while ((k>n)||(flag=false)); if (flag) { printf("Седловая точка S[%d,%d]",speedi,speedj); h++; } if (h=0) { printf("Седловых точек нет!"); } } _getch(); }
Решение задачи: «Напечатать индексы всех седловых точек»
textual
Листинг программы
#include <stdio.h> #include <locale.h> #define pillar 3 #define line 5 int main(){ setlocale(LC_ALL, "rus"); int array_a[pillar][line]; //Двумерный массив int i, j, m, k; //Счетчики int max; //Максимальный элемент в столбце int max_i = 0; //Номер строки max /*Ввод элементов матрицы*/ printf("Введите элементы массива: \n"); for(i = 0; i < pillar; i++){ for(j = 0; j < line; j++){ scanf("%d", &array_a[i][j]); } } /*Поиск седловой точки*/ for(j = 0; j < line; j++){ max = array_a[0][j]; /*Поиск максимального элемента в столбце*/ for(i = 1; i < pillar; i++){ if(max < array_a[i][j]){ max = array_a[i][j]; max_i = i; } } /*Проверка равных максимальных значений в столбце*/ for(i = 0; i < pillar; i++){ m = 0; if(max == array_a[i][j]){ /*Проверка условия седловой точки*/ for(k = 0; k < line; k++){ if(max <= array_a[i][k]){ m++; } else break; } /*Вывод седловой точки*/ if(m == 5) printf("\nСедловая точка: %d\t Строка: %d\t Столбец: %d\t\n", max, i+1, j+1); } } } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д