Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разделяемая память http://www.cyberforum.ru/cpp-beginners/thread814163.html
Добрый день!!! Столкнулся вот с какой проблемой, мне необходимо написать программу крестики-нолики через разделяемую память. А как это сделать я не знаю. Помогите пожалуйста, либо литературой, либо кодом. Буду приочень благодарен
C++ Определить, является ли первая и последняя цифра числа одинаковой Определить, является ли первая и последняя цифра числа одинаковой. на с++ http://www.cyberforum.ru/cpp-beginners/thread814139.html
создать функцию удаления max и min эл-та массива C++
Я написал почти всю программу в которой задание состоит следующим образом: Удалить максимальный и минимальный эл-т массива вот код#include <iostream> #include <cstdlib> #include <conio.h> #include <ctime> #include <math.h> using namespace std; void fillManual(int*,int);
C++ Можно ли в структуре создать строку с неуказанным размером?
Можно ли в структуре создать строку с неуказанным размером?
C++ Работа с массивами (Заполните его числами, полученными по закономерности, найти в каждом столбце среднее арифметическое элементов) http://www.cyberforum.ru/cpp-beginners/thread814085.html
Объявите двумерный вещественный массив, в котором n * m элементов. Заполните его числами, полученными по закономерности: {a}_{ij} = \prod_{i=0}^{j}\frac{n}{i+j+1}. Выведите его в виде таблицы с точностью до 3 знаков после запятой. Найдите в каждом столбце среднее арифметическое элементов. Распечатайте найденные средние арифметические под соответствующим столбцом с той же точностью.
C++ Программа, которая вводит текст, удаляет в нем все слова заданной длины, а оставшиеся слова выводит в алфавитн Разработать программу, которая вводит текст, удаляет в нем все слова заданной длины, а оставшиеся слова выводит в алфавитном порядке. подробнее

Показать сообщение отдельно
Я-Лис
29 / 64 / 13
Регистрация: 10.05.2011
Сообщений: 173
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;
    }
 
Текущее время: 14:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru