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)... Теперь понятнее? |
3BePb Задача по строкам 15.12.2007 18:43
Ozzя 1. Отсечь символы, не входящие в запись вещественн… 15.12.2007 18:59
volvo Если установлен Билдер... А если нет?
Автору: наз… 15.12.2007 19:37
Гость У меня Microsft Visual C++ 6.0 ну или 2005 15.12.2007 20:15
3BePb
У меня Microsft Visual C++ 6.0 ну или 2005
Это н… 15.12.2007 20:18
3BePb Ну я в принципе написал прогу, но она работает тол… 15.12.2007 21:16
volvo Примеры ввода и соответствующего им вывода приведи… 15.12.2007 21:19
3BePb
Примеры ввода и соответствующего им вывода привед… 15.12.2007 23:47
volvo Ну, как убрать все лишнее спереди - есть интересна… 16.12.2007 2:06
3BePb
...
char *s = "-abcd-1.135e+8++uu… 16.12.2007 3:44
volvo count - это переменная:
int count = 0; 16.12.2007 4:09
3BePb А напиши, пожалуйста, комментраий к if'у, а то… 16.12.2007 17:17
3BePb Ну про sscanf вроде бы понятно. А вот почему у мен… 16.12.2007 17:54
volvo Работать-то она работает, только неправильно... По… 16.12.2007 18:06
3BePb А как ... смотреть, что УЖЕ БЫЛО и думать, может … 16.12.2007 18:19
volvo Вот эта программа, к примеру, решает задачу (за ис… 16.12.2007 18:25
3BePb Я подумал и, кажется, понял, что за частный случай… 16.12.2007 18:51
volvo Это не является частным случаем, о котором я говор… 16.12.2007 19:06
3BePb Я имел в виду, что не допускается ввода в строке д… 16.12.2007 19:10
volvo "abcdfgh1.75e+3+fff"
Что будет? 16.12.2007 20:04![]() ![]() |
|
Текстовая версия | 6.11.2025 3:36 |