Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Найти сумму элементов, расположенных между первым и последним нулевыми элементами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ не работают функции с бинарным файлом http://www.cyberforum.ru/cpp-beginners/thread1169989.html
Здравствуйте. помогите исправить ошибки и дописать функции. В программе присутствует авторизация (файл accounts.txt). Далее программа обращается к файлу с базой (структуре). В структуре ФИО матери,...
C++ Семафоры и механизм событий Дорогие программисты, помогите, пожалуйста, решить три небольшие задачи по синхронизации потоков! Раньше я работала с синхронизацией потоков только на С# и эти задачи показались бы мне... http://www.cyberforum.ru/cpp-beginners/thread1169984.html
Переносимость программы, куча dll и кроссплатформенность C++
Решил пощупать С++ и Qt после C#. Создал простейшее консольное приложение и оконное Qt. В итоге, что бы приложение открылось вне IDE Qt пришлось скопировать в папку с программой dll для...
C++ Ошибка: неинициализированные переменные
Требовалось оформить класс ORDER, ошибка на 103-ей строке про неинициализированные переменные, помогите исправить. #include <iostream> #include <fstream> using namespace std; int const...
C++ Вычислить сумму ряда http://www.cyberforum.ru/cpp-beginners/thread1169914.html
Задание: Нужно написать и отладить программу для вычисления суммы ряда, приняв х=3, с циклической (оператор for) и разветвляющейся структурой (оператор goto): \sum_{n=0}^{50}(n+1){x}^{2n}
C++ Метод обратной матрицы Необходимо добавить метод нахождения обратной матрицы #include <iostream> #include <fstream> using namespace std; int main() { double matrix,otvetu ; int i,j; ifstream qwerty; подробнее

Показать сообщение отдельно
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
08.05.2014, 13:43
Во-первых, здесь вылетишь за пределы массива:
C++
1
2
for(i=0;i<=N;i++)
    {k=massiv[i]*k;}
Нужно сравнивать i < N, так как последний элемент имеет индекс N - 1.

Цитата Сообщение от stane4 Посмотреть сообщение
Найти сумму элементов, расположенных между первым и последним нулевыми элементами
C++
1
2
3
4
5
6
7
8
9
10
11
int i_first = 0, i_second = N -1;
while ((massiv[i_first] != 0) && (i_first < N))
    ++i_first;
while ((massiv[i_second] != 0) && (i_second > 0))
    --i_second;
int sum = 0;
if (i_first < i_second)
{
    for (i = i_first; i < i_second; ++i)
        sum += massiv[i];
}
Либо же, используюя STL:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <algorithm>
#include <iterator>
#include <numeric>
 
int * first = std::find(massiv, massiv + N, 0);
int * second = std::find(std::reverse_iterator<int*>(massiv + N),
                                 std::reverse_iterator<int*>(massiv), 0).base();
--second;
sum = 0;
if (first < second)
    int sum = std::accumulate(first, second, 0);
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru