Не удивительно - вы на самом деле неоднократно печатаете последнюю созданную вами запись (rec). Ваш последний цикл фактически не пересекает массив.
Кроме того, первый цикл только создает структуру, но фактически не добавляет ее в массив.
То, что вы пытаетесь сделать, на самом деле проще и чище, если вы используете векторы вместо массивов, добавляя каждую запись к вектору с помощью push_back (). Это самая близкая вещь к «динамически изменяемому массиву», на который вы ссылаетесь (такой вещи на самом деле не существует в C ++, для чего, помимо прочего, существуют векторы).
Обратите внимание на то, как это сделать, и если вы застряли, не стесняйтесь спрашивать снова, рад помочь.