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

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

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

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

08.07.2013, 19:54. Просмотров 1417. Ответов 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++
C++ Как сложить два char?
C++ В этой программе создается "матрица" из секунд.Как мне первый ряд чисел (секунд) присвоить масиву?
C++ как сложить 2 массива
Есть n-значное число нужно сложить сложить все его цифры C++
Сложить первых 5 чисел. И, если сумма < 100, то с 6 по 10 элемент отсортировать пузырьком C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:25     Как сложить ряд чисел? #21
Цитата Сообщение от kaludis Посмотреть сообщение
Это решение для вопроса о единичном использовани индексации не подходит.

Не по теме:

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

kaludis
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
09.07.2013, 17:26     Как сложить ряд чисел? #22
Цитата Сообщение от ValeryS Посмотреть сообщение
можно с начала ну это уже издевательство над указателями

C++
1
2
3
a--;
while(n--)
 summ1+=*(++a);
Опять используется вычислимое выражение из n-- для цикла и ++a для указателя.
Суть в том, что при переборе ряда используется по крайней мере признак конца ряда и текущая позиция, т.е. для одной итерации будет по карйней мере одно вычисление на достижение конца (начала) и одно обращение к элементу ряда.
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:26     Как сложить ряд чисел? #23
Цитата Сообщение от ValeryS Посмотреть сообщение
почему???
условие
ValeryS
Модератор
6479 / 4945 / 455
Регистрация: 14.02.2011
Сообщений: 16,386
09.07.2013, 17:34     Как сложить ряд чисел? #24
Цитата Сообщение от kaludis Посмотреть сообщение
Опять используется вычислимое выражение из n-- для цикла и ++a для указателя.
ну разумеется иначе как узнать конец ряда(массива)
можно конечно загнать в конец какое нибудь волшебное число (например нуль как в строке)
ну все равно будет два обращения один раз узнать равно ли число волшебное если нет сложить
хотя
C++
1
2
while(c=*(++a))
 summ+=c;
ну здесь темповая переменная появляется
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:39     Как сложить ряд чисел? #25
Цитата Сообщение от ValeryS Посмотреть сообщение
все равно будет два обращения один раз узнать равно ли число волшебное если нет сложить
вот именно, два раза.
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
while(c=*(++a))
 summ+=c;
нет, во первых пропустил первый элемент массива, во вторых, сам же понял, что получилось смешно
ValeryS
Модератор
6479 / 4945 / 455
Регистрация: 14.02.2011
Сообщений: 16,386
09.07.2013, 18:14     Как сложить ряд чисел? #26
Цитата Сообщение от Thinker Посмотреть сообщение
во первых пропустил первый элемент массива,
не пропустил
я просто не стал писать поскольку писал в прошлый раз
ну примерно так
C++
1
2
3
a--;
while(c=*(++a))
  summ+=c;
Цитата Сообщение от Thinker Посмотреть сообщение
сам же понял, что получилось смешно
ну так я условие выдвинутые тобой понять не могу
если уж "По гамбургскому счету" то все равно будет два раза что пре что пост инкремент
в ассемблерном коде это
C++
1
2
while(n--)
 summ1+=*(++a);
превратится во что то типа
Assembler
1
2
3
4
5
mov ecx,n 
m1:
add esi,размер элемента 
add eax,[esi];
loop m1:
a это
C++
1
2
while(n--)
 summ1+=*(a++);
вот так
Assembler
1
2
3
4
5
mov ecx,n 
m1:
add eax,[esi];
add esi,размер элемента 
loop m1:
как видишь два обращения к указателю инкремент и взять значение

Добавлено через 2 минуты
единственное что приходит в голову, развернуть цикл
но тогда будет море кода и размер должен знать изначально
-=ЮрА=-
09.07.2013, 18:46
  #27

Не по теме:

Цитата Сообщение от Mиxaил Посмотреть сообщение
-=ЮрА=-, зачем этот пост? Кто-то меня собрался учить?!
- я задал конкретные вопросы, которые могли возникнуть у любого. Ответы где?!

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 19:27     Как сложить ряд чисел?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 19:27     Как сложить ряд чисел? #28
Цитата Сообщение от ValeryS Посмотреть сообщение
ну так я условие выдвинутые тобой понять не могу
условие простое: не прибегая к доп.переменным, не используя адресную арифметику и указатели, написать алгоритм нахождения суммы с минимальным количеством использования переменной-индекса на каждом шаге итерации. То есть у нас есть только
int a[N], i, sum;
использовать можно только эти переменные. например,
C++
1
2
for(sum = i = 0; i < N; sum += a[i++])
   ;
C++
1
2
for(sum = 0, i = -1; ++i < N; sum += a[i])
   ;
и т.д.
Yandex
Объявления
09.07.2013, 19:27     Как сложить ряд чисел?
Ответ Создать тему
Опции темы

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