Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

08.07.2013, 19:54. Просмотров 1587. Ответов 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} .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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, то...

27
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
09.07.2013, 17:01 #16
Thinker, чем мой последний вариант не подходит? Вполне простое решение.
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:05 #17
Цитата Сообщение от Thinker Посмотреть сообщение
обращение вида *a, не используя индексы.
имеется ввиду pa (адрес текущего элемента) использовать ровно 1 раз

Добавлено через 36 секунд
Цитата Сообщение от Mиxaил Посмотреть сообщение
Thinker, чем мой последний вариант не подходит? Вполне простое решение.
это все понятно. а вот либо одно, либо другое, не совмещая
0
ValeryS
Модератор
6753 / 5162 / 493
Регистрация: 14.02.2011
Сообщений: 17,344
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
kaludis
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
09.07.2013, 17:19 #19
Это решение для вопроса о единичном использовани индексации не подходит.
1
ValeryS
Модератор
6753 / 5162 / 493
Регистрация: 14.02.2011
Сообщений: 17,344
09.07.2013, 17:24 #20
можно с начала ну это уже издевательство над указателями

C++
1
2
3
a--;
while(n--)
 summ1+=*(++a);
Добавлено через 2 минуты
Цитата Сообщение от kaludis Посмотреть сообщение
Это решение для вопроса о единичном использовани индексации не подходит.
почему???
n никакого отношения к индексации не имеет
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:25 #21
Цитата Сообщение от kaludis Посмотреть сообщение
Это решение для вопроса о единичном использовани индексации не подходит.

Не по теме:

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

0
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 для указателя.
Суть в том, что при переборе ряда используется по крайней мере признак конца ряда и текущая позиция, т.е. для одной итерации будет по карйней мере одно вычисление на достижение конца (начала) и одно обращение к элементу ряда.
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:26 #23
Цитата Сообщение от ValeryS Посмотреть сообщение
почему???
условие
0
ValeryS
Модератор
6753 / 5162 / 493
Регистрация: 14.02.2011
Сообщений: 17,344
09.07.2013, 17:34 #24
Цитата Сообщение от kaludis Посмотреть сообщение
Опять используется вычислимое выражение из n-- для цикла и ++a для указателя.
ну разумеется иначе как узнать конец ряда(массива)
можно конечно загнать в конец какое нибудь волшебное число (например нуль как в строке)
ну все равно будет два обращения один раз узнать равно ли число волшебное если нет сложить
хотя
C++
1
2
while(c=*(++a))
 summ+=c;
ну здесь темповая переменная появляется
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.07.2013, 17:39 #25
Цитата Сообщение от ValeryS Посмотреть сообщение
все равно будет два обращения один раз узнать равно ли число волшебное если нет сложить
вот именно, два раза.
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
while(c=*(++a))
 summ+=c;
нет, во первых пропустил первый элемент массива, во вторых, сам же понял, что получилось смешно
0
ValeryS
Модератор
6753 / 5162 / 493
Регистрация: 14.02.2011
Сообщений: 17,344
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 минуты
единственное что приходит в голову, развернуть цикл
но тогда будет море кода и размер должен знать изначально
0
-=ЮрА=-
09.07.2013, 18:46
  #27

Не по теме:

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

0
Thinker
Эксперт С++
4229 / 2203 / 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])
   ;
и т.д.
0
09.07.2013, 19:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 19:27
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

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