В последней итерации цикла for переменная i равна mass.Length - 1, таким образом, когда вы пытаетесь получить доступ к элементу mass[i + 1], вы выходите за пределы массива. Чтобы исправить эту ошибку, вам нужно ограничить количество итераций цикла for на единицу меньше, чтобы последний элемент не сравнивался с несуществующим элементом после него:
for (int i = 0; i < mass.Length - 1; ++i)
{
if (mass[i + 1] < mass) kolvo++;
}
Это исправит ошибку "Индекс находился вне границ массива".
static void Main(string[] args)
{
int kolvo = 0;
Console.WriteLine("Введите длину массива: "
int a = Convert.ToInt32(Console.ReadLine());
int[] mass = new int[a];
Console.WriteLine("Введите элементы массива: "
for (int i = 0; i < mass.Length; ++i)
{
mass = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Ваш массив:"
for (int i = 0; i < mass.Length; ++i)
{
Console.WriteLine(mass);
}
for (int i = 0; i < mass.Length - 1; ++i)
{
if (i == mass.Length - 2 && mass[i + 1] < mass)
{
kolvo++;
}
else if (mass[i + 1] < mass)
{
kolvo++;
}
}
Console.WriteLine("Количество чисел которые меньше прошлого числа: "
Console.WriteLine(kolvo);
}
for (int i = 0; i < mass.Length; ++i)
{
if (mass[i + 1] < mass) kolvo++;
}
когда i будет принимать индекс последнего элемента то обращением mass[i + 1] ты вылезешь за границу
исправь на:
for (int i = 0; i < mass.Length - 1; ++i)
Проблема возникает при проходе последнего элемента массива в цикле for: когда мы проверяем mass[i + 1] < mass, то в последней итерации i равно mass.Length - 1, и при попытке обратиться к i + 1 элементу мы выходим за границы массива.
Чтобы исправить ошибку, можно пройтись по массиву только до предпоследнего элемента:
for (int i = 0; i < mass.Length - 1; ++i)
{
if (mass[i + 1] < mass) kolvo++;
}
Также стоит учесть случай, когда в массиве всего один элемент - в этом случае цикл не будет выполнен ни разу, и результат будет некорректен. Можно добавить проверку длины массива перед циклом:
if (mass.Length > 1)
{
for (int i = 0; i < mass.Length - 1; ++i)
{
if (mass[i + 1] < mass) kolvo++;
}
}
else
{
Console.WriteLine("Массив слишком короткий"
}