Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
3 / 3 / 0
Регистрация: 07.10.2018
Сообщений: 59
1

Определения количества и преобразование аргументов в вариативной функции

11.03.2022, 20:31. Показов 815. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Есть функция принимающая переменное число параметров. Нужно определить количество этих параметров и привести их к типу unsigned int По отдельности мне удалось сделать то и то, но вместе не получается.

Получение количество параметров
C++
1
2
3
4
5
6
7
8
9
10
template < typename ... Args>
void funciton(unsigned int input, Args ... layerX)
{
 
    unsigned int* layerXptr = &input;
    for (size_t i = 0; i < sizeof...(layerX) + 1; i++) // sizeof...(layerX) - количество аргументов без первого 
    {
        cout << *(layerXptr + 2*i) << endl; // еще тут вопрос, почему смещать нужно на 2 байта если размер sizeof(unsigned int) = 4? (Определил я это экспериментально)
    }
}
И с преобразование к типу
C++
1
2
3
4
5
6
7
8
void funciton(unsigned int input, unsigned int...)
{
    unsigned int* layerXptr = &input;
    for (size_t i = 0; i < size_param + 1; i++) // size_param - глобальная переменная, количество аргументов без первого 
    {
        cout << *(layerXptr + 2*i) << endl; // еще тут вопрос, почему смещать нужно на 2 байта если размер sizeof(unsigned int) = 4? (Определил я это экспериментально)
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2022, 20:31
Ответы с готовыми решениями:

Определить значение максимального числа из заданных (используя функцию с вариативной количеством аргументов)
Определить значение максимального числа из заданных используя функцию с вариативной количеством...

Определить значение максимального числа из заданных используя функцию с вариативной количеством аргументов
Определить значение максимального числа из заданных (используя функцию с вариативной количеством...

Поведение функции в зависимости от количества переданных аргументов
Класс Point должен содержать новый метод, возвращающий расстояние от точки, которую он описывает,...

Напишите программу, которая использует шаблон функции для определения наименьшего из двух аргументов.
Напишите программу, которая использует шаблон функции для определения наименьшего из двух...

Преобразование определения одной из функций в определение эквивалентной функции
Есть грамматика некоторого языка функция ::= имя_функции &quot;(&quot; список_параметров &quot;)&quot; &quot;=&gt;&quot;...

3
фрилансер
 Аватар для Алексей1153
5863 / 5402 / 1106
Регистрация: 11.10.2019
Сообщений: 14,434
11.03.2022, 21:13 2
Лучший ответ Сообщение было отмечено Dragon_game как решение

Решение

Dragon_game, вариант с массивом

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <array>
 
template < typename ...Args>
void function(unsigned int input, Args... layerX)
{
    const std::array<unsigned int,sizeof...(Args)> arr({layerX...});
 
    for(const auto& i:arr)
    {
        std::cout << i<<',';
    }
}
 
int main()
{
    function(0,1,2,3,4,5,6);
}
1,2,3,4,5,6,

Добавлено через 10 минут
упростил:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <array>
 
template < typename ...Args>
void function(unsigned int input, Args... layerX)
{
    const std::array arr={((unsigned int)layerX)...};
 
    for(const auto& i:arr)
    {
        std::cout << i<<',';
    }
}
 
int main()
{
    function(0,1,2.8,3,4,5,6.f);
}
1
3 / 3 / 0
Регистрация: 07.10.2018
Сообщений: 59
11.03.2022, 21:42  [ТС] 3
Сделал через стандартный массив
C++
1
2
3
4
5
6
7
8
9
10
template <typename ... Args>
void funciton(Args ... layerX)
{
    const size_t size = sizeof...(layerX);
    unsigned int res[size] = {layerX...};
    for (size_t i = 0; i < size; i++)
    {
        cout << res[i] << endl;
    }
}
0
фрилансер
 Аватар для Алексей1153
5863 / 5402 / 1106
Регистрация: 11.10.2019
Сообщений: 14,434
11.03.2022, 21:48 4
Dragon_game, или так

C++
1
2
3
4
5
6
7
8
9
10
template < typename ...Args>
void function(unsigned int input, Args... layerX)
{
    const unsigned int arr[]={(unsigned int)layerX...};
 
    for(const auto& i:arr)
    {
        std::cout << i<<',';
    }
}
1
11.03.2022, 21:48
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2022, 21:48
Помогаю со студенческими работами здесь

Как определить где закончились аргументы вариативной функции
Что нужно написать в while(10 строчка) чтобы цикл заканчивался когда кончаются параметры....

Задача сформировать массив строк и реализовать функции определения количества слов
Здравствуйте, помогите сделать задачи: 1. Сформировать массив строк. Удалить из него строки,...

Написать программу для определения количества отрицательных значений функции из задания
Написать программу для определения количества отрицательных значений функции из задания на...

Описать функции ввода с клавы элементов одномерного массива и определения количества 0 в этом массиве
Нужно описать функции ввода с клавы элементов одномерного массива и определения количества 0 в этом...

Описать функции ввода с клавиатуры элементов одномерного массива и определения количества нулей в этом массиве
1) вычислите не использую функцию pow(), значение функции Z(x,m)=x в степени m умножить sin в...

Странное расположение в памяти аргументов функции с неизвестным количество аргументов
Не могу понять, почему такая программа не работает, выдавая segmentation fault после распечатки...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru