![]() |
|
Модераторы: bsa |
![]()
|
|
| Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
![]() ![]() Моя версия:
Но! Если начать ввод name с символа, отличного от пробела, то получим всегда ноль, а если начать ввод с пробела, то всегда получим значение 1. Помогите найти ошибку(и). -------------------- Don't let the system get you down. |
|||
|
||||
| Pitlord |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 31.10.2009 Репутация: нет Всего: 7 |
Metalex, а почему нельзя было как-то переписать задание и по-своему его описать?
Если закрыть глаза на грубый код, то:
|
|||
|
||||
| Valinur |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 21.9.2007 Где: Москва Репутация: 2 Всего: 6 |
Набросал вот кое-что... опять таки не идеальный код. Ибо желательно сделать так, чтобы пользователь мог сам ввести число символов! Но почему-то не получается, потому что начинает криво работать функция gets_s()
Код достаточно понятный. Единственное, что можно отметить, это проверку на конец строки, ибо алгоритм предполагает, что после каждого слова стоит пробел, но конец может быть "беспробельным", а '\0' есть всегда
Ваш код... Я понял, что вы хотели сделать ) Но он в принципе не будет работать! Вот здесь
--------------------
Не бойтесь совершенства, Вы все равно его не достигнете (с) ... |
||||
|
|||||
| Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
Ну попробовал так:
Но, почему-то сама процедура ввода строки пропускается З.Ы. gets_s по ходу слишком нова для моего компилятора - Borland C++ 3.1 -------------------- Don't let the system get you down. |
|||
|
||||
| Pitlord |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 31.10.2009 Репутация: нет Всего: 7 |
Metalex, n не опеределно.
|
|||
|
||||
| Valinur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 21.9.2007 Где: Москва Репутация: 2 Всего: 6 |
Я думаю это то, что вам нужно Это сообщение отредактировал(а) Valinur - 8.11.2009, 22:35 --------------------
Не бойтесь совершенства, Вы все равно его не достигнете (с) ... |
|||
|
||||
| Pitlord |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 31.10.2009 Репутация: нет Всего: 7 |
Valinur, обращение к элементам string'а делается через метод at: str.at(i) и при попытке доступа к элементу вне строки вылезет ошибка, причём нулевой байт в строку не входит.
Это сообщение отредактировал(а) Pitlord - 8.11.2009, 22:39 |
|||
|
||||
| Valinur |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 21.9.2007 Где: Москва Репутация: 2 Всего: 6 |
--------------------
Не бойтесь совершенства, Вы все равно его не достигнете (с) ... |
||||||
|
|||||||
| Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
Всем огромное спасибо за участие!
-------------------- Don't let the system get you down. |
|||
|
||||
| Metalex |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
Возникли вопросы:
зачем
как работает
? -------------------- Don't let the system get you down. |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Metalex, cin.ignore() нужен, чтобы пропустить символ конца строки, который появляется из-за нажатия на ввод.
Про std::istream::getline написано тут Это сообщение отредактировал(а) bsa - 12.11.2009, 12:21 |
|||
|
||||
| Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
То есть насколько я понял
мы считываем с клавиатуры n+1 символов, которые записываются в str? А cin.getline и std::istream::getline - это одно и то же. Так? Это сообщение отредактировал(а) Metalex - 12.11.2009, 13:57 -------------------- Don't let the system get you down. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Metalex, нет. мы считываем строку (до символа '\n'), но не более n+1 символов.
cin - это объект с поведением объекта класса std::istream. Таким образом, запись cin.getline() производит вызов метода std::istream::getline() с передачей указателя на cin в качестве параметра this. |
|||
|
||||
| Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
разобрался более-менее, спасибо
-------------------- Don't let the system get you down. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |