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

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

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

Как написать свою функцию atof() - C++

28.03.2012, 00:42. Просмотров 1121. Ответов 8
Метки нет (Все метки)

Как написать свою функцию atof()?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
7044 / 5221 / 259
Регистрация: 10.12.2010
Сообщений: 22,944
Записей в блоге: 17
28.03.2012, 01:23     Как написать свою функцию atof() #2
Проверять посимвольно строку на число, выкидывая буквы и прочие символы.
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.03.2012, 01:27     Как написать свою функцию atof() #3
Avazart, не забываю про точку
MaZaFCkY
2 / 2 / 0
Регистрация: 30.11.2011
Сообщений: 25
28.03.2012, 01:38  [ТС]     Как написать свою функцию atof() #4
Цитата Сообщение от go Посмотреть сообщение
Avazart, не забываю про точку
да вот в чем косяк как распознать точку и продолжить после этого запись если точка есть
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.03.2012, 01:46     Как написать свою функцию atof() #5
C
1
while (isdigit(c) || c == '.')
Avazart
7044 / 5221 / 259
Регистрация: 10.12.2010
Сообщений: 22,944
Записей в блоге: 17
28.03.2012, 01:47     Как написать свою функцию atof() #6
Таким же образом как и цифры
C++
1
if(ch[i]==".") //....
Avazart, не забываю про точку
Если на то и пошло- не забыть и про "-" и "e".
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.03.2012, 01:48     Как написать свою функцию atof() #7
Кол-во точек тоже предусмотрите.

Добавлено через 30 секунд
Цитата Сообщение от Avazart Посмотреть сообщение
про "-" и "e".
Это уже сложно для новичка.
Avazart
7044 / 5221 / 259
Регистрация: 10.12.2010
Сообщений: 22,944
Записей в блоге: 17
28.03.2012, 01:58     Как написать свою функцию atof() #8
Допустим
Код
char ch[]="123.56";
Можно представить как
Код
float dig=(ch[0]-48)*pow(10,2)+(ch[1]-48)*pow(10,1)+(ch[2]-48)*pow(10,0)
+(ch[4]-48)*pow(10,-1)+(ch[5]-48)*pow(10,-2)
Где 48 целое число соответствующие символу 0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2012, 02:13     Как написать свою функцию atof()
Еще ссылки по теме:

Написать программу, которая создает свою копию C++
Как написать свою функцию типа printf? C++
C++ Заменить функцию strlen на свою
C++ Как написать свою функцию std::replace?
Что c_str делает и его смысл в целом? Как заменить atof на scanf C++

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

Или воспользуйтесь поиском по форуму:
CLOH
5 / 5 / 3
Регистрация: 30.12.2010
Сообщений: 40
28.03.2012, 02:13     Как написать свою функцию atof() #9
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
double atof(s)
char *s;
{
   double val, power;
   int i, sign, c;
 
   while(isspase(*s))
          ++s;
 
    sign=1;
 
    if(*s=='+' || *s=='-')
       sign=(*s++='+')?1:-1;
 
    val=0;
 
    while(isdigit(c=*s++))
       val=10*val+c-'0';
 
    if(*s=='.')
       ++s;
 
    power=1;
 
    while(isdigit(c=*s++))
       {
        val=10*val+c-'0';
        power*=10;
       }
 
    return (sign*val/power);
   }
Yandex
Объявления
28.03.2012, 02:13     Как написать свою функцию atof()
Ответ Создать тему
Опции темы

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