-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
||||||
1 | ||||||
Найти сумму четных элементов, переданных в функцию c переменным числом параметров10.04.2019, 16:16. Показов 3308. Ответов 17
Метки нет Все метки)
(
Смотрите, задание стоит просто и понятно: написать функцию, количество параметров которой не определено. И нужно найти сумму четных элементов переданных в функцию значений.
Написал такую программу:
0
|
|
10.04.2019, 16:16 | |
Ответы с готовыми решениями:
17
Функция с переменным числом параметров, как узнать кличество переданных параметров? Написать функцию с переменным числом параметров, найти сумму чисел по заданной формуле В функции с переменным числом параметров найти сумму всех элементов каждого массива
|
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
10.04.2019, 16:23 | 2 | |||||
0
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
||||||||||||||||
10.04.2019, 16:53 [ТС] | 3 | |||||||||||||||
Боюсь, что это не совсем то, что нужно
Я нашел такую функцию:
Переделал здесь всего ничего и получилось следующее
0
|
Модератор
![]() 12777 / 10232 / 6149
Регистрация: 18.12.2011
Сообщений: 27,398
|
||||||
10.04.2019, 17:33 | 4 | |||||
0
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
|
10.04.2019, 17:38 [ТС] | 5 |
Капец... Все равно выводит хрень какую-то...
0
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
|
10.04.2019, 17:40 [ТС] | 6 |
Более того, я попробовал отследить значение *P и получил вот такой результат
0
|
5772 / 3196 / 1323
Регистрация: 07.02.2019
Сообщений: 8,063
|
|
10.04.2019, 17:41 | 7 |
0
|
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||||||||
10.04.2019, 18:14 | 8 | ||||||||||
Imperion,
Это UB же. Мы же не массив перебираем. Добавлено через 17 минут Imperion, вообще это все баловство, надо использовать шаблоны раз мы в разделе С++.
2
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
||||||
10.04.2019, 18:23 [ТС] | 9 | |||||
Я бы лично решил задачу вообще через массив. Но это не моя прихоть, поэтому приходится делать так, как того требуют
Добавлено через 4 минуты
1
|
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
10.04.2019, 18:35 | 10 | |||||
Где так сказанно? Дайте задание целиком.
Мы не можем так сделать, ну то как вы делали уж точно.
1
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
|||||||||||
10.04.2019, 18:41 [ТС] | 11 | ||||||||||
Напишите функцию с переменным числом параметров.
Само задание: найти сумму четных элементов, переданных в функцию. Решите задачу двумя способами: через передачу количества параметров как па-раметр функции и через использование признака конца списка пара-метров. В методичке есть вот такой пример:
0
|
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
10.04.2019, 18:55 | 12 |
И что здесь имеется в ввиду под списком параметров?
С точки зрения С++ это UB, т.е. поведение вашей программы не определено.
0
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
|
10.04.2019, 18:56 [ТС] | 13 |
Ну просто перечень значений. Например, у нас есть функция f, в которой количество передаваемых элементов не определено. Мы можем в нее передать 3 параметра: f(1, 2, 3), можем 5: f(1,2,3,4,5) и т.д.
0
|
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
10.04.2019, 23:44 | 14 | |||||
![]() Решение
Проблема в том что нету никакого конца списка.
Все что вы делаете это перебираете параметры функции через указатель по стеку, в надежде что они там будут, и будут там лежать сразу и непрерывно. Но, это немного не так работает. Это может сработать только для х86 и если соглашение о вызове функции будет cdecl , которое гарантирует что параметры функции будут лежать на стеке.Собирать надо под х86 только и только в студии, а код содержит UB!
1
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
|
12.04.2019, 10:41 [ТС] | 15 |
Azazel-San, а могли бы вы расписать комментарии к коду? Потому что, если честно, мало что понятно)
0
|
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
12.04.2019, 11:24 | 16 | |||||
![]() Решение
Imperion,
2
|
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
|
|
12.04.2019, 11:58 [ТС] | 17 |
Azazel-San, спасибо большое за помощь!
0
|
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||||||
13.04.2019, 02:21 | 18 | |||||
Механизм передачи параметров в машинных кодах совсем, вот вообще, не должен вас волновать (если мы о поведении программ с точки зрения языка C++). Мы всегда можем взять адрес чего бы то ни было, что имеет тип. И если время жизни этого чего бы то ни было не закончилось - никакого UB не будет. Что там происходит за кулисами - проблемы компилятора.
С чего бы вдруг? Второй параметр va_start() - имя параметра, после которого, собственно, и идут эти "параметры неизвестного количества". Он никак не связан с количеством этих самых параметров (а точнее аргументов). Вспомните printf() там единственный постоянный параметр - си-строка.Т.о. желание ТС, ака "найти сумму четных элементов, переданных в функцию через использование признака конца списка параметров" будет выглядеть как-то так:
0
|
13.04.2019, 02:21 | |
Помогаю со студенческими работами здесь
18
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле: S=a1*a2+a3*a4+a5*a Массивы в функцию с переменным числом параметров
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |