Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 15
1

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

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

Author24 — интернет-сервис помощи студентам
Даны натуральное число n, действительные числа https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1},...,{a}_{n}. Вычислить https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1}+,...,+{a}_{n} .
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2013, 19:54
Ответы с готовыми решениями:

Сложить ряд чисел 1/2,1/3,1/4,1/5,1/6,1/7,1/8 с помощью рекурсии
Нужна помощь в написании программки суть состоит в том что нужно сложить ряд чисел...

Десять раз генерировать ряд случайных чисел от 0 до 99 . Каждый ряд также должен иметь произвольную длину . В каждом ряд
Десять раз генерировать ряд случайных чисел от 0 до 99 . Каждый ряд также должен иметь произвольную...

Как сложить 100 пятидесятизначных чисел
нужно сложить 100 пятидесятизначных чисел. Вот что я сделала Sub Summa() Dim s1 As String ...

Как сложить все вычисление квадрата чисел воедино
Всем привет! Прошу помочь с программкой, вот условие Напишите программу, которая запрашивает...

27
542 / 447 / 162
Регистрация: 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;
0
-=ЮрА=-
09.07.2013, 12:59
  #3

Не по теме:

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

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

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

Не по теме:

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

0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
09.07.2013, 13:14 5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Mиxaил, зачем префексный инкремент, с постфиксным результат был бы аналогичный?
https://ideone.com/TkKRt3
Зачем std:: чтобы кода больше было?
А разве с постфиксным его меньше?

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

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

для случайных чисел тупое суммирование в цикле
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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, а один, реально ли?... вряд ли...
0
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]));
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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 на каждом шаге итерации
0
Заблокирован
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;
0
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++));
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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++)
   ;
0
Заблокирован
09.07.2013, 16:47 13
Цитата Сообщение от Thinker Посмотреть сообщение
а вот сделать на каждом шаге итерации не два обращения к переменной i, а один, реально ли?
да, реально.
Если можно использовать стек, то лучше использовать стек, а не индексацию.

Добавлено через 1 минуту
Цитата Сообщение от Thinker Посмотреть сообщение
не смешно. все через индексацию. чего уж сразу не так
Надо же было под Ваше условие подогнать.
Цитата Сообщение от duhast_vladisla Посмотреть сообщение
не два обращения к переменной i, а один
0
542 / 447 / 162
Регистрация: 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++ );
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 16:55 15
Цитата Сообщение от duhast_vladisla Посмотреть сообщение
да, реально.
Если можно использовать стек, то лучше использовать стек, а не индексацию.
наверное, Вы хотели сказать адресацию. Это все и дети знают про индексацию и адресацию массивов и что во время компиляции первое приводится ко второму и бла-бла-бла... Вопрос был в том, что можно ли, не прибегая к адресам, индекс использовать ровно один раз на каждом шаге итерации эквивалентный вопрос: можно ли на каждом шаге итерации использовать ровно один раз обращение вида *a, не используя индексы.
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
09.07.2013, 17:01 16
Thinker, чем мой последний вариант не подходит? Вполне простое решение.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:05 17
Цитата Сообщение от Thinker Посмотреть сообщение
обращение вида *a, не используя индексы.
имеется ввиду pa (адрес текущего элемента) использовать ровно 1 раз

Добавлено через 36 секунд
Цитата Сообщение от Mиxaил Посмотреть сообщение
Thinker, чем мой последний вариант не подходит? Вполне простое решение.
это все понятно. а вот либо одно, либо другое, не совмещая
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
09.07.2013, 17:17 18
Thinker,
чей то я не понял чего ты добиваешься
вот этого что ли
C++
1
2
for(int i=0;i<n;i++)
 sum+=*(a++);
ну это глупо
можно вот так
C++
1
2
while(n--)
 summ1+=*(a++);
ну здесь тоже можно сказать два раза oдин раз к копии другой к указателю
можно с конца
C++
1
2
3
4
5
6
int data[7];
int n=7;
int * a;
a=data+n;
while(n--)
 summ2+=*(--a);
вот так вроде один

Добавлено через 1 минуту
Цитата Сообщение от kaludis Посмотреть сообщение
while (i-- && (total += a[i]));
а что будет если массив будет типа такого
2 -1 1?
0
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
09.07.2013, 17:19 19
Это решение для вопроса о единичном использовани индексации не подходит.
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
09.07.2013, 17:24 20
можно с начала ну это уже издевательство над указателями

C++
1
2
3
a--;
while(n--)
 summ1+=*(++a);
Добавлено через 2 минуты
Цитата Сообщение от kaludis Посмотреть сообщение
Это решение для вопроса о единичном использовани индексации не подходит.
почему???
n никакого отношения к индексации не имеет
0
09.07.2013, 17:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2013, 17:24
Помогаю со студенческими работами здесь

Как перемножить, сложить и т.д несколько чисел через один textbox?
Как перемножить, сложить и т.д несколько чисел через один textbox?

Как сложить сумму из чисел сотен списков и узнать количество списков?
Доброго времени суток! Не могу понять как сложить сумму из несколько тысяч списков. Подскажите...

Дана последовательность начиная с 1, сколько чисел нужно сложить, чтобы сумма четных чисел не превышала числа, введенного с клавиатуры
2)Дана последовательность начиная с 1, вычислить сколько чисел нужно сложить, чтобы сумма четных...

Как вывести ряд чисел построчно, сдвигая их влево?
Спасибо огромное. у меня вообще дано шесть задач, а по правилам форума можно только 1 за раз...

Как ввести переменную, которая включает ряд чисел?
Привет всем! Я учу С++ по видеоурокам самостоятельно. Написал первый простой код: #include...

Как вывести на экран ряд Фибоначи до 30 чисел с помощью массивов
Как вывести на экран ряд Фибоначи до 30 чисел , с помощью массивов ?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru