Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/32: Рейтинг темы: голосов - 32, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 4

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

11.01.2014, 23:45. Показов 6525. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru