Решение на задача от Глава 7 - Масиви във "Въведение в програмирането със C#"
Имам въпрос за решението задача №4, с условие:
"4. Напишете програма, която намира максимална редица от последователни еднакви елементи в масив. Пример: {2, 1, 1, 2, 3, 3, 2, 2, 2, 1} à {2, 2, 2}."
По-долу съм сложил и решение, което свалих от сайта.
Имам проблем със следната част от кода:
for (int count = 0; count < arrayLength; count++)
{
int currentCount = 0;
for (int minCount = count; minCount < arrayLength; minCount++)
{
if (arrayOfNumbers[count] == arrayOfNumbers[minCount])
Очевидно е, че count и minCount винаги ще имат една и съща стойност, но идеята на задачата е програмата ни да сравнява един член от масива със следващия, т.е. да сравним елемент 0 с елемент 1, а след това елемент 1 с елемент 2. А в момента (доколкото разбирам сравняваме един и същ, понеже
arrayOfNumbers[0] == arrayOfNumbers[0])
arrayOfNumbers[1] == arrayOfNumbers[1])
и т.н.
Но решението работи както трябва и е ясно, че аз нещо ме съм разбрал. Може ли някой да ми изясни как точно работи това решение?
using System;
class FindsTheMaximalSequence
{
static void Main(string[] args)
{
string enterLength = Console.ReadLine();
int arrayLength = int.Parse(enterLength);
int[] arrayOfNumbers = new int[arrayLength];
string enterString;
for (int count = 0; count < arrayLength; count++)
{
enterString = Console.ReadLine();
arrayOfNumbers[count] = int.Parse(enterString);
}
int maxCount = 0;
int value = 0;
for (int count = 0; count < arrayLength; count++)
{
int currentCount = 0;
for (int minCount = count; minCount < arrayLength; minCount++)
{
if (arrayOfNumbers[count] == arrayOfNumbers[minCount])
{
currentCount++;
if (maxCount < currentCount)
{
maxCount = currentCount;
value = arrayOfNumbers[count];
}
}
else
{
break;
}
}
}
Console.WriteLine("Max length = {0} and value is {1}", maxCount, value);
}
}