Задача по строкам, с++ |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Задача по строкам, с++ |
3BePb |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Alexander Репутация: 0 |
Ребята, помогите, пожалуйста. Я не то, что не знаю как написать программу, а я не знаю даже как это выполнить вообще логически. Помогите, пожалуйста. Вот задача: "Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков “+” и “-“. Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой." Заранее благодарен.
|
volvo |
Сообщение
#2
|
Гость |
Функция sscanf пытается считать из строки то, что задано в ее "форматной строке". В данном случае, задано чтение "%lf" - то есть числа типа double. Но ведь sscanf - это функция, она ж еще и значение возвращает. А вот возвращает она - сколько найдено в строке соответствий с тем, что просили найти... То есть, пока вещественное число не может быть прочитано (хотя и требовалось) - sscanf будет возвращать 0 и запишется этот 0 в переменную count. Условие if в С++ выполняется, если выражение стоЯщее в нем - ненулевое, то есть, пока count == 0 выхода из цикла не будет. А значит, будет опять отбрасывание очередного символа в начале строки и еще одна попытка sscanf-а прочесть вещественное число...
Теперь, допустим, что buffer на каком-то этапе стал равным "-1.135e+8++uu"... В этом случае sscanf считает одно число из него... И вернет единицу. Вот эта единица и заставит цикл прерваться (через break)... Теперь понятнее? |
Текстовая версия | 27.04.2024 22:38 |