Как распечатать все значения в динамически изменяемой структуре? C ++ - PullRequest
0 голосов
/ 11 января 2019

У меня есть динамически изменяющая структура []. Я спрашиваю у пользователя, сколько записей он хочет, а затем составляет столько структур. Затем я сохраняю информацию об имени и возрасте в структуре. Проблема в том, что при распечатке этих данных я печатаю только фамилию и возраст пользователя. Я хотел бы напечатать все значения.

struct Records
{
    char name [32] ;
    int age;
};
void program2()
{
    Records rec;
    int size;
    cout << "How many record would you like?";
    cin >> size;
    cout << "\n" << size;
    Records* a = new Records[size];
    for (int i = 0; i < size; i++)
    {
        cout << "Whats the name for the Record: ";
        cin >> rec.name;
        cout << rec.name;
        cout << "What is the age for this record: ";
        cin >> rec.age;

    }
    for (int i = 0; i < size; i++)
    {
        cout << "\n" << rec.name << rec.age;
    }
}

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Не удивительно - вы на самом деле неоднократно печатаете последнюю созданную вами запись (rec). Ваш последний цикл фактически не пересекает массив.

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

То, что вы пытаетесь сделать, на самом деле проще и чище, если вы используете векторы вместо массивов, добавляя каждую запись к вектору с помощью push_back (). Это самая близкая вещь к «динамически изменяемому массиву», на который вы ссылаетесь (такой вещи на самом деле не существует в C ++, для чего, помимо прочего, существуют векторы).

Обратите внимание на то, как это сделать, и если вы застряли, не стесняйтесь спрашивать снова, рад помочь.

0 голосов
/ 11 января 2019

В вашем коде переменная rec не имеет ничего общего с массивом. Чтобы получить доступ к элементу в позиции i вашего массива, вам нужно использовать a[i].

Например:

cin >> a[i].name;

или

cout << "\n" << a[i].name << " " << a[i].age;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...