Филиппов Вадим
Филиппов Вадим

Помогите найти ошибку в коде c# с массивом

using System;
using ReadData;
using ArrayLib;

namespace Valimised
{
class Program
{
static void Main(string[] args)
{

double allgol = 54356;
int x,y;//vqbiraen za kogo golosovat
int[] p = new int[6];
do{
Console.WriteLine("Нажмите цифру от 1 до 6");
x = ConsoleInput.ReadInt();
switch (x)
{
case 1:

Console.WriteLine("Спасибо! Вы проголоссовали за партию 'Iseseisvuspartei'"); break;
case 2:

Console.WriteLine("Спасибо! Вы проголоссовали за партию 'Keskerakond '"); break;
case 3:

Console.WriteLine("Спасибо! Вы проголоссовали за партию 'Reformierakond '"); break;
case 4:

Console.WriteLine("Спасибо! Вы проголоссовали за партию 'Eestimaa Rahvaliit '"); break;
case 5:

Console.WriteLine("Спасибо! Вы проголоссовали за партию 'Isamaaliit'"); break;
case 6:

Console.WriteLine("Спасибо! Вы проголоссовали за партию 'Res Publica'"); break;
//case 0:
// Console.WriteLine("Вы отказались от голосования'"); break;
default: Console.WriteLine("Default"); break;
}

int a=0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;

if (x == 1) a++; p[0]+=a;
if (x == 2) b++; p[1] += b;
if (x == 3) c++; p[2] += c;
if (x == 4) d++; p[3] += d;
if (x == 5) e++; p[4] += e;
if (x == 6) f++; p[5] += f;

Console.WriteLine("Желаете просмотреть результаты нажмите 0");
y = ConsoleInput.ReadInt();

} while (y != 0);
for (int i = 0; i <= p.Length; i++)
{
double p1 = (p / allgol) * 100;// ВОТ ЗДЕСЬ ПИШЕТ ЧТО Индекс находился вне границ массива.
double rp1 = Math.Round(p1, 3);
Console.WriteLine("Партия набрала ={0} %",rp1);
}

MyArray.PrintArray(p);
//Console.WriteLine(p1);
Console.ReadKey();

}
}
}
Исправить ошибку

МВ
Марина Варбанская

попробуйте пробел удалить

ТХ
Татьяна Хатькова

Поменяй цикл на
for (int i = 0; i < p.Length; i++)

SA
Sherzod Abdulov

for (int i = 0; i <= p.Length; i++)
поменять на
for (int i = 0; i < p.Length; i++)

Сергей Куликов
Сергей Куликов

я шарп не знаю, только нативный си.
но вот это:
for (int i = 0; i <= p.Length; i++)

не должно быть так:
or (int i = 0; i < p.Length; i++) ?

если у тебя в массиве 5 элементов, то p.Length вернет же 5?
но у тебя индексы массива начинаются с нуля: 0 1 2 3 4 -- пять элементов.
поэтому элемент с индексом 5 ессно вызывает эту ошибку, ибо его просто нет.

Похожие вопросы
Программирование в C++. Не могу найти ошибку в коде.
Помогите найти ошибку в коде
Какая ошибка в коде c++?
помогите найти ошибку в коде C++
Помогите найти ошибку в коде!
помогите найти ошибку в коде с++
Помогите найти ошибку. C++
Надо исправить ошибки в коде C++
Ошибка в коде C#, не могу найти в чем проблема...
Помогите найти ошибку в коде.