.NET 4.x Найти сумму элементов двумерного массива которые находятся между минимумом и максимумом - C#

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

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

Добрый день, прошу помочь в решении задачи, начал изучать С#, застрял на двумерных массивах. Задача стоит следующая: Дан двумерный массив размерностью 5х5, заполненный случайными числами из диапазона от -100 до 100. Определить сумму элементов массива, расположенных между минимальным и максимальным элементами. До момента поиска минимума и максимума а также нахождения позиций, я ее решил, но не могу в последнем цикле правильно поставить условия, чтобы посчитать правильно сумму. Вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Random rand = new Random();
 
            // int[,] MyArray = new int[5, 5];
 
            int[,] MyArray = { { -50, 3, 5 }, { -80, 10, 15 }, { 4, 55, 78 } };
 
            Console.WriteLine("This is our start array: ");
 
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                   // MyArray[i, j] = rand.Next(-100, 101);
                    Console.Write(MyArray[i, j] + "\t");
                }
                Console.WriteLine();
            }
 
            IEnumerable<int> ConvertedArray = MyArray.Cast<int>();
 
            int MinValue = ConvertedArray.Min();
 
            int MaxValue = ConvertedArray.Max();
 
            Console.WriteLine("Minimal value of array it: " + MinValue);
 
            Console.WriteLine("Maximal value of array it: " + MaxValue);
 
            int IndexRMin = 0, IndexCMin = 0, IndexRMax = 0, IndexCMax = 0, Sum = 0;
            //ищем индексы максимума и минимума
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    if (MyArray[i, j] == MinValue)
                    {
                        IndexRMin = i;
                        IndexCMin = j;
                    }
                    if (MyArray[i, j] == MaxValue)
                    {
                        IndexRMax = i;
                        IndexCMax = j;
                    }
                }
            }
 
            Console.WriteLine("Position of Min Value it: " + IndexRMin + IndexCMin);
 
            Console.WriteLine("Position of Max Value it: " + IndexRMax + IndexCMax);
            
            //вот здесь беда, не могу правильно поставить условия цикла, сумма считается неправильно
            for (int i = IndexRMin; i < IndexRMax; i++)
            {
                for (int j = IndexCMin; j < IndexCMax; j++)
                {
                    if (MyArray[i, j] == MyArray[IndexRMin, IndexCMin])
                    {
                        j++;
                    }
                    Sum += MyArray[i, j];
                }
            }
 
            Console.WriteLine("Summa = : " + Sum);
 
        }
    }
}
Я здесь задал массив вручную для удобства отладки, но пока что решить до конца не получилось. Спасибо за помощь.

Решение задачи: «.NET 4.x Найти сумму элементов двумерного массива которые находятся между минимумом и максимумом»

textual
Листинг программы
  
 
bool НашлиМинимум = false;
bool НашлиМаксимум = false;
bool ЧтотоНашли = false;
 
 
if (MinValue == MaxValue)
 
    Sum = 0;
else
{
 
    for (int i = 0; i < MyArray.GetLength(0); i++)
    {
        for (int j = 0; j < MyArray.GetLength(1); j++)
        {
            if (MyArray[i, j] == MinValue)
            {
                if (ЧтотоНашли == false)
                {
                    IndexIMin = i;
                    IndexJMin = j;
                    ЧтотоНашли = true;
                    НашлиМинимум = true;
 
                }
 
                if (ЧтотоНашли == true)
                    if (НашлиМаксимум == false)
                    {
                        IndexIMin = i;
                        IndexJMin = j;
                        НашлиМинимум = true;
                    }
 
                if (НашлиМаксимум == true && НашлиМинимум == false)
                {
                    IndexIMin = i;
                    IndexJMin = j;
                    НашлиМинимум = true;
                }
 
 
            }
 
 
 
 
            if (MyArray[i, j] == MaxValue)
            {
                if (ЧтотоНашли == false)
                {
                    IndexIMax = i;
                    IndexJMax = j;
                    ЧтотоНашли = true;
                    НашлиМаксимум = true;
 
                }
 
                if (ЧтотоНашли == true)
                    if (НашлиМинимум == false)
                    {
                        IndexIMax = i;
                        IndexJMax = j;
                        НашлиМаксимум = true;
                    }
 
                if (НашлиМинимум == true && НашлиМинимум == false)
                {
                    IndexIMax = i;
                    IndexJMax = j;
                    НашлиМаксимум = true;
                }
 
            }
 
 
 
 
        }
    }
 
 
  
 
 
    S += ("Position of Min Value it: " + IndexIMin + IndexJMin + "\n");
 
    S += ("Position of Max Value it: " + IndexIMax + IndexJMax + "\n");
 
    //вот здесь беда, не могу правильно поставить условия цикла, сумма считается неправильно
 
 
    bool flagSum = false;
 
    for (int i = 0; i < MyArray.GetLength(0); i++)
        for (int j = 0; j < MyArray.GetLength(1); j++)
        {
            if ((i == IndexIMin && j == IndexJMin) || (i == IndexIMax && j == IndexJMax))
            {
                flagSum = !flagSum;
                continue;
            }
 
            if (flagSum)
                Sum += MyArray[i, j];
 
 
        }
 
 
 
}
 
 
 
    MessageBox.Show(Sum.ToString() + S); // после else вывод

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


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

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

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