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

Число с плавающей запятой в строках - C++

Восстановить пароль Регистрация
 
VanHalen
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 5
31.05.2014, 02:09     Число с плавающей запятой в строках #1
Задание - из строки выделить подстроку, задающую число с плавающей точкой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 02:09     Число с плавающей запятой в строках
Посмотрите здесь:

Операция с плавающей запятой C++
Числа с плавающей запятой C++
C++ как следить за числом с плавающей запятой?
произведение чисел с плавающей запятой C++
C++ Конвертация чисел с плавающей запятой в HEX
запись типов с плавающей запятой C++
Как будет выглядеть заголовок функции, принимающей в качестве входных параметров два целых числа и возвращающей число с плавающей запятой двойной точн C++
C++ Класс : Число с плавающей запятой(точкой)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,215
Завершенные тесты: 1
31.05.2014, 03:37     Число с плавающей запятой в строках #2
VanHalen,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <cctype>
 
std::string findFloat(const std::string & s, std::string::size_type pos = 0) {
    std::string::size_type sep = s.find('.', pos);
    if (sep == std::string::npos) return std::string();
    int b, e;
    for (b = sep - 1; b >= 0 && ::isdigit(s[b]); --b);
    ++b;
    for (e = sep + 1; e < s.length() && ::isdigit(s[e]); ++e);
    return s.substr(b, e - b);
}
 
int main() {
    std::cout << findFloat("total amount is 222.2302 pounds.") << " "
              << findFloat("1234.567") << " "
              << findFloat(".1234");
}
Добавлено через 8 минут
для случая, если разделитель встречается перед числом:
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
#include <iostream>
#include <string>
#include <cctype>
 
std::string findFloat(const std::string & s, std::string::size_type pos = 0) {
    std::string::size_type sep = s.find('.', pos);
    for(int b, e;;) {
        sep = s.find('.', pos);
        if (sep == std::string::npos) return std::string();
        for (b = sep - 1; b >= 0 && ::isdigit(s[b]); --b);
        ++b;
        for (e = sep + 1; b < s.length() && ::isdigit(s[e]); ++e);
        if (e - b > 1) return s.substr(b, e - b);
        pos = sep + 1; 
    }
}
 
int main() {
    std::cout << findFloat("total amount is 222.2302 pounds.") << " "
              << findFloat("1234.567") << " "
              << findFloat(".1234") << " "
              << findFloat("pounds. amount. is 222.2302 ")
    ;
}
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
31.05.2014, 03:59     Число с плавающей запятой в строках #3
VanHalen, как вариант:
C++
1
2
3
4
5
6
7
8
9
10
#include <regex>
 
using namespace std;
 
string findFloat(const string &s) { 
    smatch m;
    regex e("\\d*[\\.,]\\d+");
    regex_search(s, m, e);
    return m[0];
}
Yandex
Объявления
31.05.2014, 03:59     Число с плавающей запятой в строках
Ответ Создать тему
Опции темы

Текущее время: 00:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru