Найти особые элементы матрицы и их количество - C#

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

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

Дана матрица найти особые элементы матрицы и их количество. Считаю особым элементом, если от элемента справа стоят элементы больше его а слева меньше. При вводе допустим массива 3 на 3 с элементами 1 2 3 4 5 6 7 8 9 Выводит количество 2. Но должно быть 3, не пойму где ошибка, голова кругом.. Так же если ввести массив побольше 5 на 5 , там вообще пропадает много особых элементов, выводит около 6, хотя их там намного больше.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace laba3
{
    class Program
    {
        static void Main(string[] args)
        {
            int N, M, count = 0, i, j;
            Console.Write("Введите количество строк: ");
           N = Convert.ToInt32(Console.ReadLine());
 
            Console.Write("Введите количество столбцов: ");
            M = Convert.ToInt32(Console.ReadLine());
 
            int[,] mas = new int[M, N];
            
    bool fl = true;
    Console.WriteLine("Введите элементы массива:");
    for (i = 0; i < N; i++)
    {
 
        for (j = 0; j < M; j++) {
            Console.Write("mas[" + i + "," + j + "]: ");
            mas[i,j] = Convert.ToInt32(Console.ReadLine());
        }
    }
    
 for ( int t = 0; t < N; t++ )
    {
        for ( int d = 1; d < (M - 1); d++)
        {
            fl = true;
            for (i = 0; i < d; i++)
            { 
            
                if(mas[ t,d] <= mas[ t,i ])
                    fl = false;
            for(i = t + 1; i < M ; i++)
                if(mas [ t,d ] >= mas [ t,i ])
                    fl = false;
            if( fl )
                count++;
            }
        }
    }
 
    Console.WriteLine("Количество особых элементов массива = " + count);
    Console.WriteLine("Матрица: ");
    for (i = 0; i < N; i++, Console.WriteLine())
    {
       
        for (j = 0; j < M; j++)
        {
            Console.Write(mas[i, j] + " ");
 
        }
    }
            Console.WriteLine("Нажмите Enter для завершения работы программы..");
            Console.ReadLine();
 
        }
    }
}

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

textual
Листинг программы
namespace ConsoleApplication 
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 3;
            int m = 3;
 
            int[,] array = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
            //           int[,] array = { { 1, 3, 3 }, { 4, 6, 5 }, { 9, 8, 7 } };
  
            Console.WriteLine("Заданная матрица");
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write("\t{0} ", array[i, j]);
                }
                Console.WriteLine();
            }
 
            var elms = GetSpecialElementsCount(array);
            Console.WriteLine("Число элементов = {0}",elms);
 
            Console.ReadKey();
 
        }
        private static int GetSpecialElementsCount(int[,] array)
        {
            int count = 0;
            for (int i = 0; i < array.GetLength(0); i++)
                for (int j = 1; j < array.GetLength(1) - 1; j++)
                    if (IsSpecialElement(array, i, j))
                        count++;
            return count;
        }
 
        private static bool IsSpecialElement(int[,] array, int i, int j)
        {
                if (array[i, j -1] < array[i, j] && array[i, j] < array[i, j +1])
                    return true;
            return false;
        }
    }
}

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


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

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

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