Ошибка "Индекс находился вне границ массива"
Ошибка "Индекс находился вне границ массива" в операторе 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();