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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
#1

Моя реализация функции перевода STRING в DOUBLE - C++

22.12.2012, 11:35. Просмотров 1460. Ответов 21

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
#include <iostream>
#include <string>
 
using namespace std;
 
double str_to_double(string a);
 
int main() {
    string s = "7.86456456";
    cout << str_to_double(s);
}
 
double str_to_double(string a) {
    int s = 0;
 
    for(int i = 0; i < a.size(); ++i) {
        if(a[i] == '.') {++s;}
        if(s > 1 || a[0] == '.') {return 0;}
    }
 
    double num = 0;
    int tmp;
    bool anti = false;
 
    int dob = 0;
 
    for(int i = a.size() - 1; i >= 0 && a[i] != '.'; --i) {++dob;}
 
    double l = 1;
 
    if(s == 0) {l = 1;}
    else {for(int i = 0; i < dob; ++i, l /= 10);}
 
    for(int i = a.size() - 1; i >= 0; --i, l *= 10) {
        if(a[i] == '0') {tmp = 0;}
 
        else if(i == 0 && a[i] == '-') {anti = true; break;}
 
        else if(a[i] >= '0' && a[i] <= '9') {tmp = a[i] - '0';}
        else if(a[i] == '.') {l /= 10; continue;}
 
        else {
                return 0;
        }
 
        num += (tmp * l);
    }
 
    if(anti == true) {return -num;}
    else {return num;}
}
Самостоятельно написал функцию перевода string в double
P.S. Пишите предложения по улучшению этой функции

Добавлено через 5 минут
Вверх

Добавлено через 7 минут
Вверх
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2012, 11:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Моя реализация функции перевода STRING в DOUBLE (C++):

Моя реализация функции перевода string в int - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int str_to_int(string a); int main() { string s =...

Какая-нибудь реализация функции void Fun (double in, double *out) - C++
Подскажите, пожалуйста, какую-нибудь любую реализацию прототипа функции: void Fun (double in, double *out)

Вывести long double число без перевода в double - C++
Надо вывести long double число без перевода в double. Пишу: printf(&quot;%Lf&quot;,S); и выводится неверно. Компилятор -- MinGW, та же фишка на...

Есть ли какие то стандартные функции преобразования double в string? - C++
В проекте необходимы функции, для преобразование double в string и наоборот. Первое получилось очень даже просто static double...

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double - C++
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; using namespace std; double polp(double af,double...

double to string - C++
Задание 11 главы 7 про массивы и строки Лафоре: перевести число double в строку и отформатировать. Вроде бы не сложно, но не непонятно с...

21
0x10
22.12.2012, 14:47     Моя реализация функции перевода STRING в DOUBLE
  #16

Не по теме:

~OhMyGodSoLong~, Давайте уже сразу так) http://www.perlmonks.org/?node_id=45213

0
OhMyGodSoLong
22.12.2012, 14:56
  #17

Не по теме:

Давайте!

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
#define                       q [v+a]
#define                      c b[1]
#define                     O 1 q
#define                    o 0 q
#define                   r(v,a\
)v<0&&(                  v*=-1,         a*=-1);
#define                 p(v,m,      s,w)*c==*#v?2 q\
<m?(c++                ,d=1,3      q=0,5      q=m,main\
(a+3,b)               ,o=o*s     q,O=O*          w q):0:
static               d,v[99     ];main            (int a,
char**b             ){d=7;     if(*c?!            (p(+,3
,4 q+O*            3,4)p(                          -,(o?3
:(O=1,6           )),4 q                          -O*3,4)
p(*,4,3          ,4)p(/                           ,5,4,3)
p((),d,         0+3,0+                           04)*c==
')'?2 q        <02?(c                           ++,0):0
:(o=012       *o+*c-                          '0',c++
,O=1)):      2 q?3-                        2:printf(
"%d/%d"     "\n",o                     ,O))return
1;d=a,r    (o,d)r                    (O,d)3 q
=o<O?(4   q=o,O)                   :(4 q=O,
         o);r(d,                 o)a+=3;O?
                                 1:(O=1,2
                                q=1);while
                                (2 q=o%1 q)a++;v[d]/=O;d[
                                v+1]/=O;return main(d,b);}

4
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.12.2012, 15:03 #18
Цитата Сообщение от 0x10 Посмотреть сообщение
Хотя бы так. Про расположение открывающей фигурной скобки уж не буду холиварить.
Ну это как в джаве. В С/С++/СШарп так не принято. ~OhMyGodSoLong~, Вот это супер.
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
22.12.2012, 15:06  [ТС] #19
Из-за какой-то ерунды форумчане разошлись... Я в шоке
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
22.12.2012, 15:08 #20
Цитата Сообщение от sovaz1997 Посмотреть сообщение
Из-за какой-то ерунды форумчане разошлись... Я в шоке
от маленького камешка может сойти лавина, не стоит недооценивать мощь оформления кода
0
HighPredator
22.12.2012, 15:12
  #21
 Комментарий модератора 
Еще один пост не по теме от любого из вас и вы сможете по достоинству оценить мощь карточек.
1
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,494
22.12.2012, 15:34 #22
C++
1
2
3
4
5
6
7
8
//    for(int i = 0; i < a.size(); ++i) {
//        if(a[i] == '.') {++s;}
//        if(s > 1 || a[0] == '.') {return 0;}
//    }
 
    if ((count (a.begin(), a.end(), '2')>1)||(a[0] == '.'))
     return 0;
    int s = (count (a.begin(), a.end(), '.'));
как вариант, всё посовременнее
0
22.12.2012, 15:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 15:34
Привет! Вот еще темы с ответами:

Double в string - C++
Как преобразовать double в string. Пробовал так: ostringstream ost; ost &lt;&lt;setprecision(30) &lt;&lt; n; c = ost.str(); cout &lt;&lt;...

Double to String - C++
Здравствуйте.Какая функция переводит формат Double в Ansistring.Пробовал DoubleToStr(); не получается...

Std::string и символ перевода строки - C++
Вот такая простейшая программа: #include &lt;stdio.h&gt; #include &lt;string&gt; using namespace std; int main() { char t=&quot;asd\n&quot;; ...

Преобразовать double в string - C++
Подскажите как преобразовать double в string ?? Нашел что то похожее при помощи ostringstream , но там не совсем то.. ...


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

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

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