Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
135 / 20 / 2
Регистрация: 06.05.2019
Сообщений: 1,359
Записей в блоге: 3
1

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

13.04.2020, 18:55. Показов 1153. Ответов 4
Метки нет (Все метки)

Смысл идеи состоит в том что функция будет принимать любое количество параметров и внутри функции все аргументы будут помещены в строковый массив и через цикл выведены в файл, мне это нужно для проверки данных которые будут поступать в функцию создание своего рода функции Print(). Сложность для меня состоит в том что аргументы разного типа. Покажите пожалуйста примеры.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2020, 18:55
Ответы с готовыми решениями:

Написать шаблонную функцию поиска элемента в матрице (в качестве аргументов функция должна принимать двумерный массив, е
Помогите пожалуйста. Правильный код ? =========================== Написать шаблонную функцию...

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

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

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

4
Параллельный Кот
1902 / 825 / 349
Регистрация: 25.03.2016
Сообщений: 2,041
13.04.2020, 20:18 2
Variadic functions это называется. По ссылке есть примеры.
Цитата Сообщение от Nexi99 Посмотреть сообщение
аргументы разного типа
В таком случае каким-то образом необходимо передавать информацию об этих типах. Строка как в scanf/printf, массив/список/вектор и т.д.

Возможно подойдет Parameter pack(since C++11). Но с ним разные типы в цикле не получится обрабатывать (вроде бы, могу быть не прав).
0
135 / 20 / 2
Регистрация: 06.05.2019
Сообщений: 1,359
Записей в блоге: 3
13.04.2020, 20:22  [ТС] 3
Цитата Сообщение от valen10 Посмотреть сообщение
Variadic functions это называется.
Про эти методики читал тяжко доходит. Ну за совет спасибо буду ещё читать, потому что нужно делать.
0
Параллельный Кот
1902 / 825 / 349
Регистрация: 25.03.2016
Сообщений: 2,041
13.04.2020, 21:25 4
Лучший ответ Сообщение было отмечено XLAT как решение

Решение

Nexi99, было бы гораздо проще, если бы Вы привели небольшой пример того, что требуется сделать. В текущем виде задача выглядит очень абстрактно, сложно придумать подходящую реализацию. Опишите хотя бы:
1. будет ли это ограниченный набор типов, или типы любые, в том числе пользовательские.
2. преобразование в строку стандартными функциями (to_string например) или свой способ.

Что-то подобное должно получиться?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <string>
#include <list>
 
namespace std {
 
// Функция, которая ничего не делает.
// Но без нее нельзя педедать в качестве аргумента строку.
std::string to_string(const std::string &s) {
    return s;
}
 
}
 
// Функция для 0 аргументов - завершение рекурсивных вызовов.
std::list<std::string> to_stringlist() {
    return std::list<std::string>(); // Создается пустой список строк.
}
 
template <typename T, typename... Args>
std::list<std::string> to_stringlist(T val, Args... args) {
    std::list<std::string> list = to_stringlist(args...); // Получить список строк для остальных аргументов.
    list.push_front(std::to_string(val)); // Добавить в начало списка строку с текущим аргументом.
    return list;
}
 
int main() {
    for (const std::string &s : to_stringlist(1, 2, 3.f, 4.0, "5")) {
        std::cout << s << std::endl;
    }
 
    return 0;
}
0
135 / 20 / 2
Регистрация: 06.05.2019
Сообщений: 1,359
Записей в блоге: 3
14.04.2020, 12:00  [ТС] 5
Цитата Сообщение от valen10 Посмотреть сообщение
Nexi99, было бы гораздо проще, если бы Вы привели небольшой пример того, что требуется сделать. В текущем виде задача выглядит очень абстрактно, сложно придумать подходящую реализацию. Опишите хотя бы:
1. будет ли это ограниченный набор типов, или типы любые, в том числе пользовательские.
2. преобразование в строку стандартными функциями (to_string например) или свой способ.
Что-то подобное должно получиться?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <string>
 
 
using std::cout;
using std::endl;
using std::cin;
 
using namespace std;
 
//указанные ниже параметры естественно будут меняться это пример
int zx=16;
double masDb[3]={1,2,3};
bool aq=0;
 
void Print(...){
string masivStr[];// создать динамический массив в который 
//будут перекачиваться аргументы
//в дальнейшем вывод в файл ну тут понятно
}
 
int _tmain(int argc, _TCHAR* argv[])
{//вызов/количество всего аргументов можно указать в начале перед masDb[0] 
Print("masDb[0] ",masDb[0]," masDb[1] ",masDb[1]," masDb[2] ",masDb[2]," aq ",aq," zx ",zx);
    _getch();
    return 0;}
// результат
masDb[0] 1 masDb[1] 2 masDb[2] 3 aq false zx 16
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2020, 12:00

Написать функцию, которая будет инвертировать любые массивы любого типа данных
Добрый день, Столкнулся с проблемой, кратко опишу ситуацию: Надо: написать функцию, которая...

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

Написать шаблонную функцию, которая принимает одномерный массив любого типа, значение такого же типа, и размер массива,
Решил задачу, но у меня выскакивает ошибка. Вот сама задача: Написать шаблонную функцию, которая...

Напишите функцию min которая будет принимать два значения и возвращать минимальное
Помогите пожалуйста.... Очень срочно Напишите функцию min которая будет принимать два значения и...


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

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

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