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

действительные числа (С++) - C++

Восстановить пароль Регистрация
 
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
06.01.2010, 20:39     действительные числа (С++) #1
Необходимо проверить, является ли данный рядок, правильно записанным действительным числом, возможно у научной форме записи, например, +1б376400Е-18. Найти это число.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2010, 20:39     действительные числа (С++)
Посмотрите здесь:

C++ действительные числа.
C++ Действительные числа
действительные числа a, b, c C++
C++ действительные числа
Действительные числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
06.01.2010, 21:45     действительные числа (С++) #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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <conio.h>
#include <string>
#include <math.h>
using namespace std;
bool get(string s,double &d)
{
       int sign=1;
       double data=0;
       bool isnum=true;
       int i=0; //ГЁГ*äåêñ
       if (s[i]=='-'){ sign=-1; i++;}
       if (s[i]=='+'){ sign=1; i++;}
       while (s[i]!='.' && i <=s.length())
       {
             if (s[i]>='0' && s[i]<='9')data=data*10 + (s[i]-'0');
             else if (s[i]!='.')return 0;
             i++;
       }
       if (s[i+1]=='\0')return 0;
       i++;
       int j=10;
       while (s[i]!='\0' && s[i]!='E' && s[i]!='e' && s[i]!='e' && i <=s.length())
       {
             if (s[i]>='0' && s[i]<='9')data+=(double)(s[i]-'0')/j;
             else  if (s[i]!='e' && s[i]!='E'&& s[i]!='\0')return 0;
             i++;
             j*=10;
       }
       int oder=0;
       int odersign=0;
       if (s[i]=='e'||s[i]=='E') i++;
       if (s[i]=='-'){ odersign=-1; i++;}
       if (s[i]=='+'){ odersign=1; i++;}
       while (s[i]!='\0' && i <=s.length())
       {
             if (s[i]>='0' && s[i]<='9')oder=oder*10 + (s[i]-'0');
             else if (s[i]!='\0')return 0;
             i++;
       }
       d=data*sign*exp(odersign*oder*log(10));
       return 1;
}
 
int main()
{
    string s;
    cin >> s;
    double d;
    if (get(s,d))cout << d << endl;
    else cout << "Wrong double lexic\n";
    getch();
}
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
07.01.2010, 19:36     действительные числа (С++) #3
strtod() нельзя использовать ?
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
07.01.2010, 19:58     действительные числа (С++) #4
а в чем же тогда работа будет заключаться? преподу понравится работа выполненная с помощью strtod() ?
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
12.01.2010, 12:46  [ТС]     действительные числа (С++) #5
А покажите, как можно это сделать, с функуией strtod()??
Yandex
Объявления
12.01.2010, 12:46     действительные числа (С++)
Ответ Создать тему
Опции темы

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