|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.05.2017, 15:29 | #21 |
Форумчанин
Регистрация: 09.04.2017
Сообщений: 598
|
Нет!! В том то и дело что коррелирует именно с наличием setlocale(LC_ALL,"rus");!!!
Его убираешь из программы и всё нормально! Уже всё сделал как вы сказали strlen стоит и всё норм! Но в вашей программе нет setlocale(LC_ALL,"rus"); и все срабатывало сразу. А у меня есть и не было норм результата пока методом тыка не убрал тогда стало норм. |
08.05.2017, 15:32 | #22 |
Форумчанин
Регистрация: 09.04.2017
Сообщений: 598
|
Вот код работающей программы с вводом значения $333.34 Если есть setlocale(LC_ALL,"rus"); то вместо вывода 333.34 будет вывод 333.00
Убрать setlocale(LC_ALL,"rus"); и становится как надо, но тогда вместо русских букв кракозябры. Код:
|
08.05.2017, 15:34 | #23 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну так определяйте в каком месте проблема.
Начните с вывода str1[j], если там все ок, то str[a]. Если и там все ок, то результат atof.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
08.05.2017, 15:49 | #24 |
Форумчанин
Регистрация: 09.04.2017
Сообщений: 598
|
Может я как то сумбурно излагаю.. В общем проблема найдена.
Она заключается в наличии оператора setlocale(LC_ALL,"rus"); Он нужен для того, чтобы текст на русском языке, в процессе выполнения программы, отображался именно русскими буквами. Если я не ставлю этот оператор, то вместо русских букв, появляются всякие каракули. Если в программе есть этот оператор, то введенное, либо прописанное в программе значение строки $333.34 после прохождения функции isdigit и atof на выводе будет выглядеть как 333.00 Если этот оператор убрать, то вместо русских букв "Введите денежную строку:" будут всякие каракули иероглифы, но значение строки $333.34 будет выведено правильно 333.34 То есть проблема заключается в наличии оператора setlocale(LC_ALL,"rus"); Как сделать так, чтобы он был, но при этом не страдало качество вывода значения строки? |
08.05.2017, 15:52 | #25 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну так все равно надо ж определить на каком этапе в этом случае возникает проблема (как и в любой другой непонятной ситуации): сразу при вводе, или при фильтрации, или при конвертации в число.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
08.05.2017, 16:47 | #26 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
|
08.05.2017, 16:48 | #27 |
Форумчанин
Регистрация: 09.04.2017
Сообщений: 598
|
Пытался но не умею я. Куда мне, я еще и язык то толком не выучил..
Вот пытался отладкой, да не понимаю я на каком этапе. Жму F10 покадрово вроде, а в момент когда вводишь $333.34 (т.е. жмешь интер) там сразу хоп! и всё уже.. вот после этого хоп сделал скриншот. Не знаю как интерпретировать эти данные. Вроде вывода еще не произошло, на консоли нет выведенного значения 333.00 но в окне вкладки "Локальные" видно, что b уже равен 333.00 А на каком этапе, не пойму. |
08.05.2017, 16:49 | #28 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Для отладки можно пользоваться и просто выводом в консоль.
Код:
http://en.cppreference.com/w/cpp/string/byte/atof Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 08.05.2017 в 16:57. |
|
08.05.2017, 16:54 | #29 |
Форумчанин
Регистрация: 09.04.2017
Сообщений: 598
|
Не успел сам написать сделал код так
Код:
|
08.05.2017, 16:56 | #30 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Дык написали ж уже. Скорее всего в вашей локали разделитель десятичной части не точка, а например запятая.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Копирование значений ячеек из одной строки в другую | ольгаг | Microsoft Office Excel | 1 | 19.12.2016 10:47 |
умножение одной матрицы на другую (выводить не только ответ, но и ход решения) Delphi или C++ | carrie bradshaw | Помощь студентам | 0 | 29.04.2014 00:20 |
Переход с одной строки на другую в DBF сканировании | danxiel | Помощь студентам | 2 | 04.09.2012 14:15 |
MS SQL SERVER 2005 копирование таблицы из ОДНОЙ БД В другую или перенести все строки из одной таблицы в другую | reihtmonbern | БД в Delphi | 4 | 17.07.2012 23:25 |
Перенос данных из строки одной таблицы БД в другую БД | Optigood | БД в Delphi | 15 | 12.05.2010 17:07 |