26 / 26 / 8
Регистрация: 14.05.2011
Сообщений: 242

Проверка является ли строка вещественным числом, если да то записать его в вещественную переменную

20.03.2013, 22:28. Показов 11455. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как узнать цифра или буква я знаю мне интересно вот, что например встретил я в строке цифру иду дальше в цикле записывая цифры в отдельную временную строку, потом сталкиваюсь с запятой и тоже пишу ее в нашу отдельную строку, в итоге я записал наше число в отдельную строку(пропарсил так сказать), и как мне теперь эту строку представить в вещественном типе или же в целом если число оказалось без запятой?

Добавлено через 4 минуты
работаю в VS 2010 в консольном проекте
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.03.2013, 22:28
Ответы с готовыми решениями:

Определить, является ли введенная с клавиатуры строка вещественным числом
Написать программу, которая проверяет, является ли введенная с клавиатуры строка вещественным числом. Если является, то программа должна...

Проверка строки (является ли она целым или вещественным числом)
Нашел функцию isdigit(). Вычитал про нее таку. штуку: Функция isdigit используется для проверки первого символа в строке str, и, если...

Проверка является ли строка числом полностью числом или нет?
как проверить является ли строка типа "23уар" полностью числом или нет?

4
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
25.03.2013, 13:28
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string number_str = "123.456";
    std::istringstream istr(number_str);
    
    double number;
    
    istr >> number;
    
    std::cout << number << std::endl;
    
    return 0;
}
0
 Аватар для Я-Лис
69 / 69 / 2
Регистрация: 10.05.2011
Сообщений: 174
11.05.2013, 15:30
silent_1991, как сделать проверку, что если вводятся не цифры, а символы например, то задавать определенное значение или вывести сообщение об ошибке?
Например пользователь ввел строку "1dfnls" или что-то в этом роде, т.е. введено некорректное значение, как проверить, что введенная строка не вещественное число?
В примере silent_1991 значение number будет мусор. Если присвоить значение по умолчанию перед преобразованием строки в число, то будет значение по умолчанию.
Короче мне нужно, чтоб если пользователь ввел неверное значение, вышло сообщение мол "введены неверные данные" и присвоилось значение по умолчанию.
Я попробовал написать функцию проверки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int isValueFloat(string s_param)
{
    bool f = false;//есть ли точка
    for(int i=0;i<s_param.size();i++)
    {
        if((s_param[i]>='0') && (s_param[i]<='9'))
            continue;
        else if(s_param[i] == '.')
        {
            if(!f)
            {
                f = true;   //'.' уже есть
                continue;
            }
            else
                return 0;
        }
        else
        {
            //cout<<endl<<"Error: invalid value of parameter.";
            //cout<<endl<<"Value must be number"<<endl;
            return 0;
        }
    }
 
    return (1);
}
Передаю в нее string строку в которую считываю введенную строку.
Она работает если вводить число таким образом "0.00001", НО НЕ работает
если ввести в научном стиле, например 1e-5.

Добавлено через 12 минут
Кстати, затем в main() я проверяю if(isValueFloat(str)), то присваиваю number = atof(str.c_str());
C++
1
2
3
4
5
6
7
8
9
    if(isValueFloat(str))
        eps = atof(str.c_str());
    else
    {
        cout<<endl<<"Error: invalid value of parameter.";
        cout<<endl<<"Value must be number"<<endl;
        _getch();
        return 0;
    }
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.05.2013, 15:44
Я-Лис, для подобных проверок отлично подойдут регулярные выражения. Составить несколько регулярных выражений для разных вариантов записи числа (т.е. например вещественное число - это некоторая последовательность цифр, начинающаяся не с нуля, или один-единственный нуль, за которыми идёт точка и некоторая последовательность цифр; для научной записи соответственно тоже составляется регулярное выражение) и проверять, соответствует ли введённая последовательность символов составленному регулярному выражению. Регулярки есть в бусте или в последнем плюсовом стандарте. В свою очередь, для конкретного регулярного выражения можно составить конечный автомат, который прекрасно реализуется на свитчах или через паттерн "Состояние".
1
 Аватар для Я-Лис
69 / 69 / 2
Регистрация: 10.05.2011
Сообщений: 174
11.05.2013, 16:25
silent_1991, мда..., вообще не в курсе что за регулярные выражения.
Времени нет изучать, пока забить на это.
Но за мысль спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2013, 16:25
Помогаю со студенческими работами здесь

Является ли строка целым числом, вещественным или не является числом
Задание. Определите, является ли заданная строка записью целого числа, записью вещественного числа, или строку нельзя преобразовать в...

Выяснить – является ли выделенное слово числом. Если да, то каким числом (целым или вещественным)
Доброго дня всем. Помогите пожалуйста составить программу, которая выясняет – является ли выделенное слово числом. Если да, то каким числом...

Как проверить, что строка является вещественным числом?
например задана строка string str=&quot;6.9&quot; и как проверить что вещественное? для целого типа можно так сделать int int_i;...

Определить, чем является строка – целым числом, вещественным, датой или текстовой строкой
Помогите разобраться.. Это задание на семинар - Вобщем здесь меня интересует сам алгоритм который определяет что введено. ...

Проверка, является ли строка целым числом?
Есть готовый, и работающий код. Нужно только немного изменить: Чтобы на 25 строке вместо char k; Было char* k; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru