• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Где кроется ошибка при заполнении массива структур?

  • Автор темы salvia
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

salvia

У меня ввод данных в массив не происходит, только вот не пойму почему, может быть кто-нибудь подскажет, в чем кроется ошибка? Я не успеваю ввести данные в массив, как у меня появляется:
Enter hobby #1: Enter ooplevel #1: Enter fullname #2 Enter hobby #2: Enter ooplevel #2: Enter fullname #3 Enter hobby #3: Enter ooplevel #3:

Функция getinfo принимает 2 аргумента: указатель на первый элемент массива структур student и кол-во элементов в массиве int.
Функция запрашивает и сохраняет данные о студентах. Ввод прекращается либо после наполнения массива, либо при вводе пустой строки вместо имени студента.
Функция возвращает дейсв. кол-во элементов.

#
Код:
include <iostream>
using namespace std;
const int SLEN = 30;
struct student {
char fullname[SLEN];
char hobby[SLEN];
int ooplevel;
};

int getinfo(student pa[], int n);

int main()
{
student ps[3]; 
int number = getinfo(ps, 3);
cout << "Number enter: " << number << endl;
return 0;
}

int getinfo(student pa[], int n)
{
int i;
for (i=0; i < n; i++)
{
cout << "Enter fullname #" << i + 1 << ": ";
cin >> pa[i].fullname[SLEN];			
cout << "Enter hobby #" << i + 1 << ": ";
cin >> pa[i].hobby[SLEN];			  
cout << "Enter ooplevel #" << i + 1 << ": ";
(cin >> pa[i].ooplevel).get();		 
if (cin >> pa[i].fullname[SLEN] == " ")
break;
}
return i;
}

или так:

Код:
#include <iostream>
using namespace std;
const int SLEN = 30;
struct student
{
char fullname[SLEN];
char hobby[SLEN];
int ooplevel;
};

int getinfo(student pa[], int n); 

int main()
{
student ps[3]; 
int number = getinfo(ps, 3);
cout << "Number enter: " << number << endl;
return 0;
}

int getinfo(student pa[], int n)
{
int i;
for (i=0; i < n; i++)
{
cout << "Enter #" << i + 1 << ": ";
while (cin >> pa[i].fullname[SLEN] >> pa[i].hobby[SLEN] && (cin >> pa[i].ooplevel).get() )
{
if (cin >> pa[i].fullname[SLEN] == " ")
break;		 
}	  
}
return i;
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!