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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Lightness
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 9
#1

Строки. Определить, является ли он правильной десятичной записью вещественного числа - C++

15.05.2013, 09:11. Просмотров 1225. Ответов 10
Метки нет (Все метки)

Дан текст. Определить, является ли он правильной десятичной записью вещественного числа.

Помогите с алгоритмом, пожалуйста. Что и в какой последовательности лучше проверять
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 09:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки. Определить, является ли он правильной десятичной записью вещественного числа (C++):

Дан текст. Определить, является ли он правильной десятичной записью вещественного числа - C++
Вот можете проверить пожалуйста #include <iostream> #include <string> using namespace std; int main() { string s; ...

Определить, является ли текст десятичной записью числа, кратного 5 - C++
Задан текст,состоящий из букв и цифр.Определить удовлетворяет ли он следующему свойству:текст является десятичной записью числа,кратного 5....

Определить, является ли текст десятичной записью числа, кратного 5 - C++
Задан текст,состоящий из букв и цифр. Определить удовлетворяет ли он следующему свойству: текст является десятичной записью числа, ...

Определить, является ли текст десятичной записью числа, кратного 9 - C++
Является ли текст записью десятичного числа,кратного 9 В заданный непустой текст входят только цифры и буквы. Определить. ...

Определить, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака - C++
Помогите с задачами. 1)Определить, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака. 2)...

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

10
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
15.05.2013, 10:13 #2
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 <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
#define N 7
 
int main(int argc, char* argv[])
{
    static char str[256] = "1289312938.30420388230984\0";
 
    printf("%s\n",str);
 
    bool error = false;
    if (!strchr(str,'.')) error = true;
    for (int i = 0; str[i] != '\0' && !error; i++)
        error = (!isdigit(str[i]) && str[i] != '.') ? 1 : 0;
 
    printf("%s",str);
    if (error != false) printf("\terror!!!");
 
    printf("\n");
 
    _getch();
 
    return 0;
}
http://codepad.org/k7Azr72I
1
Миниатюры
Строки. Определить, является ли он правильной десятичной записью вещественного числа  
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 12:07 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <algorithm>
 
bool isRealNum( const std::string& str )
{
    auto pos = std::find( str.begin(), str.end(), '.' );
    if( pos == str.end() ) return false;
    return( std::all_of( str.begin(), pos, ::isdigit ) && 
            std::all_of( pos+1, str.end(), ::isdigit ) );
}
 
int main() {
    std::string str = "1289312938.30420388230984";
    std::cout << std::boolalpha << isRealNum(str) << std::endl;
    return 0;
}
Добавлено через 7 минут
zitxbit, почему сишный код в разделе плюсов?

C++
1
static char str[256] = "1289312938.30420388230984\0";
Зачем static? Размер можно опустить. \0 в конце вообще не нужен.

C++
1
2
bool error = false; 
if (!strchr(str,'.')) error = true;
Можно записать как:
C++
1
bool error = !strchr(str,'.');
C++
1
error = (!isdigit(str[i]) && str[i] != '.') ? 1 : 0;
Тернарный оператор совсем не нужен тут.

C++
1
#define N 7
Зачем это вообще?

Ну, и напоследок, проверьте строку в которой несколько десятичных точек.
1
gray_fox
15.05.2013, 12:07
  #4

Не по теме:

Tulosba, так одна точка тоже будет числом.

1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 12:10 #5
Цитата Сообщение от gray_fox Посмотреть сообщение
так одна точка тоже будет числом.
согласен
добавим в начало:
C++
1
if( str.length() == 1 ) return false;
0
Lightness
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 9
19.05.2013, 20:35  [ТС] #6
Tulosba, а как это сделать без использования третьей библиотеки?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.05.2013, 21:17 #7
Цитата Сообщение от Lightness Посмотреть сообщение
Tulosba, а как это сделать без использования третьей библиотеки?
Если речь про std::all_of, то можно проверить в цикле все символы до и после точки на то, что они являются цифрами.
0
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 272
Завершенные тесты: 1
19.05.2013, 21:30 #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Рис. 18.12: Figl8_12.cpp 
// Демонстрация ввода из объекта istringstream. 
#include <iostream> 
using std::cout; 
using std::endl; 
 
#include <string> 
using std::string; 
 
#include <sstream> 
using std::istringstream; 
 
int main() 
{ 
        string input( "Input test 123 4.7 A" ); 
        istringstream inputString( input ); 
        string stringl; 
        string string2; 
        int integer; 
        double doublel; 
        char character; 
 
        inputString >> stringl >> string2 >> integer >> doublel >> character; 
 
        cout << "The following items were extracted\n" 
             << "from the istringstream object:" << "\nstring: " << stringl << "\n string: " << string2 << "\n int: " << integer 
             << "\ndouble: " << doublel << "\n char: " << character; 
    
        // попытка чтения из пустого потока 
        long value; 
        inputString >> value; 
        
        // проверить результат потока 
        if ( inputString.good() ) 
            cout << "\n\nlong value is: " <<  value <<  endl; 
        else 
            cout <<  "\n\ninputString is empty" <<  endl; 
 
return 0;
}// конец main
outputString contains:
Output of several data types to an ostringstream object:
double: 123.457
int: 22
address of int: 1244580
after additional stream insertions,
outputString contains:
Output of several data types to an ostringstream object:
double: 123.457
int: 22
address of int: 1244580
more characters added
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
19.05.2013, 21:31 #9
Цитата Сообщение от Lightness Посмотреть сообщение
а как это сделать без использования третьей библиотеки?
Самому их написать
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
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
 
typedef std::string::const_iterator iterator_t;
typedef int (*predicate_t)(int);
 
iterator_t find(iterator_t first, iterator_t const last, char const value) {
   for ( ; first != last; ++first) {
      if (*first == value) {
         break;
      }
   }
   return first;
}
 
bool all_of(iterator_t first, iterator_t const last, predicate_t const predicate) {
   for ( ; first != last; ++first) {
      if (!predicate(*first)) {
         return false;
      }
   }
   return true;
}
 
bool isRealNum( const std::string& str )
{
    iterator_t pos = find( str.begin(), str.end(), '.' );
    if( pos == str.end() ) return false;
    return( all_of( str.begin(), pos, ::isdigit ) && 
            all_of( pos+1, str.end(), ::isdigit ) );
}
 
int main() {
    std::string str = "1289312938.30420388230984";
    std::cout << std::boolalpha << isRealNum(str) << std::endl;
    return 0;
}
0
Tulosba
19.05.2013, 21:47
  #10

Не по теме:

gray_fox, так одна точка тоже будет числом.

1
gray_fox
19.05.2013, 21:53     Строки. Определить, является ли он правильной десятичной записью вещественного числа
  #11

Не по теме:

Tulosba, чёртовы точки)

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 21:53
Привет! Вот еще темы с ответами:

Текст является десятичной записью числа, кратного 9 - C++
Добрый всем день. Помогите мне решить данное задание , я плохо разбираюсь в этом языке программирования ,т.к. мягко говоря ,наш...

Проверить, является ли текст десятичной записью числа, кратного 5 - C++
Задан текст,состоящий из букв и цифр. Определить удовлетворяет ли он следующему свойству: текст является десятичной записью числа, ...

Выяснить является ли заданная строка записью десятичного вещественного числа. - C++
помогите пожалуйста)) нужно к сегодняшнему дню до 19:00 Дана строка. Выяснить является ли эта строка записью десятичного вещественного...

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


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

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

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