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

Прохожу масивы - C++

Восстановить пароль Регистрация
 
Demelurg
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 28
30.10.2013, 17:19     Прохожу масивы #1
Одним из недостатковC++ является отсутствие для бизнес-программ
встроенного типа для денежных значений, такого, как $173 698 001.32.
Такой денежный тип должен иметь возможность для хранения числа с
фиксированной десятичной точкой точностью около 17 знаков, которого
было бы достаточно для хранения национального долга в долларах и цен-тах. К счастью, встроенный типC++ long double имеет точность 19 цифр,
поэтому мы можем использовать его как базисный для класса money, даже
используя плавающую точку. Однако нам нужно будет добавить возмож-ность ввода и вывода денежных значений с предшествующим им знаком
доллара и разделенными запятыми группы по три числа: так проще читать
большие числа. Первым делом при разработке такого класса напишем ме-тод mstold(), который принимает денежную строку, то есть строку, пред-ставляющую собой некоторое количество денег типа
"$1 234 567 890 123.99"
в качестве аргумента и возвращает эквивалентное ее значению число типа
long double.
Вам нужно будет обработать денежную строку как массив символов и,
просматривая ее символ за символом, скопировать из нее только цифры
(0-9) и десятичную точку в другую строку. Игнорируется все остальное,
включая знак доллара и запятые. Затем вы можете использовать биб-лиотечную функцию _atold() (заметим, что здесь название функции на-чинается с символа подчеркивания — заголовочные файлы STDLIB.H или
MATH.H) для преобразования новой строки к числу типа long double. Пред-полагаем, что денежное значение не может быть отрицательным. Напи-шите функцию main() для проверки метода mstold(), которая несколько
раз получает денежную строку от пользователя и выводит соответству-ющее число типа long double.

Начал учить по книге Лафоре , норм она как начинающемучеловеку ?

немог сперва нормально решить , потому что не мог запустить функцию _atold() но нашол на форуме что правльно будет atof();
но для правильного вывода числа надо использовать fixed и setprecision(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
class money
{
private:
    long double over;
public:
    void moveSort( string str )
    {
        int countS = str.length();//довжина строки
        char word[30] ;
        int n = 0;
 
        for( int i = 0 ; i < countS ; i++ )
        {
            if( isdigit (str[i]) || str[i] == '.' )// цифри і знак " . " копіює в строку word а все інше пропускає.
            {
                word[n] = str[i];
                n++;                
            }
            over = atof(word);//перетворення
        }
    }
 
    void showMoney()
    {
        cout<<" You enter money = "<<fixed<<setprecision(2)<<over;//вивід
    }
};
 
int main()
{
    money numMoney;
    string myWords;
 
    cout<<" Enter you money => ";// ввід слова
    getline(cin,myWords);
    
    cout<<endl; 
 
    numMoney.moveSort(myWords);// перетворення і вивід
    numMoney.showMoney();
 
    cout<<endl<<endl;
 
    return 0;
}
не судите строго.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2013, 17:19     Прохожу масивы
Посмотрите здесь:

C++ C++ масивы
C++ Масивы
C++ 2-D масивы.
Масивы C++
Масивы C++
C++ Масивы
С++ Масивы C++
C++ масивы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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