0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 4

Вычислить сумму элементов последовательности, расположенных между первым и вторым отрицательными элементами

11.01.2014, 23:45. Показов 6602. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задание:
выполнять используя итераторы.
Дана последовательность действительных чисел. Необходимо вычислить:
2. Сумму элементов последовательности, расположенных между первым и вторым отрицательными элементами.

Добавлено через 18 минут
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <QtCore/QCoreApplication>
#include <QVector>
#include <QTextStream>
using namespace std;
int main()
{
    QCoreApplication a();
    QVector <int> vec;
    QTextStream stream (stdin), out (stdout);
    QString line;
    //ввод до точки
    do {
        line=stream.readLine();
        vec.push_back(line.toInt());
    }while (line !=".");
    //вывод вектора
    for(int i=0; i<vec.size()-1; i++)
    {
        if (vec.at(i) >= 0) {  out<<vec.at(i)<<" "; }
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.01.2014, 23:45
Ответы с готовыми решениями:

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
1. Имеется файл, в котором содержится размерность массива и его элементы. Вычислить: A. номер минимального элемента массива; B. сумму...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Задание: &quot;Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами.&quot; Доброго времени суток....

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Задание: В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить сумму элементов массива, расположенных между...

57
Заблокирован
14.01.2014, 01:48
Студворк — интернет-сервис помощи студентам
Я немного переделал, компилирует без проблем, правда у меня VS2010. Но насчет правильности алгоритма я сомневаюсь.
Кстати говоря надо добавить вывод на консоль:
C++ (Qt)
1
 out<<summa;
0
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 01:49
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Я немного переделал, компилирует без проблем, правда у меня VS2010. Но насчет правильности алгоритма я сомневаюсь.
Кстати говоря надо добавить вывод на консоль:
C++ (Qt)
1
 out<<summa;
а точно,) забыл
0
Заблокирован
14.01.2014, 01:51
А зачем вам именно итераторы использовать, почему не взять обычные массивы?
0
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 01:54
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
А зачем вам именно итераторы использовать, почему не взять обычные массивы?
да была б моя воля так и сделал бы)) это ж лабораторная работа, нас никто не спрашивает, как написано так и делайте

Добавлено через 1 минуту
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Но насчет правильности алгоритма я сомневаюсь.
да я тоже сомневаюсь, надо запускать и проверять
0
Заблокирован
14.01.2014, 01:59
Цитата Сообщение от __vasilich__ Посмотреть сообщение
да я тоже сомневаюсь, надо запускать и проверять
точно что работает неправильно.

C++ (Qt)
1
int list=(line.toInt());
эта строчка не нужна
0
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 02:01
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
точно что работает неправильно.

C++ (Qt)
1
int list=(line.toInt());
эта строчка не нужна
да я пробовал запускать так, но мне не совсем понятно окуда будут браться цифры в ряду по которому проходит цикл
0
Заблокирован
14.01.2014, 02:04
Цитата Сообщение от __vasilich__ Посмотреть сообщение
да я пробовал запускать так, но мне не совсем понятно окуда будут браться цифры в ряду по которому проходит цикл
так из консоли вы их считываете
0
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 02:06
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
так из консоли вы их считываете
так то да, а они привяжутся к циклу? или просто считаются но не будут использованы, вот в чем вопрос
0
Заблокирован
14.01.2014, 02:12
в вашем коде не будут, т.к. вы считываете их просто в строку, а не в лист как:
C++ (Qt)
1
2
3
4
5
6
7
 QCoreApplication a();
    int summa=0;
    QList<int> list;
    QTextStream stream (stdin), out (stdout);
    do {
        list.append(stream.readLine().toInt());
    }while (stream.readLine() !=".");
0
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 02:25
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
в вашем коде не будут, т.к. вы считываете их просто в строку, а не в лист как:
C++ (Qt)
1
2
3
4
5
6
7
 QCoreApplication a();
    int summa=0;
    QList<int> list;
    QTextStream stream (stdin), out (stdout);
    do {
        list.append(stream.readLine().toInt());
    }while (stream.readLine() !=".");
вот я не знал как в лист записать, по этому и приравнивал, надеясь что будет работать, спасибо за этот вариант

Добавлено через 4 минуты
в общем вот какой код получаеться
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <QtCore/QCoreApplication>
#include <QTextStream>
#include <QList>
#include <QMutableListIterator>
using namespace std;
int main()
{   QList<int> list;
    QCoreApplication a();
    QTextStream stream (stdin), out (stdout);
    int summa=0;
    do {
        list.append(stream.readLine().toInt());
       }
    while (stream.readLine() !=".");
    QMutableListIterator<int> i(list);
     while (i.hasNext()) { int z=i.next();
         if (z > 0)
            summa=summa+z;
     }
out<<summa;
    return 0;
}
Добавлено через 51 секунду
может и будет работать)
0
Заблокирован
14.01.2014, 02:28
но ведь в задании сказано суммировать между первым и вторым отр. элементами
1
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 02:51
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
но ведь в задании сказано суммировать между первым и вторым отр. элементами
ну как бы да, дело в том что это не мое задание, я влез в чужую тему, их тут аж 3 чтуки, я решил не засорять форум еще одной, у меня в задании надо посчитать сумму всех элементов до последнего положительного, и печатая это я только что понял, что прога считает только положительные, надо чего-то поменять, надо подумать

Добавлено через 2 минуты
Цитата Сообщение от __vasilich__ Посмотреть сообщение
ну как бы да, дело в том что это не мое задание, я влез в чужую тему, их тут аж 3 чтуки, я решил не засорять форум еще одной, у меня в задании надо посчитать сумму всех элементов до последнего положительного, и печатая это я только что понял, что прога считает только положительные, надо чего-то поменять, надо подумать
т.е. получается если у меня 2 -5 -6 7 -5 10 -3 -2 , то он должен сумировать 2+(-5)+(-6)+7+(-5)+10

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <QtCore/QCoreApplication>
//#include <QVector>
#include <QTextStream>
#include <QList>
//#include <QListIterator>
#include <QMutableListIterator>
using namespace std;
int main()
{   QList<int> list;
    QCoreApplication a();
    QTextStream stream (stdin), out (stdout);
    int summa=0;
     do {
        list.append(stream.readLine().toInt());
       }
    while (stream.readLine() !=".");
    QMutableListIterator<int> i(list);
 
 
    i.toBack();
    while (i.hasPrevious())
       {
        if  (i.previous()<=0)
            i.remove(); else break;
    }
     while (i.hasNext()) {
     //  if (z > 0)
        int z=i.next();
        summa=summa+z;
   }
out<<summa;
    return 0;
}
похоже на то что надо или нет?

Добавлено через 4 минуты
вобщем вот как я считаю оно должно работать, первым циклом проходит с конца если отрицательный элемент, удаляет, если нет хотелось бы чтоб вышло из цикла while , надеюсь оно так и будет, а уже потом вторым циклом просто сумирует все элементы .
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
14.01.2014, 08:46
Зделал вот так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
QVector<double>::iterator i = first.begin();
    double sum=0.0;
    int len=0;
    bool plus=false;
    while (i!=first.end())
    {
        if(len < 2)
        {
            if(*i>0 || plus == true )
            {
                sum+=*i;
                plus=true;
                if (*i>0)
                    len++;
            }
        }
        ++i;
    }
разница только в том что надо найти сумму между первым и вторым положительным элементами, думаю разберетесь как это изменить
0
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 10:06
Цитата Сообщение от Чистый Посмотреть сообщение
Зделал вот так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
QVector<double>::iterator i = first.begin();
    double sum=0.0;
    int len=0;
    bool plus=false;
    while (i!=first.end())
    {
        if(len < 2)
        {
            if(*i>0 || plus == true )
            {
                sum+=*i;
                plus=true;
                if (*i>0)
                    len++;
            }
        }
        ++i;
    }
разница только в том что надо найти сумму между первым и вторым положительным элементами, думаю разберетесь как это изменить
ваш варианта работать будет, но есть у меня подозрение что его не засчитаю) тут надо использовать что-нибудь из QList<T>, QQueue<T>QListIterator<T>QMutableListIte rator<T>
QLinkedList<T>QLinkedListIterator<T>QMut ableLinkedListIterator<T>
QVector<T>, QStack<T>QVectorIterator<T>QMutableVecto rIterator<T>
QSet<T>QSetIterator<T>QMutableSetIterato r<T>
QMap<Key, T>, QMultiMap<Key, T>QMapIterator<Key, T>QMutableMapIterator<Key, T>
QHash<Key, T>, QMultiHash<Key, T>QHashIterator<Key, T>QMutableHashIterator<Key, T>
в данном случае в вашем коде наверно нужен был QMutableVectorIterator<T> вы если я правельно понял, создали свой итератор, В ОБЩЕМ МОЖЕТ Я НЕПРАВ, И ВСЕ БУДЕТ НОРМАЛЬНО, НА МЕСТЕ АВТОРА ТЕМЫ Я БЫ ПОПРОБОВАЛ СДАТЬ ЭТОТ ВАРИАНТ

Добавлено через 6 минут
ну только надо пределать чуток
Цитата Сообщение от __vasilich__ Посмотреть сообщение
if (*i<0)
Цитата Сообщение от __vasilich__ Посмотреть сообщение
разница только в том что надо найти сумму между первым и вторым положительным элементами, думаю разберетесь как это изменить
такой нюанс, ваша программа считает только положительные элементы, если между первым и вторым положительным элементами будет отрицательный она их не присуммирует, вроде так, если мне не кажется

Добавлено через 4 минуты
Цитата Сообщение от Чистый Посмотреть сообщение
if(*i>0 || plus == true )
так а || это или?если да то был не прав, все будет работать
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
14.01.2014, 10:49
Цитата Сообщение от __vasilich__ Посмотреть сообщение
|| это или
Да, это ИЛИ
1
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
14.01.2014, 10:52
Цитата Сообщение от Flassie Посмотреть сообщение
Цитата Сообщение от __vasilich__ Посмотреть сообщение
|| это или
Да, это ИЛИ
ну значит для автора темы будет такой вариант
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
QVector<double>::iterator i = first.begin();
    double sum=0.0;
    int len=0;
    bool plus=false;
    while (i!=first.end())
    {
        if(len < 2)
        {
            if(*i<0 || plus == true )
            {
                sum+=*i;
                plus=true;
                if (*i<0)
                    len++;
            }
        }
        ++i;
    }
Добавлено через 32 секунды
если я не ошибаюсь)))
1
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
15.01.2014, 22:10
Цитата Сообщение от __vasilich__ Посмотреть сообщение
do {
* * * * list.append(stream.readLine().toInt());
* * * *}
* * while (stream.readLine() !=".");
вобщем возникли проблемы с этим участком кода, получается что он первый элемент считывает, на втором проверяет на точку, потом опять считывает , потом проверяет на точку , в итоге получаеться, что в прогу записываются не все значения а через один, а чтоб на точке прервалось надо точку два раза набрать

Добавлено через 14 минут
как бы это сделать чтоб все было путем?
0
2 / 2 / 0
Регистрация: 17.05.2012
Сообщений: 40
19.01.2014, 01:56
тему можно закрывать, всем спасибо за участие
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2014, 01:56

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)сумму элементов массива, расположенных между первым и вторым...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Помогите решить найти ошибку, код вроде как правильный, но все равно выдает ошибку, помогите найти ошибку, пожалуйста? Вот собственно...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;locale.h&gt; /* run this program using the console pauser or add...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
в одномерном массиве, состоящих из n вещественных элементов вычислить: сумму элемента массива расположенным между первым и вторым...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
помогите написать программу: В одномерном массиве, состоящем из 20 вещественных элементов (значения элементов массива задать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
58
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru