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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
D_bl_M
 Аватар для D_bl_M
25 / 25 / 1
Регистрация: 25.03.2012
Сообщений: 129
25.03.2012, 16:22     Суммирование вектора (к примеру) первые 5 чисел #1
День добрый, дайте совет как порешать...
поставлена задача:
Написать программу, считывающую ряд чисел и записывающую их в 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."
спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 16:48     Суммирование вектора (к примеру) первые 5 чисел #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++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.03.2012, 16:48     Суммирование вектора (к примеру) первые 5 чисел #3
C++
1
2
for ( auto it = v.begin() ; n < v.size() && it != v.end() ; ++it ) 
   /* Здесь сами уже */
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 16:50     Суммирование вектора (к примеру) первые 5 чисел #4
Результат
Миниатюры
Суммирование вектора (к примеру) первые 5 чисел  
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.03.2012, 16:55     Суммирование вектора (к примеру) первые 5 чисел #5
Цитата Сообщение от Infinity3000 Посмотреть сообщение
for(i = digits.begin(); i != digits.end() - digits.size() + k; ++i)
А если k больше v.size() ?
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 17:09     Суммирование вектора (к примеру) первые 5 чисел #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
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 17:12     Суммирование вектора (к примеру) первые 5 чисел #7
Результат
Миниатюры
Суммирование вектора (к примеру) первые 5 чисел   Суммирование вектора (к примеру) первые 5 чисел   Суммирование вектора (к примеру) первые 5 чисел  

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

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

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

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

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

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

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

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

C++ Суммирование чисел от 50 до 100 через циклы for и while.
C++ Вывести первые 10 чисел
C++ Найти первые 25 тетраэдральных чисел

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

Или воспользуйтесь поиском по форуму:
D_bl_M
 Аватар для D_bl_M
25 / 25 / 1
Регистрация: 25.03.2012
Сообщений: 129
25.03.2012, 19:45  [ТС]     Суммирование вектора (к примеру) первые 5 чисел #13
спасибо, я конечно же смотрел Ваши скриншоты
просто для себя хотел разобраться что и как, ну да ладно, не буду спешить, далее яснее станет, это ведь только начало...
всем спасибо
Yandex
Объявления
25.03.2012, 19:45     Суммирование вектора (к примеру) первые 5 чисел
Ответ Создать тему
Опции темы

Текущее время: 16:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru