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

Форум программистов: 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 ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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