Найти отрицательные элементы в строках, содержащих нулевой элемент и седловые точки матрицы - 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 :(");
        }

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы