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

Преобразование long double в char - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Rand() создает одинаковые числа http://www.cyberforum.ru/cpp-beginners/thread1237431.html
inline void Playing_card::set_random_suit() { std::srand(time(NULL)); suit_.val = rand() % (SPADES - CLUBS) + CLUBS; suit_.lexcast(); } При создании нескольких объектов Playing_card, во всех созданных обьект val_ одинаковый? Почему? Скажите пожалуйста.
C++ Странное поведение в коде Есть два класса: ArrayList<T> и Array<T> (реализация в конце поста). И есть такой код: ArrayList<int> list = { 1, 2, 3 }; Array<int> arr = list.clone().asArray(); cout << arr; // Вывод -17891602 вместо 1 Собственно понятно, что результат метода clone() удаляется после того как вызывается asArray(). То есть обьект Array<int> arr существует, но ссылается на удаленный участок памяти копии... http://www.cyberforum.ru/cpp-beginners/thread1237410.html
Как загрузить DLL? C++
Я раньше с DLL дела не имел, но вот тут такая задача появилась. Есть DLL который сканирует процессы и что то там делает Как мне его загрузить/запустить или что там делать нада? я просто вобще не знаю как и что.
C++ Динамическое выделение памяти для массива указателей на char
Доброго времени суток! пытаюсь выделить память для массива указателей на char следующий код #include <iostream> #include <string.h> #include <sstream> #include <stdlib.h> using namespace std; class charset {
C++ Шаблон класса Wrapper http://www.cyberforum.ru/cpp-beginners/thread1237367.html
Как мне написать такой шаблон. template<typename WrappedType> class Wrapper { protected: template <typename R, typename... Args>
C++ Очередь «первый вошел — первый вышел» (FIFO) Очередь — это устройство для хранения данных, похожее на стек. Отли-чие в том, что в стеке последний сохраненный элемент будет первым извлеченным, тогда как в очереди первый сохраненный элемент будет первым извлеченным. То есть в стеке используется подход «последний вошел — первый вышел» (LJFO), а в очереди используется подход «пер- вый вошел — первый вышел» (FIFO). Очередь похожа на простую... подробнее

Показать сообщение отдельно
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139

Преобразование long double в char - C++

01.08.2014, 22:39. Просмотров 1432. Ответов 18
Метки (Все метки)

Вернемся к обсуждению денежных строк из упражнения 6. Напишите ме- од ldtoms() для преобразования числа типа long double в денежную строку, представляющую это число. Для начала вам нужно проверить, что значе-ние long double не очень большое. Мы предполагаем, что вы не будете пы-таться преобразовать число, больше чем 9 999 999 999 999 990.00. Затем
преобразуем long double в строку (без знака доллара и запятых), храня-щуюся в памяти, используя объект ostrstream, как рассматривалось ранее в этой главе. Получившаяся отформатированная строка может быть поме-щена в буфер, называющийся ustring.
Затем вам нужно будет создать другую строку, начинающуюся со знака доллара, далее копируем цифру за цифрой из строки ustring, начиная сле- ва и вставляя запятые через каждые три цифры. Также вам нужно подав-лять нули в начале строки. Например, вы должны вывести $3 124.95, а не
$0 000 000 000 003 124.95. Не забудьте закончить строку нулевым симво-
лом '\0'.
Напишите функцию main() для тестирования этой функции путем много- кратного ввода пользователем чисел типа long double и вывода результата в виде денежной строки.

Моя программа не расставляет точки и ответ выводит в экспоненциальной форме, что странно, разве char может выводиться в такой форме?.. В общем, объясните мне, темной, почему и что исправить.



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
54
55
56
57
58
#include "stdafx.h"
#include<iostream>
#include <string>
#include <sstream>
using namespace std;
class Money
{
private: 
    char strMon [30];
    char strMon1 [30];
    long double summ;
public:
    void ldtoms()
    {
        stringstream conv;
        conv << summ;
        conv >> strMon;
    }
    void getmoney()
    {
        cout << "Enter the amount without decimal point" << endl; 
        cin >> summ;
        if (summ > 9999999999999990.00)
        {
            cout << "\nError. Try Again";
            system ("pause");
            exit(1);
        }
    }
    void string ()
    {
        strMon1 [0] = '$';
        int j = 0;
        for (j; j<strlen(strMon); j++)
        {
            if (strMon[j] % 3)
                strMon1[j+1] = '.';
 
            strMon1 [j+1] = strMon[j];
        }
        strMon1[j+1] = '\0';
    }
    void display()const
    {
        cout << "\n" << strMon1 << endl;
    }
};
 
int main()
{
    Money money;
    money.getmoney();
    money.ldtoms();
    money.string();
    money.display();
    system ("pause");
    return 0;
}
Добавлено через 24 минуты
исправила немного код, но теперь после знака $ выводит иероглифы
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
54
55
56
57
58
59
60
#include "stdafx.h"
#include<iostream>
#include <string>
#include <sstream>
using namespace std;
class Money
{
private: 
    char strMon [30];
    char strMon1 [30];
    long double summ;
public:
    void ldtoms()
    {
        stringstream conv;
        conv << summ;
        conv >> strMon;
    }
    void getmoney()
    {
        cout << "Enter the amount without decimal point" << endl; 
        cin >> summ;
        if (summ > 9999999999999990.00)
        {
            cout << "\nError. Try Again";
            system ("pause");
            exit(1);
        }
    }
    void string ()
    {
        strMon1 [0] = '$';
        strMon1 [29] = strMon[strlen(strMon)];
        strMon1 [28] = strMon[strlen(strMon-1)];
        strMon1 [30] = '\0';
        int j = 0;
        for (j = strlen(strMon)-3; j<= strlen(strMon)-3; j--)
        {
            if (strMon[j] % 3)
                strMon1[j-1] = ' ';
 
            strMon1 [j-1] = strMon[j];
        }
    }
    void display()const
    {
        cout << "\n" << strMon1 << endl;
    }
};
 
int main()
{
    Money money;
    money.getmoney();
    money.ldtoms();
    money.string();
    money.display();
    system ("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru