C/C++

Функция заполняющая структуру, C++

У меня есть 9 структур, и заполнение хотя-бы 1 очень муторное. Я хочу написать функцию которая бы заполнила структуру. Выглядеть это должно примерно так:

func_fill(struct COMMAND__)
{
//code
return COMMAND__;
}

Но не понимаю как это можно реализовать. Помогите пожалуйста.
Ну для начала нужно принимать аргумент по ссылке, чтобы изменить именно тот объект, который передаешь, а новый скопированный. Потом нужно получить доступ к элементам и как-то заполнять. Доступ реализуешь либо помещая данные в public поле, либо через геттеры и сеттеры
Mo
Moob
12 733
Лучший ответ
Павел Шалаумов хочешь ему мозг взорвать
// С использованием перегрузки оператора ввода
#include <iostream>
#include <limits>
#include <string>
using namespace std;
template<typename T>
T input(istream& inp, const char* msg) {
cout << msg;
T value;
inp >> value;
inp.ignore(numeric_limits<streamsize>::max(), '\n');
return value;
}
struct Person {
int age;
string name;
private:
friend istream& operator>>(istream& inp, Person& p) {
cout << "Ф. И. О.: ";
getline(inp, p.name);
p.age = input<int>(inp, "Возраст: ");
return inp;
}
};
int main() {
system("chcp 1251 > nul");
const auto length = 8U;
Person persons[length];
for (auto& person : persons) cin >> person;
system("pause > nul");
}
// С использованием функции
#include <iostream>
#include <limits>
#include <string>
using namespace std;
template<typename T>
T input(istream& inp, const char* msg) {
cout << msg;
T value;
inp >> value;
inp.ignore(numeric_limits<streamsize>::max(), '\n');
return value;
}
struct Person {
int age;
string name;
};
Person input_person() {
Person p;
cout << "Ф. И. О.: ";
getline(cin, p.name);
p.age = input<int>(cin, "Возраст: ");
return p;
}
int main() {
system("chcp 1251 > nul");
const auto length = 8U;
Person persons[length];
for (auto& person : persons) person = input_person();
system("pause > nul");
}
// С использованием метода
#include <iostream>
#include <limits>
#include <string>
using namespace std;
template<typename T>
T input(istream& inp, const char* msg) {
cout << msg;
T value;
inp >> value;
inp.ignore(numeric_limits<streamsize>::max(), '\n');
return value;
}
struct Person {
int age;
string name;
void set() {
cout << "Ф. И. О.: ";
getline(cin, name);
age = input<int>(cin, "Возраст: ");
}
};
int main() {
system("chcp 1251 > nul");
const auto length = 8U;
Person persons[length];
for (auto& person : persons) person.set();
system("pause > nul");
}
ОА
Олег Акаемов
99 631
Или тупо обнулить всю структуру, записав нулями через функцию memset, или муторно записывать ручками. Чудес не бывает
Николай Емелин
Николай Емелин
52 220
Вопрос лежит не в области программирования, а в области математики и исходные для решения этой задачи в вопросе полностью отсутствуют. Если данные в структурах каким-то образом могут быть функционально порождены по определённому базису, то такую функцию имеет смысл писать (не для 9 экземпляров, а например для 90+), в противном случае их нужно заполнять, причем скорее всего не в коде с++, а в виде какого-то описания данных, json или xml для примера; затем эти данные при запуске вычитывать из папки с данными.
Денис Дружков
Денис Дружков
30 155
Давай одну структуру ПРЕЖДЕ ВСЕГО
Павел Шалаумов
Павел Шалаумов
21 700
Павел Шалаумов плюсом должны быть списки допустим Название, цена количество уже готовые. Прайс-лист видел когда-нибудь? Наименование Цена Количнство заполняют девочки в офисах в таблицы эксель РУЧКАМИ СВОИМИ БЕЛЫМИ