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

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

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



func_fill(struct COMMAND__)

{

//code

return COMMAND__;

}



Но не понимаю как это можно реализовать. Помогите пожалуйста.
 
Регистрация
27 Июн 2013
Сообщения
72
Репутация
0
Спасибо
0
Монет
0
Вопрос лежит не в области программирования, а в области математики и исходные для решения этой задачи в вопросе полностью отсутствуют. Если данные в структурах каким-то образом могут быть функционально порождены по определённому базису, то такую функцию имеет смысл писать (не для 9 экземпляров, а например для 90+), в противном случае их нужно заполнять, причем скорее всего не в коде с++, а в виде какого-то описания данных, json или xml для примера; затем эти данные при запуске вычитывать из папки с данными.
 
Регистрация
16 Дек 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
Или тупо обнулить всю структуру, записав нулями через функцию memset, или муторно записывать ручками. Чудес не бывает
 
Регистрация
25 Мар 2013
Сообщения
88
Репутация
-3
Спасибо
0
Монет
0
Ну для начала нужно принимать аргумент по ссылке, чтобы изменить именно тот объект, который передаешь, а новый скопированный. Потом нужно получить доступ к элементам и как-то заполнять. Доступ реализуешь либо помещая данные в public поле, либо через геттеры и сеттеры
 
Регистрация
24 Дек 2013
Сообщения
93
Репутация
4
Спасибо
0
Монет
0
// С использованием перегрузки оператора ввода
#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");
}
 
Сверху Снизу