Что-то вроде этого намного проще и будет выполнять sh то же самое без используемых вами слоев циклов:
public static string ProcessOperations(string numbers)
{
string[] numberArray;
string returnValue = string.Empty;
numberArray = numbers.Split(' ');
for (int i = 0; i < numberArray.Length - 2; i++)
{
if (int.TryParse(numberArray[i], out int a) &&
int.TryParse(numberArray[i + 1], out int b) &&
int.TryParse(numberArray[i + 2], out int c))
{
if (a + b == c)
returnValue += "addition, ";
else if (a - b == c)
returnValue += "subtraction, ";
else if (a * b == c)
returnValue += "multiplication, ";
else if (a / b == c)
returnValue += "division, ";
}
}
returnValue = returnValue.TrimEnd(new[] { ',', ' ' });
return returnValue;
}
Тестирование с использованием единственного предоставленного вами значения:
?ProcessOperations("9 4 5 20 25");
subtraction, multiplication, addition
При этом используется один l oop, который работает до конечной позиции - 2. Затем он разбирает элементы в позиции i
, i + 1
и i + 2
(в a
, b
, и c
). После этого он проверяет, какая арифметическая операция c используется для вычисления c
из a
и b
.
Перед возвратом есть TrimEnd
, чтобы удалить любые ложные запятые и пробелы.
Примечания: нет проверки ошибок, нет арифметической операции c даст результат. Деление является целочисленным делением, поэтому не будет работать с числами с плавающей запятой.