→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
масив структур 
Автор Сообщение
Начинающий

Регистрация: 17.06.2008
Сообщения: 7
Откуда: Украина

Репутация: 0 [ ? ]
Сообщение масив структур
Здрасте. Я сейчас самостоятельно учу С++ поэтому небыло у кого спросить решил пойти за помощью на этот форум. Ближе к телу.
Тут есть задача на масив структур. Я застопорился в вводe в масив.
Сама структура:
[syntax=cpp] struct student
{
char fullname[slen];
char hobby[slen];
int ooplevel;
};[/syntax]

Код:
[syntax=cpp]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;
}[/syntax]

тут после ввода возраста чтото непонятное: не вводит ни имя ни хобби для второй структуры ввести возраст можно только после фразы в цыкле. Подумал что при вводе возраста выставляется флаг ошибки и после цикла поставил cin.clear() но толку не дало.


P.S. Если спросил очевидные вещи сильно не бейте - я только учусь и за полдня мучений их не увидел. [request]

_________________
ищу хакера со знанием компьютера


17.06.2008 16:38
Профиль
Профи
Аватара пользователя

Регистрация: 26.02.2008
Сообщения: 112
Откуда: Украина

Репутация: 2 [ ? ]
Сообщение 
Видимо всё дело в несоответствии типов данных. cin возвращает обычно символьное значение.
Попробуй объявить переменную типа char и считать в неё данные, а после преобразовать их в тип int
Например
[syntax=cpp]
int getinfo(student pa[], int n)
{
char a;
int i = 0;
while(i<n)
{
//ввод данных
//....
//ввод возраста
cin>>a;
pa[i].ooplevel = (int)a;

i++;
}
return i;
}
[/syntax]

_________________
If it works, then it created by ivan-hohol, if not, then I don't know who this created


19.06.2008 17:59
Профиль Отправить email ICQ
Начинающий

Регистрация: 17.06.2008
Сообщения: 7
Откуда: Украина

Репутация: 0 [ ? ]
Сообщение 
Способ не работает. Нащет cin вот что написано в книге по которой я учусь:

[syntax=cpp]int n;
cin >> n;[/syntax]

Что происходит если вводится вместо числа слово? Тогда:
-Значение n остаётся неизменным.
-Несоотвествующие входные данные остаются в очереди ввода.
-В обекте cin устанавливается флаг ошибки.
-При вызове метода cin в случае преобразования в тип bool возвращается значение false

_________________
ищу хакера со знанием компьютера


Последний раз редактировалось pycha 20.06.2008 10:06, всего редактировалось 1 раз.



19.06.2008 21:53
Профиль
Начинающий

Регистрация: 17.06.2008
Сообщения: 7
Откуда: Украина

Репутация: 0 [ ? ]
Сообщение 
Всё !!! На помощь пришла cin.sync() Вот:

[syntax=cpp]int getinfo(student pa[], int n)
{

int i = 0;
while(i<n)
{
cout << "\n\nvvedite imya v masiv: "<<i+1<<" " ;
cin.sync();
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.sync();
cin.clear();
cout << "\nvvedite vozrast\n";
}
i++;
}
return i;
}
[/syntax]

_________________
ищу хакера со знанием компьютера


20.06.2008 10:05
Профиль
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Yahoo [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»