Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++!! Функция верная, но не работает!

фадей фобен Знаток (402), на голосовании 5 месяцев назад
Здравствуйте, функция void search которая должна сравнивать фамилия с фамилией в массиве структуры не находит фамилию, точнее если к примеру добавляю 3 абонентов, то последных двух он находит, а вот первого нет. Код: https://onlinegdb.com/pN3wrzEwL
Голосование за лучший ответ
Батаев Дмитрий Просветленный (22926) 6 месяцев назад
убери found = true; и убери проверку этого found. Как только будет найдена ПЕРВАЯ фамилия, то сразу break и всё
Батаев ДмитрийПросветленный (22926) 6 месяцев назад
а если несколько фамилий, то break не нужен в принципе. Пока находит фамилию - печать до конца списка
Батаев ДмитрийПросветленный (22926) 6 месяцев назад
если не сделаешь сам, то сообщи, а может подскажут ранее
фадей фобенЗнаток (402) 6 месяцев назад
found тут лишь индикатор нахождения, а break нужен так как ищем определенную фамилию. В общем сделал по другому вместо string familya, сделал char familya[100], ну и проверку поменял на strcmp(fan[i].familya, familya) == 0, теперь все работает
Татьяна Просветленный (36384) 5 месяцев назад
Ваша проблема, вероятно, связана с тем, что вы используете cin.ignore() в неправильных местах, что может приводить к пропуску ввода. Когда вы вызываете cin.ignore() после ввода с cin >>, это может очистить буфер ввода, пропуская следующий ввод.

Попробуйте изменить функцию addfon следующим образом:
https://www.onlinegdb.com/fork/pN3wrzEwL
Похожие вопросы