Ошибка "Индекс находился вне границ массива"

Ошибка "Индекс находился вне границ массива" в операторе if 18 строка

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lb1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] A = new [] { 1234, 1302, 1245, 1198, 1229, 1280 };
            int i;
            for (i = 1; i <= 6; i = i + 1) ;
           int[] B = new int[6];

            if (A[i] < 0 )
            { B[i] = (-A[i]); }
            if(0 <= A[i] )
               { B[i] = A[i]; }             
                      
            int[] P = new int[6];

            P[i] = B[i] - B[i - 1];

            int V = (P[i + 1] / B[i]) * 100;

            Console.WriteLine("Уровень преступности возрос на" + V ,"%") ; 
            Console.ReadLine();
 
                
        }
    }
}

Ответы (1 шт):

Автор решения: KuzCode

Скорее всего вы хотели выполнять это условие в цикле. У вас тело цикла должно быть в фигурных скобках, а вы, после того как написали for(...), поставили точку с запятой.

Во-вторых, нужно перебирать от i = 0 до длинны массива не вклчая (i < 6).

Также я бы посоветовал вместо 6 использовать A.Length, так как если вы захотите поменять размер массива, то придёться везде менять вручную, а вы можете это случайно забыть.

Кроме того, конструкцию

if (A[i] < 0 )
{ B[i] = (-A[i]); }
if(0 <= A[i] )
    { B[i] = A[i]; } 

лучше заменить с помощью Math.Abs:

B[i] = Math.Abs(A[i]);

А также заменить i = i + 1 на i++.

UPD:

Не знаю как именно должен работать ваш код, но как я понял, так:

var A = new int[] { 1234, 1302, 1245, 1198, 1229, 1280 };       
var B = new int[A.Length]; // A.Length = 6
var P = new int[A.Length]; // A.Length = 6

for (int i = 0; i < A.Length; i++)
    B[i] = Math.Abs(A[i]);

Console.WriteLine("B: " + string.Join(", ", B)); // вывод массива B на экран

for (int i = 1; i < P.Length; i++) // начинаем с единицы, так как B[i - 1] выдаст ошибку при i = 0
    P[i] = B[i] - B[i - 1];

Console.WriteLine("P: " + string.Join(", ", P)); // вывод массива P на экран

double V = 0;

for (int i = 1; i < P.Length; i++) // начинаем с единицы, так как P[0] = 0 и в результате V не измениться, кроме того B[i - 1] выдаст ошибку
{
    V += ((double)P[i] / B[i - 1]) * 100;
}

Console.WriteLine("Уровень преступности возрос на " + V) ; 
Console.ReadLine();
→ Ссылка