Ошибка System.IndexOutOfRangeException
Задание таково Из массива чисел В(12) получить массив А следующим образом: каждое число, начиная со второго, заменить суммой или произведением предыдущего и последующего(большим значением). Первое число переписать в массив А, если оно не отрицательное, иначе заменить его в В числом 5.2 В коде ошибка выдается в этой строке
double S = B[i - 1] + B[i + 1]; Мой код(я только учусь программировать)
static void Main(string[] args)
{
Console.WriteLine("Введите значениz элементов массива");
double x = 0;
int u = 0;
double[] B=new double[12];
double[] A = new double[12];
for (int i = 0; i < 12; i++)
{
B[i] = 0;
}
for (int i=0; i<12; i++)
{
x = Convert.ToDouble(Console.ReadLine());
B[i] = x;
}
for (int i = 1; i < 12; i++)
{
double S = B[i - 1] + B[i + 1];
double P = B[i - 1] * B[i + 1];
if (S > P && (S != 0 | P != 0))
{
A[i] = S;
}
else if (P > S && (S != 0 | P != 0))
{
A[i] = P;
}
else B[i] = 5.2;
}
for (int i = 0; i < 12; i++)
{
Console.Write(A[i]+"");
}
}```
Ответы (1 шт):
Возьмём абстрактный пример:
В массиве например 10 элементов. Нумерация начинается с 0. У последнего элемента индекс 9. Теперь спросите у себя, что произойдёт, если на последней итерации цикла, когда i = 9 вы будете обращаться по индексу i + 1 ?
Вам надо этот момент учесть.