Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2011, 15:15   #1
parkito
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 24
По умолчанию Не рабочая функция _atold

Задача.

Начинаю ее делать
PHP код:
#include<iostream>
#include<string>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;

    class 
a
    
{private:
    
char b[40],f[40];
    
long double c;
    
int y[40];
    public:
        
void fc()
        {
cout<<"Введите кол-во средств (разряды пишите через запятую) -->";
        
cin.get(b,40);
        for(
int z=0;z<40;z++)
        {if (
b[z]!=',')
        {
    
f[z]=b[z];}
        }
        
cout<<f<<endl;
        
c=atof(b);
        
cout<<c<<endl;}
    };
    
int main ()
{
setlocale(LC_ALL,"Rus");
    
a a1;
    
a1.fc();
    
cin.get();
    
cin.get();
return 
0;

Но встречаюсь с проблемой: мусорные значения вместо запятых. Как мне удалить эти значения и исправить эту программу? Еще я использовал функцию
PHP код:
    c=atof(b); 
так как
PHP код:
_atold 
не работает. Почему ? Я все заголовочные файлы включил.
Изображения
Тип файла: jpg Безымянный.jpg (76.8 Кб, 200 просмотров)
parkito вне форума Ответить с цитированием
Старый 15.07.2011, 15:28   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от parkito Посмотреть сообщение
Почему ? Я все заголовочные файлы включил.
Потому что такой функции не существует. Во всяком случаи в стандарте
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 15.07.2011, 15:42   #3
parkito
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 24
По умолчанию

но в задании написано.
parkito вне форума Ответить с цитированием
Старый 15.07.2011, 15:46   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Потому что такой функции не существует. Во всяком случаи в стандарте
Да что Вы говорите!?
А библиотека math.h для чего включена?
Прототип:
long double _atold(const char *s)

Parkito. Ошибка у Вас здесь: char b[40],f[40];
Вы указаваете явный массив char[], а надо указывать строку с указателем т.е.
char *b, *f;
В функции ведь ясно указано что передаётся указатель.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 15.07.2011 в 15:54.
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.07.2011, 15:56   #5
parkito
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Да что Вы говорите!?
А библиотека math.h для чего включена?
Прототип:
long double _atold(const char *s)

Parkito. Ошибка у Вас здесь: char b[40],f[40];
Вы указаваете явный массив char[], а надо указывать строку с указателем т.е.
char *b, *f;
В функции ведь ясно указано что передаётся указатель.
Дело в том что задание по теме, идущей до указателей. Так что оно должно быть выполнено без их участия. Такое возможно ?
parkito вне форума Ответить с цитированием
Старый 15.07.2011, 15:59   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

С этой функцией - нет. Если в задании указано, что нужно использовать именно её, то одно из двух.
1. Либо указатели вы уже проходили.
2. Либо задание не соответствует истинному положению вещей.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.07.2011, 16:01   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Да что Вы говорите!?
А библиотека math.h для чего включена?
Прототип:
long double _atold(const char *s)
Еще раз: стандартом не определена такая функция.
http://www.cplusplus.com/reference/clibrary/cstdlib/
http://www.cplusplus.com/reference/clibrary/cmath/

Возможно, она есть в какой-то среде/компиляторе, но это не значит, что она должна быть везде. За то это значит, что ей не стоит пользоваться.


Цитата:
Сообщение от parkito Посмотреть сообщение
но в задании написано.
Кто автор задания, что за книга?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 15.07.2011 в 16:05.
Blade вне форума Ответить с цитированием
Старый 15.07.2011, 16:05   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Еще раз: стандартом не определена такая функция.
http://ru.wikipedia.org/wiki/Math.h

Возможно, она есть в какой-то среде/компиляторе, но это не значит, что она должна быть везде. За то это значит, что ей не стоит пользоваться.
Стандартом не определена и STL, и что, не стоит ней пользоваться?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.07.2011, 16:07   #9
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Стандартом не определена и STL, и что, не стоит ней пользоваться?
Нет, не стоит.
И причем здесь STL я тоже не понял

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Parkito. Ошибка у Вас здесь: char b[40],f[40];
Вы указаваете явный массив char[], а надо указывать строку с указателем т.е.
char *b, *f;
В функции ведь ясно указано что передаётся указатель.
Не правда. Имя массива - есть указатель на его нулевой элемент. Так что в функцию так передать массив можно.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 15.07.2011 в 16:10.
Blade вне форума Ответить с цитированием
Старый 15.07.2011, 16:08   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
С этой функцией - нет. Если в задании указано, что нужно использовать именно её, то одно из двух.
1. Либо указатели вы уже проходили.
2. Либо задание не соответствует истинному положению вещей.
3. Либо Вы ошибаетесь)
char b[40]; тут b неявно указатель, то есть можно передавать его в ф-ции, которые принимают char*.
Цитата:
Сообщение от Smitt&Wesson
Стандартом не определена и STL, и что, не стоит ней пользоваться?
Ну вообще-то да, не стоит) И, по всей видимости, в компиляторе parkito её тоже нет.
parkito, попробуйте strtold, если и её нет, то обновите компилятор.
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рабочая область в free pascal candalik Паскаль, Turbo Pascal, PascalABC.NET 3 18.12.2010 19:12
Рабочая температура видеокарты. СисТемникс Компьютерное железо 2 11.11.2010 11:33
Рабочая папка БД Grom БД в Delphi 5 05.11.2007 20:39