Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Erik_5
0 / 0 / 0
Регистрация: 11.09.2014
Сообщений: 3
#1

Проанализировать строку на наличие числа - C++

11.09.2014, 17:51. Просмотров 457. Ответов 9
Метки нет (Все метки)

Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с дробной частью) — вывести 2; если строку нельзя преобразовать в число, то вывести 0. Считать, что дробная часть вещественного числа отделяется от его целой части десятичной точкой «.».
Помогите на С++, искал так и не нашел подходящей темы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2014, 17:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проанализировать строку на наличие числа (C++):

Проверить строку на наличие только букв - C++
Добрый вечер. Подскажите, пожалуйста, как проверить строку на наличие только букв, и затем если все элементы массива буквы - вывести на...

Как проверить строку на наличие табуляций? - C++
Собственно, как проверить char строку на наличие табуляции? Пробовал так, не вышло, в принципе логично почему, но увы, когда кончаются...

Проверить строку на наличие русских букв - C++
Задача такова... Нужно создать функцию, которая определяет, есть ли в строке русские буквы. Должен быть цикл, который по-буквенно...

Проверить одну строку на наличие в ней слова из второй строки - C++
Программа просит ввести строку №1 и строку №2. Первая строка больше второй. Затем если в первой строке присудствует фраза либо слово из...

Ввести строку символов а)вручную, б)из файла и проверить ее на наличие латинских букв - C++
Ни черта не понимаю в работе со строками, прошу помощи у данного форума Нужно: Ввести строку символов а)вручную, б)из файла и проверить...

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив - C++
Нужна помощь! Срочно! Нужно ввести в программу строку (числа, латиница), считать только числа, записать числа в массив. Помогите,...

9
Тамика
Котовчанин
917 / 460 / 145
Регистрация: 16.02.2010
Сообщений: 3,196
Записей в блоге: 27
11.09.2014, 17:54 #2
Переводите число в строку и посимвольно проверяете.
1
Erik_5
0 / 0 / 0
Регистрация: 11.09.2014
Сообщений: 3
11.09.2014, 17:56  [ТС] #3
Я просто не очень разбираюсь в программирование
0
Тамика
Котовчанин
917 / 460 / 145
Регистрация: 16.02.2010
Сообщений: 3,196
Записей в блоге: 27
11.09.2014, 18:01 #4
Если вкратце.
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
#include <iostream>
#include <sstream>
#include <string>
 
int main() 
{ 
    float n;
    std::cin >> n;
    std::stringstream ss;
    ss << n;
    std::string str;
    ss >> str;
 
    bool fl = false;
    for (int i = 0; i < str.size(); ++i)
        if (str[i] == '.') 
            {
                std::cout << "\n1";
                fl = true;
                break;
            }
 
    if (fl == false)
        std::cout << "\n2";
 
    system("pause>>null");
}
1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.09.2014, 18:05 #5
Цитата Сообщение от Тамика Посмотреть сообщение
Переводите число в строку
...
Цитата Сообщение от Erik_5 Посмотреть сообщение
Дана строка.
0
zss
Модератор
Эксперт С++
6537 / 6099 / 2009
Регистрация: 18.12.2011
Сообщений: 15,867
Завершенные тесты: 1
11.09.2014, 18:20 #6
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 <strstream> 
using namespace std;
int main() 
{ 
    char str[32];
    cin>>str;
    istrstream si(str,32);
    int i;char c;
    si>>i>>c;
    if(c=='.')
    {
        istrstream sf(str,32);
        float f;
        sf>>f;
        cout<<"FLOAT "<<f<<endl;
    }else if(si)
    {
        cout<<"INT "<<i<<endl;
    }else
        cout<<"NOT NUMBER\n";
    system("pause");
    return 0; 
}
0
Тамика
Котовчанин
917 / 460 / 145
Регистрация: 16.02.2010
Сообщений: 3,196
Записей в блоге: 27
11.09.2014, 18:22 #7
Если ввести строку и с символами и с числами - итог неверен.
0
Boleon
Guardian of Asgaard
372 / 315 / 106
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
11.09.2014, 18:33 #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
25
#include <iostream>
 
int main() {
    std::string value;
    int flag = 0;
 
    std::cin >> value;
 
    for ( int i = 0; value[i] != '\0'; i++ ) {
        if ( ( value[i] != '.' && value[i] < '0' ) || value[i] > '9') {
            std::cout << "0" << std::endl;
            return 0;
        }
        if ( value[i] == '.' ) {
            flag = 1;
        }
    }
    if ( flag == 1 ) {
        std::cout << "2" << std::endl;
    } else {
        std::cout << "1" << std::endl;
    }
 
    return 0;
}
Добавлено через 8 минут
zss, у вас при вводе "123.2asd" результат FLOAT
0
zss
Модератор
Эксперт С++
6537 / 6099 / 2009
Регистрация: 18.12.2011
Сообщений: 15,867
Завершенные тесты: 1
11.09.2014, 18:35 #9
Та
Цитата Сообщение от Darkrduk Посмотреть сообщение
при вводе "123.2asd" результат FLOAT
Так это и правильно.
Целая часть - есть.
Точка после целой части - есть.
Чего же ещё?
0
Boleon
Guardian of Asgaard
372 / 315 / 106
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
11.09.2014, 19:00 #10
Как вариант, если "123.12qwerty" и "123........123" являются "строковыми":
Кликните здесь для просмотра всего текста

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
#include <iostream>
 
int main() {
    std::string value;
    int flag = 0;
 
    std::cin >> value;
 
    for ( int i = 0; value[i] != '\0'; i++ ) {
        if ( ( value[i] != '.' && value[i] < '0' ) || value[i] > '9' || flag > 1 ) {
            std::cout << "0" << std::endl;
            return 0;
        }
        if ( value[i] == '.' ) {
            flag += 1;
        }
    }
    if ( flag == 1 ) {
        std::cout << "2" << std::endl;
    } else {
        std::cout << "1" << std::endl;
    }
 
    return 0;
}
0
11.09.2014, 19:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2014, 19:00
Привет! Вот еще темы с ответами:

Наличие введенной цифры в дробной части числа - C++
Доброго времени суток, уважаемые! Помощь нужна в следующем: Пользователь вводит число типа double. Далее вводит некую цифру M....

Проверить наличие в десятичном представлении числа заданной цифры - C++
Допустим есть элемент массива ary , как проверить есть ли в этом числе цифра 2 ? т.е например ary = 302 ; - True ...

Написать функцию целого типа, определяющую наличие в первой строке матрицы наличие седловой точки. - C++
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 4. Написать функцию целого типа,...

Преобразовать строку из файла, содержащую запись десятичного числа, в строку с двоичным числом - C++
Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа. И...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru