| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > число в строку |
| Автор: Guest 22.5.2005, 18:09 | ||
| Попалась такая задача: определить является строка числом или нет с условием, первый символ строки может быть '+'. Вот, что я смог написать. Подскажите где ошибки, заранее спасибо.
|
| Автор: Guest 22.5.2005, 18:18 | ||
10-я строчка лишняя(temp[dlina]=a;)
|
| Автор: sergejzr 22.5.2005, 18:21 |
| а atoi нельзя пользоваться? |
| Автор: En_t_end 22.5.2005, 18:29 |
| sergej.z Вероятно это зачетная прога |
| Автор: Guest 22.5.2005, 18:34 |
| если в строке присутствует запятая или точка, то atoi откинет дробную часть.. |
| Автор: sergejzr 22.5.2005, 18:37 |
| Ну atof |
| Автор: sergejzr 22.5.2005, 19:39 | ||
я бы так решил:
|
| Автор: Guest 24.5.2005, 08:53 | ||
Ну а вот более простой вариант, без лишних проверок и функций.
|
| Автор: sergejzr 24.5.2005, 13:15 | ||
| Ув. Guest во первых вы пользуетесь функцией strtod от которой мы вроде отказались, во вторых Проверка на позитивное число отсутствует (и вообще на число) в третьих отсутствует копирование правильного числа в строку в четвёртых перевод в число - не нужная процедура, как видно из первого примера в пятых Ваш пример будет примерно в 100 раз медленнее моего в шестых(придирка И чего в том варианте непростого? Комментары вроде тоже есть. Ладно, напишу покороче
|
| Автор: kleks 6.10.2005, 18:09 |
| Попалась похожая задачка..., отсюда вопрос: а если в строке встречается пробел? Т.е как сделать так, что бы если я ввёл "321 321", то программа не приняла данную строчку за число!!! Заранее благодарен... |
| Автор: _hunter 6.10.2005, 18:13 |
| проверить на наличие в строке пробелов -- strchr() ( или strstr() ) |
| Автор: kleks 6.10.2005, 19:37 | ||
На сколько я понял, в вышеуказанном примере, я должен сделать буквально следующие:
В чём ошибка?! |
| Автор: sergejzr 6.10.2005, 19:48 | ||
Она и так не примет. |
| Автор: kleks 6.10.2005, 20:09 | ||
Действительно..., а почему тогда если в гл. программе я сам ввожу заданную строку, например так:
То программа принемает это число (например "546 465")!!! Подскажите пожалуйста, что не так!!! |
| Автор: bel_nikita 6.10.2005, 20:10 | ||||
| Усложним задачку Добавлено @ 20:14 kleks
|
| Автор: kleks 6.10.2005, 20:36 | ||||
Извините, но я не совсем понял, как это функция работает, я пытался её использовать, но результат всё равно тот же!!! могли объяснить?! |
| Автор: Void 6.10.2005, 20:48 | ||||
А что, "1234....4324...12" у нас теперь нормальное действительное число?
|
| Автор: bel_nikita 6.10.2005, 22:40 | ||||
kleks
_isdigit(const char* p) - берет каждый символ и проверяет его: цифра или нет. Если нет, то возвращаем false |
| Автор: Helicopterr 6.10.2005, 23:04 |
| возник обратный вопрос - как значение переменной int i поместить в char massive [n]? |
| Автор: bel_nikita 6.10.2005, 23:08 | ||
|
| Автор: sergejzr 6.10.2005, 23:09 | ||||||
Ну да, надо прибить.
Товарищи в задаче strtod, strtof, isdigit - функции библиотек, а ими пользоваться нельзя в этом случае иначе любую задачу X можно было бы решить: #include <library_for_solving_X> cout<<solve(X); Ну а если пользоваться можно всем, то почему не strtod?
Это не функции проблема, а cin он пробелом разбивает на два числа. cin как то настраивается, но я сейчас не знаю таких тонкостей, на Си давно не прогал. Добавлено @ 23:12 А, вот! cin.getline(num, длинна_num, '\n') поможет |
| Автор: Helicopterr 6.10.2005, 23:16 | ||||
ой я имел ввиду поместить на место n-го элемента с сохранением остальных. ( __int8 т.е. 0-9) |
| Автор: sergejzr 6.10.2005, 23:19 | ||||||
Вот пока полное решение:
Добавлено @ 23:24
|
| Автор: bel_nikita 6.10.2005, 23:25 | ||
sergej.z
|
| Автор: sergejzr 6.10.2005, 23:29 | ||
Тогда смысл задания пропадает. потому что ответ={char *x="1234.44"; strtod((x),&x);} |
| Автор: Mayk 6.10.2005, 23:35 | ||
Хоть библиотеками пользоваться нельзя, но вот еще один метод(может string'ами можно). не претендует на скорость.
оффтоп отсюда зы. а вообще запрещать юзать стд либы это неправильно. Это всё равно что учить изобретать велосипед - зачем? От этого никому легче не становится |
| Автор: sergejzr 6.10.2005, 23:36 |
| Скажем так, ... неинтересно |