масив структур

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
pycha
Сообщения: 2
Зарегистрирован: 12 май 2008, 20:28

масив структур

Сообщение pycha » 18 июн 2008, 10:54

Здрасте. Я сейчас самостоятельно учу С++ поэтому небыло у кого спросить решил пойти за помощью на этот форум. Ближе к телу.
Тут есть задача на масив структур. Я застопорился в 2-х функциях. Первая это ввод в масив.

Сама структура:

Код: Выделить всё

  struct student 
 { 
 char fullname[slen]; 
 char hobby[slen]; 
 int ooplevel; 
 };
Основной код:

Код: Выделить всё

 int getinfo(student pa[], int n) 
 { 
  
 int i = 0; 
 while(i<n)  
     { 
 cout << "vvedite imya v masiv: "<<i+1<<" " ; 
 cin.get(pa[i].fullname, 30).get(); 
 if (pa[i].fullname[0] == ' ') 
 break; 
 cout << "vvedite hobby "; 
 cin.get(pa[i].hobby, 30).get(); 
 cout<< "vvedite vozrast "; 
 while (! (cin>> pa[i].ooplevel))//вот сдесь заковырка 
 { 
 cin.clear(); 
 cout << "\n1vvedite vozract\n"; 
 } 
 i++; 
 } 
 return i; 
 }
тут после ввода возраста чтото непонятное: не вводит ни имя ни хобби для второй структуры ввести возраст можно только после фразы в цыкле. Подумал что при вводе возраста выставляется флаг ошибки и после цикла поставил cin.clear() но толку не дало.

Второе: функция вывода данных из структуры при получении указателя на нее. Код:

Код: Выделить всё

 void display2(const student * ps) 
 { 
 cout<< "\n\n\n " << *ps->fullname; 
 cout <<"\n" << *ps->hobby<< endl; 
 cout << *ps->ooplevel<< endl;//тут компилятор выдает ошибку 
 }
Что тут не так тоже не пойму.
P.S. Если спросил очевидные вещи сильно не бейте - я только учусь и за полдня мучений их не увидел.

BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

Re: масив структур

Сообщение BBB » 18 июн 2008, 11:17

Звездочка не нужна:

Код: Выделить всё

cout<< "\n\n\n " << ps->fullname; 
cout <<"\n" << ps->hobby<< endl; 
cout << ps->ooplevel<< endl;

pycha
Сообщения: 2
Зарегистрирован: 12 май 2008, 20:28

Re: масив структур

Сообщение pycha » 18 июн 2008, 13:46

Да действительно без звездочки все заработало.
спасибо.
С
while (! (cin>> pa.ooplevel))
я сам разобрался - надо добавить cin.sync().

Ответить