Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
 Аватар для Helen_2001
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187

Сумма части вектора

04.07.2019, 20:21. Показов 5305. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветик! У меня есть вектор чисел, нужно суммировать их правильно. Но не сложить все числа, а только первых n чисел. Вот моя реализация, но мне кажется это очень криво.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    std::vector<int> a;
    ... добавляем данные в вектор
    int n = 5;  // сложить не более n чисел
    int sum = 0;
    int count=1;
    
    for(auto &s : a)
    {
        sum+=s;
       // тут начинаются костыли
        count++;
        if(count>n) break;
        
    }
    
    std::cout << sum << std::endl;
Можно как-то более правильно это сделать ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.07.2019, 20:21
Ответы с готовыми решениями:

Заданы три вектора a(n), b(m), c(k). Вывести наименование вектора, в котором максимальна сумма четных элементов, стоящих на нечетных местах
Заданы три вектора a(n), b(m), c(k). Вывести наименование вектора, в котором максимальна сумма четных элементов, стоящих на нечетных...

Определить равна ли сумма k цифр дробной части заданного вещественного числа сумме цифр целой части
Помогите доделать задание, исправьте пожалуйста код!!! Срочно! Задание: Выполнить задания, выделяя цифры числа, хранящегося в переменной...

Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части
Нада написать 2 программки 1. Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной...

11
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
04.07.2019, 20:42
Цитата Сообщение от helena_1990 Посмотреть сообщение
Можно как-то более правильно это сделать ?
Вообще, сделано правильно. Можно как-то подпричесать, но не особо нужно.
Вот здесь только надо if(count >= n) break;
0
 Аватар для Helen_2001
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
04.07.2019, 20:48  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
if(count >= n) break;
По этому я сделала count=1;
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
04.07.2019, 20:50
Цитата Сообщение от helena_1990 Посмотреть сообщение
По этому я сделала count=1;
Ну да, не заметил. И что тогда тебя смущает?
0
 Аватар для Helen_2001
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
04.07.2019, 21:00  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ну да, не заметил. И что тогда тебя смущает?
В моей реализации нужно тащить дополнительный счетчик и сравнение.
для массива типа int a[] например, можно использовать accumulate(a,a+n,0);
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.07.2019, 21:04
Цитата Сообщение от helena_1990 Посмотреть сообщение
для массива типа int a[] например, можно использовать accumulate(a,a+n,0);
Для вектора то же самое, но для указания диапазона используются итераторы.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
04.07.2019, 21:04
Цитата Сообщение от helena_1990 Посмотреть сообщение
В моей реализации нужно тащить дополнительный счетчик и сравнение.
для массива типа int a[] например, можно использовать accumulate(a,a+n,0);
C++
1
2
3
const size_t n = std::min(a.size(), 5);
for (auto it = a.begin(), end= it + n; it != end; ++it)
     sum += *it;
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
04.07.2019, 21:10
Цитата Сообщение от helena_1990 Посмотреть сообщение
Можно как-то более правильно это сделать ?
STL?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
#include <numeric>
 
int main()
{
    std::vector<int> vector;
    for (int i = 1; i < 10; ++i)
        vector.push_back(i);
 
    int n = 2;
    int s = std::accumulate(vector.cbegin(), vector.cbegin() + n, 0);
 
    return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
04.07.2019, 21:30
так в чём собственно сложность ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<int> a={1,2,3,4,5,6,7};
    
    int k=5, sum=0;     
    
    for (int i=0; i<k; i++)
    sum+=a[i];   
    
    std::cout << sum << "\n";
    
system("pause");
return 0;
}
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
04.07.2019, 21:39
Цитата Сообщение от Yetty Посмотреть сообщение
так в чём собственно сложность ?
C++
в перфекционизме
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.07.2019, 00:09
helena_1990, если уж
Цитата Сообщение от helena_1990 Посмотреть сообщение
Можно как-то более правильно это сделать ?
то я бы посоветовал сначала проверить не выходит ли последний итератор (при заданном n - ширине диапазона) для accumulate за пределы вектора (далее чем на единицу, - end()) . Думаю, преподаватель испытает внутренний подъём.
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
05.07.2019, 07:30
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<int> a = { 1,2,3,4,5,6,7 };
 
    int k = 5, sum = 0;
 
    for_each_n(a.cbegin(), k, [&](const auto& n) {sum += n; });
 
    std::cout << sum << "\n";
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2019, 07:30
Помогаю со студенческими работами здесь

Определить длину вектора Х, если х1 - сумма элементов матрицы A, х2 - сумма элементов матрицы B, х3 - сумма С
Заданны три квадратные матрицы A, B, C. Определить длину вектора Х (х1, х2, х3), если х1 - сумма элементов матрицы A, х2 - сумма элементов...

Замена части элементов у вектора
Здравствуйте! Я совсем новичок в C++ :) И вот возник такой вопрос... Есть ли в векторе, или может в каком-то другом классе из stl'а,...

Является ли сумма элементов левой части последовательности больше, чем сумма элементов правой части
Вводиться последовательность из N целых чисел. Является ли сумма элементов левой части последовательности больше, чем сумма элементов...

Сумма элементов вектора между min и последним элементом вектора
33 строчка - сумма элементов вектора между min и последним элементом вектора, исправьте, пожалуйста. program zadanie4; uses crt; var...

Копирование части вектора
Приветствую. Мне необходимо скопировать данные из одного вектора в другой: полностью все данные и частично. std::vector &lt;BYTE&gt; Src,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru