Найти отрицательные элементы в строках, содержащих нулевой элемент и седловые точки матрицы - C#
Формулировка задачи:
Дана целочисленная прямоугольная матрица. Определить:
1) количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент.
2) номера строк и столбцов всех седловых точек матрицы
Я написал формулу но не могу найти ошибку, "номера строк и столбцов всех седловых точек матрицы" не показывает, помогите пожалуйста, заранее спасибо
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Labka_6
- {
- class Program
- {
- static void Main(string[] args)
- {
- int[,] mas = new int[5, 5];
- Random rnd = new Random();
- for (int i = 0; i < 5; i++)
- {
- for (int j = 0; j < 5; j++)
- {
- mas[i, j] = -5 + rnd.Next(11);
- Console.Write(mas[i, j] + " ");
- }
- Console.WriteLine();
- }
- int count;//используется для подсчета количества отрицательных элементов
- for (int i = 0; i < 5; i++)
- {
- count = 0;
- for (int j = 0; j < 5; j++)
- {
- if (mas[i, j] == 0)
- {
- for (int k = 0; k < 5; k++)
- {
- if (mas[i, k] < 0)
- count++;
- }
- Console.WriteLine("В {0} строке количество отрицательных элементов = {1}", (i + 1), count);
- break;
- }
- }
- }
- for (int i = 0; i < 5; i++)
- {
- for (int j = 0; j < 5; j++)
- Console.Write("");
- Console.WriteLine();
- }
- //2. Номера строк и столбцов, всех седловых точек:
- Console.WriteLine("Номера строк и столбцов всех седловых точек:");
- for (int i = 0; i < 5; i++)
- {
- for (int j = 0; j < 5; j++)
- {
- bool flag = true; //идти далее
- //минимальный ли в своей строке
- for (int jj = 0; jj < 5; jj++)
- if (mas[i, j] > mas[i, jj])
- {
- flag = false;
- break;
- }
- if (flag)
- {
- //максимальный ли в своем столбце
- for (int ii = 0; ii < 5; ii++)
- if (mas[i,j] < mas[ii, j])
- {
- flag = false;
- break;
- }
- if (flag)
- Console.WriteLine(mas[i, j] + "[" + i + ";" + j + "]");
- }
- }
- }
- Console.ReadKey();
- }
- }
- }
Решение задачи: «Найти отрицательные элементы в строках, содержащих нулевой элемент и седловые точки матрицы»
textual
Листинг программы
- static void Main(string[] args)
- {
- int rows = 5, cols = 7;
- int min = -4, max = 3;
- int[,] matrix = new int[rows, cols];
- Random rnd = new Random();
- for (int j = 0; j < rows; j++)
- {
- for (int i = 0; i < cols; i++)
- {
- matrix[j, i] = min + rnd.Next(max - min + 1);
- Console.Write("{0}\t", matrix[j, i]);
- }
- Console.WriteLine();
- }
- Console.WriteLine();
- List<int>[] columnMaxesIndices = new List<int>[cols];
- List<int>[] rowMinsIndices = new List<int>[rows];
- for (int i = 0; i < cols; i++)
- columnMaxesIndices[i] = new List<int> { 0 };
- for (int j = 0; j < rows; j++)
- {
- bool hasZero = false;
- int negativeCount = 0;
- rowMinsIndices[j] = new List<int> { 0 };
- for (int i = 0; i < cols; i++)
- {
- if (matrix[j, i] < 0)
- negativeCount++;
- else if (matrix[j, i] == 0)
- hasZero = true;
- int localMin = matrix[j, rowMinsIndices[j].First()];
- if (i == 0) ;
- else if (matrix[j, i] < localMin)
- {
- rowMinsIndices[j].Clear();
- rowMinsIndices[j].Add(i);
- }
- else if (matrix[j, i] == localMin)
- rowMinsIndices[j].Add(i);
- int localMax = matrix[columnMaxesIndices[i].First(), i];
- if (j == 0) ;
- else if (matrix[j, i] > localMax)
- {
- columnMaxesIndices[i].Clear();
- columnMaxesIndices[i].Add(j);
- }
- else if (matrix[j, i] == localMax)
- columnMaxesIndices[i].Add(j);
- }
- if (hasZero)
- Console.WriteLine("Line {0} contains zero elements and has {1} negative ones", j, negativeCount);
- else
- Console.WriteLine("Line {0} does not contain zero any element", j);
- }
- Console.WriteLine("\nSaddle points:");
- bool hasSaddle = false;
- for (int j = 0; j < rows; j++)
- foreach (int i in rowMinsIndices[j])
- if (columnMaxesIndices[i].Contains(j))
- {
- Console.WriteLine("\trow: {0}; column: {1}", j + 1, i + 1);
- hasSaddle = true;
- }
- if (!hasSaddle)
- Console.WriteLine("No Saddle Points were found :(");
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д