Определить номера строк и столбцов всех седловых точек матрицы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана целочисленная прямоугольная матрица. Определить: 1) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент; 2) номера строк и столбцов всех седловых точек матрицы. ПРИМЕЧАНИЕ: Матрица А имеет седловую точку Аij, если Aij является минимальным элементом в i-й строке и максимальным в j-м столбце. Матрица 8x8
Листинг программы
  1. int matrix[8][8] = {
  2. { 2, 7, 2, 7, 1, 4, 0, 3 },
  3. { 1, 0, 7, 6, 0, -8, 3, 5 },
  4. { 2, 7, 1, 8, 1, 4, 9, 3 },
  5. { 9, 2, 8, 5, 2, 0, 0, 6 },
  6. { 7, 1, 1, 3, 9, 3, 9, 1 },
  7. { 8, 2, 4, 9, 1, -6, 4, 9 },
  8. { 0, 3, 9, 0, 9, 4, 8, 8 },
  9. { 1, 8, 3, 2, 8, 2, 8, 0 }
  10. };

Решение задачи: «Определить номера строк и столбцов всех седловых точек матрицы»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int matrix[8][8] = {
  5. { 2, 7, 2, 7, 1, 4, 0, 3 },
  6. { 1, 0, 7, 6, 0, -8, 3, 5 },
  7. { 2, 7, 1, 8, 1, 4, 9, 3 },
  8. { 9, 2, 8, 5, 2, 0, 0, 6 },
  9. { 7, 1, 1, 3, 9, 3, 9, 1 },
  10. { 8, 2, 4, 9, 1, -6, 4, 9 },
  11. { 0, 3, 9, 0, 9, 4, 8, 8 },
  12. { 1, 8, 3, 2, 8, 2, 8, 0 }
  13. };
  14.  
  15. int min_row(int n)
  16. {
  17.     int j, k, m;
  18.     k = 0;
  19.     m = matrix[n][0];
  20.     for(j = 1; j < 8; j++)
  21.         if(matrix[n][j]<m){
  22.             m = matrix[n][j];
  23.             k = j;
  24.         }
  25.     return k;
  26. }
  27.  
  28. int max_column(int n)
  29. {
  30.     int j, k, m;
  31.     k = 0;
  32.     m = matrix[0][n];
  33.     for(j = 1; j < 8; j++)
  34.         if(matrix[j][n]>m){
  35.             m = matrix[j][n];
  36.             k = j;
  37.         }
  38.     return k;
  39. }
  40.  
  41. int main()
  42. {
  43.     int sum, negative;
  44.     int i, j;
  45.     for(i = 0; i < 8; i++){
  46.         for(j = 0; j < 8; j++)
  47.             printf("%d\t", matrix[i][j]);
  48.         printf("\n");
  49.     }
  50.  
  51.     printf("Сумма элементов в строках с хотя бы одним отрицательным элементом:\n");
  52.     for(i = 0; i < 8; i++){
  53.         sum = 0;
  54.         negative = 0;
  55.         for(j = 0; j < 8; j++){
  56.             if(matrix[i][j] < 0)
  57.                 negative = 1;
  58.             sum += matrix[i][j];
  59.         }
  60.         if(negative == 1)
  61.             printf("Строка: %d,\tсумма:%d\n", i, sum);
  62.     }
  63.  
  64.     printf("Седловые точки:\n");
  65.     for(i = 0; i < 8; i++){
  66.         j = min_row(i);
  67.         if(max_column(j) == i)
  68.             printf("Строка: %d,\tСтолбец: %d\n", j, i);
  69.     }
  70.  
  71.     return 0;
  72. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы