Почему если в исходном массиве, если последний элемент == 1 не добавляет в новую коллекцию?

205
21 декабря 2017, 23:08

Есть массив из нулей и единиц, мне нужно за один проход по массиву найти сумму единиц до каждого из нулей и результат записать в новую коллекцию, проблема в том, что в новую коллекцию не добавляется последний элемент, как мне это исправить? Спасибо.

const int N = 10;
int[] array = new int[N];
Random random = new Random();
for (int i = 0; i < array.Length; i++)
        array[i] = random.Next(2);
Console.WriteLine("Исходный массив: " + string.Join(", ", array));
int sum = 0;
var list = new List<int>();    
for (int i = 0; i < array.Length; i++) {
    if (array[i] == 1) {
        sum = sum + 1;
    } else if (array[i] == 0) {
        if (sum != 0) {
            list.Add(sum);
        }
        sum = 0;
    }
}
Console.WriteLine("Результирующий массив: " + string.Join(",", list));
Answer 1

Например, после окончания цикла сделать еще раз:

for ( ... ) {
    ...
}
if (sum != 0) {
    list.Add(sum);
}

Еще один вариант - добавить принудительно в массив завершающий 0:

int[] array = new int[N + 1];
...
for ( ... )
    ...
array[N] = 0;

ну и, наконец, если вы используете .NET 4.7.1 или выше, можно вместо явного добавления нуля в массив добавить его в перебираемую последовательность с помощью метода-расширения Enumerable.Append (придется заменить цикл for на foreach):

foreach (int x in array.Append(0)) {
    if (x == 1) {
        sum = sum + 1;
    } else if (x == 0) {
        if (sum != 0) {
            list.Add(sum);
        }
        sum = 0;
    }
}
READ ALSO
Не получается создать новую базу данных SQL Server

Не получается создать новую базу данных SQL Server

Читаю сейчас книгу Троелсена и при создании новой базы данных SQL Server возникла ошибка:

172
Вывод данных из DataGrid в .txt файл

Вывод данных из DataGrid в .txt файл

Я имею следующий XAML код:

163
Ошибка при попытке добавления записи в бд используя DropDownListFor C# MVC

Ошибка при попытке добавления записи в бд используя DropDownListFor C# MVC

При попытке добавление новой записи в бд выскакивает ошибка

274
LINQ запрос к БД

LINQ запрос к БД

Делаю запрос к БД, сначала беру данные из таблицы Technologies, далее идет поиск, сортировка + разбиваю на страницыПолучается очень много похожего...

216