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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.73
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
#1

Не определяется функция _atold - C++

22.08.2010, 17:00. Просмотров 3365. Ответов 40
Метки нет (Все метки)

Почитал про данный метод. На сколько я понял, он может привести массив char к типу double.
Так же, указано, что он принадлежит к stdlib.h или к math.h
Только вот в моем случае, при подключении данных библиотек, метод _atold() подчеркивается красным цветом, т.е. не определяется. Может я что-то не так делаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2010, 17:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не определяется функция _atold (C++):

Не определяется функция getch - C++
Ошибку выдаёт getch(); //--------------------------------------------------------------------------- #pragma hdrstop ...

Где определяется функция narrow_cast? - C++
Всем привет , скажите пожлст какая библиотека определяет функцию narrow_cast. Взорвал гугл , но не успешно. Юзаю vs 2015. Она есть в...

Функция не определяется - Matlab
Доброго времени суток! почему на unsys matlab ругается? % Initialize variables INPUTVEC = 0; % Initialize a global variable mu =...

Не определяется функция scanf - C (СИ)
Привет!) У меня такая проблема.... не хочет считывать строки(( уже все перепробовал..... вот например код #include <stdio.h> ...

Почему не определяется функция? - CLIPS
Я новичок в CLIPS. Пытаюсь определить функцию. Пишу: (deffunction hypotenuse (?a ?b) (sqrt (+ (* ?a ?a) (* ?b ?b)) ) Но...

Функция не определяется! В чем ошибка? - Matlab
Заданы некоторые начальные условия программы реализации опорных векторов и алгоритма роя частиц. Но до реализации тут еще далеко:) Код...

40
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
22.08.2010, 21:43  [ТС] #16
Региональные - русский.
С точкой все норм, я и раньше ее применял без проблем.
Ввожу, ну, скажем: "$1,434,453.34"
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
22.08.2010, 21:45 #17
Цитата Сообщение от half-node Посмотреть сообщение
Ввожу, ну, скажем: "$1,434,453.34"
это вам Excel чтоли?
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
22.08.2010, 21:48 #18
Цитата Сообщение от half-node Посмотреть сообщение
я не пойму, как использовать функцию strtold()
А прям обязательно числа типа long double использовать? Расстояние до Луны в нанометрах считаете?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    double d;
    char buf[BUFSIZ];
    
    printf("As string: ");
    if ( ! fgets(buf, BUFSIZ, stdin) )
        exit(1);
    d = strtod(buf, NULL);
    printf("As number: %f\n", d);
    
    exit(0);
}
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
22.08.2010, 22:50  [ТС] #19
Цитата Сообщение от alex_x_x Посмотреть сообщение
это вам Excel чтоли?
Какой-то странный комментарий, не находите?
Нет, это не ексель - это C++
Цитата Сообщение от easybudda Посмотреть сообщение
А прям обязательно числа типа long double использовать? Расстояние до Луны в нанометрах считаете?
Главное не задача, главное реализация тех или иных возможностей.
Я только учусь)

Добавлено через 2 минуты
C++
1
d_money  = strtod (t_money,NULL);
Выдает только первую цифру. t_money - char массив, d_money - double
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
22.08.2010, 22:52 #20
Цитата Сообщение от half-node Посмотреть сообщение
Какой-то странный комментарий, не находите?
Нет, это не ексель - это C++
ну тогда вы не находите разницу между вашими ожиданиями и тем, что собственно делают эти функции?
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
22.08.2010, 23:09  [ТС] #21
Цитата Сообщение от alex_x_x Посмотреть сообщение
ну тогда вы не находите разницу между вашими ожиданиями и тем, что собственно делают эти функции?
Если это утверждение, то возможно. Я не думаю, что Вы в начале пути изучения данного языка, полностью понимали что делают те или иные функции. Бравирование своими сегодняшними знаниями, не вспоминая о том, что когда -то были в такой же ситуации, мягко говоря, некрасиво.

Если это вопрос, то в принципе, ответ тот же самый.

Добавлено через 1 минуту
В данный момент есть проблема:
Цитата Сообщение от half-node Посмотреть сообщение
Добавлено через 2 минуты
C++
1
d_money  = strtod (t_money,NULL);
Выдает только первую цифру. t_money - char массив, d_money - double
Если есть чем помочь, буду очень благодарен, если нет, то хотя бы по существу помогите, либо по существу промолчите ). Спасибо.
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.08.2010, 23:29 #22
half-node, покажите содержимое t_money при котором получается неверный результат.
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
22.08.2010, 23:40  [ТС] #23
С вашего позволения, повторю код.
Повторюсь, топорно... но как есть)
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 "stdafx.h"
#include <iostream>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cstring>
using namespace std;
 
class money
{
private:
    char t_money[25];
    long double d_money;
public:
    money():d_money(0.0)
    {};
 
    void get_d_money(char sum[], int k)
    {
        int n,len,len2=0;
        len = strlen(sum);
        for(int i=0;i<25;i++)
            t_money[i]=' ';
        for (n=0; n<len;n++)
        {
            if (isdigit(sum[n]) || sum[n] == '.')
                t_money[len2] = sum[n];
                len2++;
        }
        //double atof(t_money[len2]);
        //cout << "Number: " << t_money;
 
        d_money  = strtod (t_money,NULL);
        cout << d_money;
        //d_money = strtod(t_money);
    }
 
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    money mm;
    int i=0;
    char inp[25];
    cout << "Enter money: ";
    cin >> inp;
    mm.get_d_money(inp,25);
    
    getch();
    return 0;
}
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.08.2010, 23:43 #24
half-node, еще раз: приведите пример строки, которую вы передаете в strtod.
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
22.08.2010, 23:48  [ТС] #25
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
half-node, еще раз: приведите пример строки, которую вы передаете в strtod.
Передается почему-то такая
>>здесь<<
0
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
22.08.2010, 23:57 #26
C++
1
2
3
4
{
  t_money[len2] = sum[n];
  len2++;
}
или даже

C++
1
2
if( ... )
  t_money[len2++] = sum[n];
Добавлено через 4 минуты
И ещё.
Используйте
C++
1
cin.getline( buf, BUF_SIZE )
вместо
C++
1
cin >> buf
Почему ? Второй вариант читает до пробела/табуляции.
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
23.08.2010, 00:02  [ТС] #27
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Используйте
C++
1
cin.getline( buf, BUF_SIZE )
вместо
C++
1
cin >> buf
Почему ? Второй вариант читает до пробела/табуляции.
Да, спасибо. Я знаю о данной функции. Но здесь нет пробелов. А вообще да, Вы полностью правы.
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
23.08.2010, 00:31 #28
half-node, Вы можете написать руками строку, которая при передаче в функцию приводит к неверным результатам?! Просто напишите сюда строку которая передается, без всяких скриншотов, кодов и т.д. и т.п., в третий раз Вас прошу.
0
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
23.08.2010, 00:32 #29
CyBOSSeR
"$1,434,453.34"
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
23.08.2010, 00:38 #30
half-node, Вы хотите, чтобы функция strtod преобразовала строку "$1,434,453.34" в число?! Не получится. Вот так можно "1434453.34". Сначала приведите строку к виду воспринимаемому strtod, а уж потом передавайте.
0
23.08.2010, 00:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2010, 00:38
Привет! Вот еще темы с ответами:

Не определяется функция для работы со строками - C (СИ)
Не может определить функции для работы со строками. Выдает такую ошибку: &quot;RtlStringCbLengthW&quot; identifier not dound, even with ...

HDD определяется в BIOS но не запускается и неправильно определяется объем диска - Жесткие диски
Всем доброго времени суток, прошу вас о помощи в борьбе с моим винтом от ноута. Попробую описать подробно, как все было. В один прекрасный...

JF v95c не определяется (или определяется как USB MEMORY BAR) - Flash-память
Недавно столкнулся с такой ситуацией. Подключаю флэху а она не работает... т.е. на win xp определяется как неопознанное устройство. на...

HDD определяется в BIOS но не определяется в ОС - Жесткие диски
Доброе время суток! Столкнулся с проблемой связанным с винтом. После перезагрузки компа винчестер не определяется вин 7. Запуск винды при...


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

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

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