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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Frost_Burn
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 15
#1

Как сложить ряд чисел? - C++

08.07.2013, 19:54. Просмотров 1494. Ответов 27
Метки нет (Все метки)

Даны натуральное число n, действительные числа http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1},...,{a}_{n}. Вычислить http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1}+,...,+{a}_{n} .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сложить ряд чисел? (C++):

Как ввести переменную, которая включает ряд чисел? - C++
Привет всем! Я учу С++ по видеоурокам самостоятельно. Написал первый простой код: #include "ttmath\ttmath.h" #include <iostream> ...

Есть n-значное число нужно сложить сложить все его цифры - C++
Как такое реализовать?

Сложить n пар чисел, введенных с клавиатуры - C++
здравствуйте. задача состоит в том, чтобы сложить 12 пар чисел, которые идут столбцом через пробелы. числа нужно скопировать и вставить в...

Сложить попарно элементы массива, последний сложить с первым - C++
помогите, пожалуйста, попарно сложить элементы массива x, последний элемент сложить с первым и записать результат в массив y

Как нужно задать условие, чтобы при последовательном рандомном выводе чисел в ряд ни одно из них не повторялос - C++
Как нужно задать условие, чтобы при последовательном рандомном выводе чисел в ряд ни одно из них не повторялось?

Сложить первых 5 чисел. И, если сумма < 100, то с 6 по 10 элемент отсортировать пузырьком - C++
Я начинающий. Прошу вашей помощи. Дан одномерный массив ( массив нужно ввести самому). Надо сложить первых 5 чисел. И, если сумма &lt; 100, то...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
09.07.2013, 12:11 #2
C++
1
2
3
4
double sum = 0.0;
for( int index = 0; index < n; ++index )
    sum += a[ index ];
std::cout << sum << std::endl;
-=ЮрА=-
09.07.2013, 12:59
  #3

Не по теме:

Mиxaил, зачем префексный инкремент, с постфиксным результат был бы аналогичный?
https://ideone.com/TkKRt3
Зачем std:: чтобы кода больше было?
Зачем

double sum = 0.0;
если достаточно double sum = 0; - слышал о явных и неявных преобразованиях типов?

Mиxaил
09.07.2013, 13:06
  #4

Не по теме:

-=ЮрА=-, зачем этот пост? Кто-то меня собрался учить?!

taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.07.2013, 13:14 #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Mиxaил, зачем префексный инкремент, с постфиксным результат был бы аналогичный?
https://ideone.com/TkKRt3
Зачем std:: чтобы кода больше было?
А разве с постфиксным его меньше?

Добавлено через 4 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
если достаточно double sum = 0; - слышал о явных и неявных преобразованиях типов?
А нафига вообще приводить тип константы, когда можно сразу поставить нужный тип? Ты хоть в курсе, что приведение инта к даблу требует операций, а значит и времени? В случае переменной деваться некуда. А с константой зачем нагружать камень? Ладно, пусть компилятор оптимизирует такое до
C++
1
double summ=0.0;
, но даже это занимает время на этапе компиляции. И каждый раз при перекомпиляции функции, а ручная оптимизация делается один раз. Так зачем нагружать оптимизватор, когда знаешь, что именно он сделает?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
09.07.2013, 13:27 #6
Цитата Сообщение от Frost_Burn Посмотреть сообщение
Даны натуральное число n, действительные числа
что за числа
по какому закону определяются

если это арифметическая прогрессия, то
S=(A1+An)*n/2
для геометрической
S=A1(q^n-1)/(q-1);
q шаг прогрессии

для случайных чисел тупое суммирование в цикле
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 13:32 #7
вот интересно, как в этой простейшей задаче уменьшить использования переменной-индекса. например,
C++
1
2
for(sum = i = 0; i < n; sum += a[i++])
   ;
а вот сделать на каждом шаге итерации не два обращения к переменной i, а один, реально ли?... вряд ли...
kaludis
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
09.07.2013, 16:29 #8
C
1
2
int total = 0, i = sizeof(a) / sizeof(int);
while (i-- && (total += a[i]));
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 16:31 #9
Цитата Сообщение от kaludis Посмотреть сообщение
C
1
2
int total = 0, i = sizeof(a) / sizeof(int);
while (i-- && (total += a[i]));
все равно два обращения к i на каждом шаге итерации
duhast_vladisla
Заблокирован
09.07.2013, 16:38 #10
Цитата Сообщение от Thinker Посмотреть сообщение
а вот сделать на каждом шаге итерации не два обращения к переменной i, а один, реально ли?... вряд ли...
C++
1
2
3
4
i = size;
 
for (int * end = begin + (i - 1); i--; --end)
    sum += *end;
kaludis
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
09.07.2013, 16:43 #11
C++
1
for (int total = 0, *begin = a, *end = &a[sizeof(a)/sizeof(int)]; begin != end; total += *(begin++));
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 16:44 #12
Цитата Сообщение от duhast_vladisla Посмотреть сообщение
C++
1
2
3
4
i = size;
 
for (int * end = begin + (i - 1); i--; --end)
    sum += *end;
не смешно. все через индексацию. чего уж сразу не так:
C++
1
2
3
int a[N], *pa = a, *end = a + N;
for(sum = 0; pa < end; sum += *pa++)
   ;
duhast_vladisla
Заблокирован
09.07.2013, 16:47 #13
Цитата Сообщение от Thinker Посмотреть сообщение
а вот сделать на каждом шаге итерации не два обращения к переменной i, а один, реально ли?
да, реально.
Если можно использовать стек, то лучше использовать стек, а не индексацию.

Добавлено через 1 минуту
Цитата Сообщение от Thinker Посмотреть сообщение
не смешно. все через индексацию. чего уж сразу не так
Надо же было под Ваше условие подогнать.
Цитата Сообщение от duhast_vladisla Посмотреть сообщение
не два обращения к переменной i, а один
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
09.07.2013, 16:53 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int main( int argc, char **argv )
{
    int *arr = new int [ 5 ], i = 0;
    int *pointer = arr;
 
    for( int index = 0; index < 5; ++index )
        arr[ index ] = index + 1;
    
    while( i++ < 5 )
        std::cout << *( arr++ ) << std::endl;
 
    delete []pointer;
 
    return 0;
}
Добавлено через 5 минут
C++
1
2
int sum = 0, i = 0;
while( i++ < 5 ) sum += *( arr++ );
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 16:55 #15
Цитата Сообщение от duhast_vladisla Посмотреть сообщение
да, реально.
Если можно использовать стек, то лучше использовать стек, а не индексацию.
наверное, Вы хотели сказать адресацию. Это все и дети знают про индексацию и адресацию массивов и что во время компиляции первое приводится ко второму и бла-бла-бла... Вопрос был в том, что можно ли, не прибегая к адресам, индекс использовать ровно один раз на каждом шаге итерации эквивалентный вопрос: можно ли на каждом шаге итерации использовать ровно один раз обращение вида *a, не используя индексы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 16:55
Привет! Вот еще темы с ответами:

В этой программе создается "матрица" из секунд.Как мне первый ряд чисел (секунд) присвоить масиву? - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Ряд чисел в массив - C++
В консоли вводим с клавиатуры ряд чисел, размер ряда n На выходе нужно получить массив состоящий из этих чисел.

как сложить 2 массива - C++
Всем добрый день. На днях начал потихоньку изучать с++, так что знаний по нему пока очень мало) Решил попробовать написать программку,...

Как сложить два числа - C++
как сложить два числа в с++


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

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

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