Так что у меня возникли проблемы с программой на C #, которая предназначена для суммирования значения 8-го значения из списка.
Программа работает путем объявления переменной currenthigh
, в которой хранится значение из gradelist
. Затем он сравнивает себя со значением abshigh
, чтобы увидеть, превышает ли оно установленное максимальное значение. Если это так, он устанавливает currenthigh
в качестве нового наибольшего значения.
Как только цикл прошел по списку и подтвердил самое высокое значение, он добавляет его в переменную uppertotal
и использует переменную ejector
, чтобы удалить его из списка. Затем программа выполняет итерации, на этот раз без предыдущего наибольшего значения. Он повторяется 8 раз, так что в итоге 8 верхних значений добавляются к uppertotal
.
Проблема в том, что самая высокая переменная остается в списке, несмотря на то, что в коде есть инструкции по ее удалению, поэтому она просто добавляет самое высокое значение к себе 8 раз.
int currenthigh = 0;
int abshigh = 0;
int ejector = 0;
int uppertotal = 0;
for (int g = 0; g < 8; g++)
{
for (int z = 0; z < gradelist.Count; z++)
{
Console.WriteLine("PASS STARTED");
currenthigh = Convert.ToInt32((gradelist[z]));
Console.WriteLine("currenthigh" + currenthigh);
if (currenthigh > abshigh)
{
abshigh = currenthigh;
ejector = z;
}
}
Console.WriteLine("ejector" + ejector);
uppertotal = uppertotal + currenthigh;
gradelist.RemoveAt(ejector);
Console.WriteLine("PASS COMPLETE");
Console.WriteLine("RESETING");
}
Примечание - gradelist
- это список целых чисел, содержащий не менее 12 элементов за все время.