Подсчитать количество локальных минимумов заданной матрицы 10 x 10 - C#

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

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

помогите пожалуйста исправить код. не правильно считает количество логических минимумов
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int n = 4;
            Random r = new Random();
            int[,] a = new int[n + 2, n + 2];
            for (int i = 1; i < n + 1; i++)
            {
                for (int j = 1; j < n + 1; j++)
                {
                    a[i, j] = r.Next(-50, 50);
                    Console.Write(string.Format("{0,4}", a[i, j]));
                }
                Console.WriteLine();
                Console.WriteLine();
            }
 
            int count = 0;
            for (int i = 1; i < n + 1; i++)
                for (int j = 1; j < n + 1; j++)
                    if ((a[i, j] < a[i - 1, j]) && (a[i, j] < a[i + 1, j]) && (a[i, j] < a[i, j - 1]) && (a[i, j] < a[i, j + 1]))
                        count++;
            Console.WriteLine("Количество локальных минимумов: " + count.ToString());
            int sum = 0;
            for (int i = 1; i < n + 1; i++)
                for (int j = 1; j < n + 1; j++)
                    if (i < j) sum += Math.Abs(a[i, j]);
            Console.WriteLine("Сумма модулей элементов выше главной диагонали: " + sum.ToString());
            Console.ReadKey();
        }
    }
}

Решение задачи: «Подсчитать количество локальных минимумов заданной матрицы 10 x 10»

textual
Листинг программы
static class Program
{
    static bool IsLocalMinimum(int[,] A, int y, int x)
    {
        bool flag;
        for (int i = y - 1; i < y + 2; i++)
        {
            for (int j = x-1; j < x + 2; j++)
            {
                flag = i >= 0 && j >= 0;
                flag &= i != y || j != x;
                flag &= i < A.GetLength(0);
                flag &= j < A.GetLength(1);
 
                if (flag && A[y, x] > A[i, j]) 
                    return false;
            }
        }
 
        return true;
    }
 
    static void Main(string[] args)
    {
        int n = 3;
        int[,] a = new int[n, n];
        Random r = new Random();
        
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                a[i, j] = r.Next(-50, 50);
                Console.Write(string.Format("{0,4}", a[i, j]));
            }
            Console.WriteLine();
            Console.WriteLine();
        }
 
        int sum = 0;
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++)
                sum += Math.Abs(a[i, j]);
        Console.WriteLine("Сумма модулей элементов выше главной диагонали: " + sum);
 
        int count = 0;
        for (int i = 0; i < n; i++ )
        {
            for (int j = 0; j < n; j++ )
            {
                if (IsLocalMinimum(a, i, j))
                {
                    count++;
                    Console.WriteLine("Локальный минимум ({0}, {1}): {2}",
                        i, j, a[i,j]);
                }
            }
        }
        Console.WriteLine("Число локальных минимумов: " + count);
        Console.ReadLine();
    }
}

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


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

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

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