IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Задача по строкам, с++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Alexander

Репутация: -  0  +


Ребята, помогите, пожалуйста. Я не то, что не знаю как написать программу, а я не знаю даже как это выполнить вообще логически. Помогите, пожалуйста. Вот задача: "Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков “+” и “-“. Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой." Заранее благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ну, как убрать все лишнее спереди - есть интересная идея... Смотри: есть строка, из которой можно читать данные через sscanf()... Вот и читаем (вернее пытаемся прочесть) из нее число с плавающей точкой, запоминая саму строку, из которой читаем. Если не удалось - то строка не начинается с представления этого числа, смещаемся на один символ вправо, и пытаемся прочесть число снова... И так до тех пор, пока этого сделать не удастся (число будет прочитано, даже если ПОСЛЕ него будут лишние символы, главное - чтоб их не было ПЕРЕД ним)...

Перечитал... Выглядит ужасно. Понять вообще ничего невозможно... Поделюсь небольшим фрагментом кода:

...
char *s = "-abcd-1.135e+8++uu"; // Это исходная строка
double f = 0.0;
char buffer[128];

for(char *p = s; *p; p++) {
strcpy(buffer, p);
if((count = sscanf(p, "%lf", &f))) break;
}
...


После окончания работы данного фрагмента в buffer-е будет "-1.135e+8++uu", то есть, мы "отсекли все лишнее" спереди... Теперь задача другая - отсечь все лишнее, что есть ПОСЛЕ числа... Этого сделать махинациями с sscanf() не удастся, тут другой путь, о котором выше говорил Оззя:
Цитата
1. Отсечь символы, не входящие в запись вещественного числа с плавающей точкой
В запись могут входить +(-), арабские цифры, e(E), точка.
Попробуй сделать это самостоятельно...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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
volvo   Функция sscanf пытается считать из строки то, что …   16.12.2007 17:40
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


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 4:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name