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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
D_bl_M
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 129
#1

Суммирование вектора (к примеру) первые 5 чисел - C++

25.03.2012, 16:22. Просмотров 1289. Ответов 12
Метки нет (Все метки)

День добрый, дайте совет как порешать...
поставлена задача:
Написать программу, считывающую ряд чисел и записывающую их в vector<int>. После того как пользователь введет все числа, он может попытаться определить, сколько чисел он ввел, чтобы найти их сумму. Выведите ответ N равный количеству элементов в векторе.
Например:
"Пожалуйста, введите несколько чисел (для прекращения ввода введите |)
>12 23 13 24 15 |
"Пожалуйста, введите количество чисел, которые хотите просуммировать (начиная с первого):"
>3
"Сумма первых 3 чисел: 12, 23 и 13 равна 48."
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    vector <int> digits;
    int temp;
    while (cin >> temp)
        digits.push_back(temp);
    int sum = 0;
    for (int i = 0; i < digits.size(); ++i)
    {
        sum += digits[i];
        cout << digits[i] << '\t';
    }
    cout << '\n' << '\n' << sum;
    return 0;
}
все вроде норма, суммирует и т.д. в общем делает то что надо, но...
как сделать это:
"Пожалуйста, введите количество чисел, которые хотите просуммировать (начиная с первого):"
>3
"Сумма первых 3 чисел: 12, 23 и 13 равна 48."
спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2012, 16:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Суммирование вектора (к примеру) первые 5 чисел (C++):

Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора - C++
Дано вектор В, состоящий из N действительных чисел. Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые...

Ввести пять чисел. Вывести первые две цифры чисел. - C++
Ввести пять чисел. Вывести первые две цифры чисел. Использовать свою функцию, которая не возвращает значение.

Рекурсивное суммирование чисел в массиве - C++
Здравствуйте. Покажите пожалуйста, каким образом можно рекурсивно посчитать числа в массиве. Желательно дополняя мой шаблон. Заранее...

Суммирование чисел от 50 до 100 через циклы for и while. - C++
Всем доброго утра. Попал в политех, нужно выучить С++. Учу при помощи учебника &quot;Язык програмированияф С++. Вводный курс.&quot; Суть проблемы....

Проверяет суммирование двух целых чисел на переполнение - C++
Составить программу, которая проверяет, не приводит ли суммирование двух целых чисел А и В к переполнению (то есть к результату, большему...

Вывести первые 10 чисел - C++
Ребята помогите я уже не могу. С другом начали учить с++ и пишем одновременно программу одну и ту же, у него всё также, но у него...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 16:48 #2
C++
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
34
#include "iostream"
#include "vector"
 
using namespace std;
 
int main()
{
    setlocale(0,"");
    int temp;
    int k;
    int sum = 0;
    cout << "Пожалуйста, введите несколько чисел (для прекращения ввода введите -1)\n";
    vector <int> digits;
    while (cin >> temp, temp != -1)
    {
        digits.push_back(temp);
    }
    cout << "Пожалуйста, введите количество чисел, которые хотите просуммировать (начиная с первого):\n";
    cin >> k;
    vector<int>::iterator i;
    for(i = digits.begin(); i != digits.end() - digits.size() + k; ++i)
    {
        sum += *i;
    }
 
    cout << "Сумма первых " << k << " чисел: ";
    for(i = digits.begin(); i != digits.end() - digits.size() + k; ++i)
    {
        cout << *i << " ";
    }
    cout << "равна " << sum << endl;
    system("pause >> null");
    return 0;
}
Миниатюры
Суммирование вектора (к примеру) первые 5 чисел  
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.03.2012, 16:48 #3
C++
1
2
for ( auto it = v.begin() ; n < v.size() && it != v.end() ; ++it ) 
   /* Здесь сами уже */
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 16:50 #4
Результат
Миниатюры
Суммирование вектора (к примеру) первые 5 чисел  
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.03.2012, 16:55 #5
Цитата Сообщение от Infinity3000 Посмотреть сообщение
for(i = digits.begin(); i != digits.end() - digits.size() + k; ++i)
А если k больше v.size() ?
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 17:09 #6
Цитата Сообщение от go Посмотреть сообщение
А если k больше v.size() ?

C++
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
34
35
36
37
38
39
#include "iostream"
#include "vector"
 
using namespace std;
 
int main()
{
    setlocale(0,"");
    int temp;
    int k;
    int sum = 0;
    cout << "Пожалуйста, введите несколько чисел (для прекращения ввода введите -1)\n";
    vector <int> digits;
    while (cin >> temp, temp != -1)
    {
        digits.push_back(temp);
    }
    cout << "Пожалуйста, введите количество чисел, которые хотите просуммировать (начиная с первого):\n";
    cin >> k;
    if(k > digits.size() || k < 0)
    {
        cout << "Веденно некоректное значение\n";
        return 0;
    }
    vector<int>::iterator i;
    for(i = digits.begin(); i != digits.end() - digits.size() + k; ++i)
    {
        sum += *i;
    }
 
    cout << "Сумма первых " << k << " чисел: ";
    for(i = digits.begin(); i != digits.end() - digits.size() + k; ++i)
    {
        cout << *i << " ";
    }
    cout << "равна " << sum << endl;
    system("pause >> null");
    return 0;
}
Добавлено через 3 минуты
go, Спасибо
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 17:12 #7
Результат
Миниатюры
Суммирование вектора (к примеру) первые 5 чисел   Суммирование вектора (к примеру) первые 5 чисел   Суммирование вектора (к примеру) первые 5 чисел  

D_bl_M
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 129
25.03.2012, 17:17  [ТС] #8
Ребят, извиняюсь за наглость, а можно комменты? не совсем все понятно ((
а именно:
Цитата Сообщение от Infinity3000 Посмотреть сообщение
vector<int>::iterator i; //::iterator i - это что такое?
* * * * for(i = digits.begin(); i != digits.end() - digits.size() + k; ++i)
* * * * {
* * * * * * * * sum += *i; // это указатель? или что это
* * * * }
может мне чтоб проще было привести скрины глав которые прочитал? учу по книге
спасибо оперативный отклик ))
Avazart
Эксперт С++
7152 / 5329 / 278
Регистрация: 10.12.2010
Сообщений: 23,585
Записей в блоге: 17
25.03.2012, 17:18 #9
A accumulate не подходит разве?
C++
1
2
#include <numeric>
int result =std::accumulate( digits.begin(), digits.end(),0);
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 17:23 #10
Цитата Сообщение от D_bl_M Посмотреть сообщение
может мне чтоб проще было привести скрины глав которые прочитал?
это приветсвуеться!

Л.Аммерааль - STL для программистов на C++

Начинайте первую главу читать, там как раз о векторах, списках!

Добавлено через 2 минуты
Справочник по C++ STL
Итераторы
D_bl_M
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 129
25.03.2012, 17:51  [ТС] #11
Цитата Сообщение от Infinity3000 Посмотреть сообщение
это приветсвуеться!

Л.Аммерааль - STL для программистов на C++

Начинайте первую главу читать, там как раз о векторах, списках!

Добавлено через 2 минуты
Справочник по C++ STL
Итераторы
спасибо за ссылки, но хотелось бы одну добить...
мне кажется нужно где-то указать в цикле какое кол-во значений суммировать, но не соображу как
вот главы
Суммирование вектора (к примеру) первые 5 чисел
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 18:10 #12
Цитата Сообщение от D_bl_M Посмотреть сообщение
мне кажется нужно где-то указать в цикле какое кол-во значений суммировать
ну вот же ж мы указываем

Цитата Сообщение от Infinity3000 Посмотреть сообщение
i != digits.end() - digits.size() + k
Добавлено через 29 секунд
Программа полностью выполняет Ваши требования (смотрите скриншоты)
D_bl_M
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 129
25.03.2012, 19:45  [ТС] #13
спасибо, я конечно же смотрел Ваши скриншоты
просто для себя хотел разобраться что и как, ну да ладно, не буду спешить, далее яснее станет, это ведь только начало...
всем спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 19:45
Привет! Вот еще темы с ответами:

Выполнить попарное суммирование произвольного конечного ряда чисел следующим образом - C++
Помогите пожалуйста с разработкой программы!Вот полное задание: Выполнить попарное суммирование произвольного конечного ряда чисел...

Вывести первые двадцать чисел - C++
Вывести на экран первые двадцать чисел, кратных 7.

Посчитать первые 10 чисел Фибоначчи - C++
Помогите пожалуйста с решением задачи. Задача: Посчитать первые 10 чисел Фибоначчи и показать что сумма этих чисел ровна 11,...

Распечатать первые n простых чисел - C++
Распечатать первые п простых чисел ( р - простое число, если р&gt;= 2 и делится только на 1 и на себя) на C++ Именуйте темы осмысленно!...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2012, 19:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru