Есть массив из нулей и единиц, мне нужно за один проход по массиву найти сумму единиц до каждого из нулей и результат записать в новую коллекцию, проблема в том, что в новую коллекцию не добавляется последний элемент, как мне это исправить? Спасибо.
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));
Например, после окончания цикла сделать еще раз:
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;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Читаю сейчас книгу Троелсена и при создании новой базы данных SQL Server возникла ошибка:
При попытке добавление новой записи в бд выскакивает ошибка
Делаю запрос к БД, сначала беру данные из таблицы Technologies, далее идет поиск, сортировка + разбиваю на страницыПолучается очень много похожего...