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

Лафоре,задача про денежный тип - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Односвязные списки (найти литературу) http://www.cyberforum.ru/cpp-beginners/thread794427.html
нужно найти литературу по этому вопросу. есть ли у кого "очень понятная" литература по этому вопросу?
C++ Определить все слова, оканчивающиеся на "ая" (visual С++) Добрый день) Помогите пожалуйста с решением 2 задач на visual С++. 1. Дан текст. Определить все слова оканчивающиеся на "ая". 2. Дано число n. Выбросить из него все единицы и пятёрки, оставив порядок цифр ПРИМЕР: 527012 преобразуется в 2702 Буду очень признателен за решение) http://www.cyberforum.ru/cpp-beginners/thread794424.html
Исправить ошибки ( распределение памяти ) C++
Написать программу, в которой матрица размерности n x m размещается в свободной памяти. Элементы целочисленной матрицы заполняются с помощью ГСЧ в интервале от -10 до 10. Вывести строки с максимальным количеством положительных элементов. #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; void matrix_create (int n, int m, int** matr) {
Шахматный номер, рекурсия C++
Вот есть задачка, нужно решить ее с применением рекурсивной функций, никак не могу додуматься как это сделать. Телефонный номер называется "шахматным", если его цифры набираются на телефонном кнопочном номеронабирателе ходом шахматного коня. Написать программу, подсчитывающую, сколько можно набрать различных семизначных "шахматных"номеров, начинающихся с заданной цифры.
C++ задача с кусками. реализация в массиве http://www.cyberforum.ru/cpp-beginners/thread794360.html
Всем доброго времени суток. Вопрос в следующем. Пускай у нас есть двумерный динамический массив, заполненный рандомно 0 и 9. а конкретней, 0 "разбивают" этот массив на некоторые куски. Первый кусок определен и заполнен 9. Как функционально реализовать, чтобы по выбранной начальной точке, чтобы она не равна 0 или 9. пошла функция помечающая все соседние клетки которые также не 0 и 9, до тех пор...
C++ Пронстранства имен http://www.cyberforum.ru/cpp-beginners/thread794078.html Можете ответить на эту тему подробнее

Показать сообщение отдельно
Hide
Сообщений: n/a
25.02.2013, 14:09     Лафоре,задача про денежный тип
Вот задачка:
Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для денежных значений, такого, как $173 698 001,32. Такой денежный тип должен иметь возможность для хранения числа с фиксированной десятичной точкой точностью около 17 знаков, которого было бы достаточно для хранения национального долга в долларах и цен- тах. К счастью, встроенный тип C++ long double имеет точность 19 цифр, поэтому мы можем использовать его как базисный для класса money, даже используя плавающую точку. Однако нам нужно будет добавить возможность ввода и вывода денежных значений с предшествующим им знаком доллара и разделенными запятыми группы по три числа: так проще читать большие числа. Первым делом при разработке такого класса напишем метод mstold(), который принимает денежную строку, то есть строку, представляющую собой некоторое количество денег типа
"$1,234,567,890,123.99"
в качестве аргумента и возвращает эквивалентное ее значению число типа long double.

Собств-но вопрос: пытаюсь сделать первую часть, когда при выводе число будет разделяться на группы по три через запятую, вроде бы все работает, но хотелось бы реализовать через bool(нахождение точки true, иначе false), нашел, что то подобное(тут на форуме) но не разобрался. Как можно все это сделать?не могу понять,как найти эту точку в строке и разделить значения до и после нее(с помощью типа bool),т.к. в том виде что написал код выглядит совсем ужасно.
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
#include "StdAfx.h"
#include <iostream>
#include <string>
class money
{
private:
    long double mone;
    std::string capital;
public:
    money():mone(0),capital("Default")
    {}
    void put_on_money()
    {
        int x=0;
        std::cout << "\nEnter the string: $";
        std::cin >> capital;
        int lenght=capital.length(); // проверяем длину строки
        int dot=capital.find('.'); // ищем точку в строке
        for (int j=dot;j>0;j--)
        {
            x++; // через каждые три числа ставится запятая
            if(!(x%3))
            {
                capital.insert(j-1,",");
            }
        }
        if (!(dot%3)) // если dot%3==0 то ставит запятую в самом начале
        {
            capital.erase(0,1); // убираем ее
        }
        for (int j=dot;j<lenght;j++) // считает 19 знаков после точки
        {
            int max_lenght=dot+19;
            if(j>max_lenght) // все что после 19 знаков, стираем
            {
                capital.erase(j,1); 
            }
        }
    }
    void display()
    { std::cout << "Your string: $" << capital << std::endl; }
};
int main()
{
    money s1;
    s1.put_on_money();
    s1.display();
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru