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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Frost_Burn
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 15
08.07.2013, 19:54     Как сложить ряд чисел? #1
Даны натуральное число 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} .
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:25     Как сложить ряд чисел? #21
Цитата Сообщение от kaludis Посмотреть сообщение
Это решение для вопроса о единичном использовани индексации не подходит.

Не по теме:

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:26     Как сложить ряд чисел? #23
Цитата Сообщение от ValeryS Посмотреть сообщение
почему???
условие
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
09.07.2013, 17:34     Как сложить ряд чисел? #24
Цитата Сообщение от kaludis Посмотреть сообщение
Опять используется вычислимое выражение из n-- для цикла и ++a для указателя.
ну разумеется иначе как узнать конец ряда(массива)
можно конечно загнать в конец какое нибудь волшебное число (например нуль как в строке)
ну все равно будет два обращения один раз узнать равно ли число волшебное если нет сложить
хотя
C++
1
2
while(c=*(++a))
 summ+=c;
ну здесь темповая переменная появляется
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:39     Как сложить ряд чисел? #25
Цитата Сообщение от ValeryS Посмотреть сообщение
все равно будет два обращения один раз узнать равно ли число волшебное если нет сложить
вот именно, два раза.
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
while(c=*(++a))
 summ+=c;
нет, во первых пропустил первый элемент массива, во вторых, сам же понял, что получилось смешно
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
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     Как сложить ряд чисел?
Еще ссылки по теме:

Сложить первых 5 чисел. И, если сумма < 100, то с 6 по 10 элемент отсортировать пузырьком C++
Сложить попарно элементы массива, последний сложить с первым C++
Как нужно задать условие, чтобы при последовательном рандомном выводе чисел в ряд ни одно из них не повторялос C++

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 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     Как сложить ряд чисел?
Ответ Создать тему
Опции темы

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