.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 вывод
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д