caramel14
@caramel14
Всякое разное этакое чажу

Не могу разобраться со структурами в С++. Как решить задачу?

По условию нужно создать структуру, состоящую из имени, пола и роста человека, а потом посчитать средний рост девушек.
Но мне не совсем понятно как организовать память и где данные будут храниться?
+не совсем понимаю как включить добавление нового элемента.
const int n = 50;
struct info {
    string Name[n];
    int H;
    char Sex[n];
};

По хорошему, функция заполнения этой структуры выглядит так:

info WriteStruct(info) {
    info man;
    cin.get();
    cout << "Введите Имя: ";
    cin << man.Name();
    cout << "Введите Рост: ";
    cin << man.Н;
    cout << "Введите пол: [M]/[F]";
    cin << man.Sex();
    return man;
}

Что я делаю не так?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
WinPooh32
@WinPooh32
Stack Overflow answer searching expert
string Name[n];

Зачем вам массив строк? std::string уже внутри сам управляет массивами.

Раз у вас c++, то используйте только std::string (массивы чаров обычно понадобятся для взаимодействия с Си-шными библиотеками).

struct info {
    std::string Name;
    int H;
    char Sex;
};


В качестве структуры для хранение возьмите std::vector.
Пример работы с ним в вашем случае:
std::vector<info> people;
info man = WriteStruct(info);
people.push_back(man);

Пройти по массиву можно вот так:
for (int i = 0; i < people.size(); i++) {
   info man = people[i];
}


upd: WriteStruct следует переименовать в ReadStruct, т.к. это названее лучше описывает происходящий в ней процесс.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
Нужно создать массив info[n]
И убрать массивы внутри структуры
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы