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

Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конвертер текстового файла http://www.cyberforum.ru/cpp-beginners/thread439174.html
Добрый день!!! Простите за наглость... Помогите пожалуйста написать программу-конвертер текстовых файлов из dos в windows и обратно. С командной строки должно вводится направление /d или /w. Я очень мало в этом понимаю. Заранее спасибо!!!
C++ Проблема с libmms - ошибка при компиляции. Здравствуйте. Уже который день не могу разобраться с упомянутой в заголовке библиотекой, а именно: пишу примерно такой тестовый код #include <iostream> #include <libmms/mms.h> int main() { mms_t *stream; char mms_link="mms://audio.rfn.ru/radiorus/audio/710/90.asf"; stream=mms_connect(0, 0, mms_link, 128); http://www.cyberforum.ru/cpp-beginners/thread439169.html
C++ Привет. Как можна найти с даного примера умножение элементов массива с четными номерами?
#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main(int argc, _TCHAR* argv)
C++ Начало DEV С++
Здравствуйте, подскажите где ошибка? Задание Даны действительные числа х, у . Если х, у отрицательные то каждое значение заменить его модулем; если отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательные и ни одно из них не принадлежат отрезку , то оба значения уменьшить в 10 раз; в остальных случаях х, у оставить без изменения. Решение ...
C++ Запись текста в файл http://www.cyberforum.ru/cpp-beginners/thread439138.html
Нужно составить прогрумма которая создает файл и записывает в него текст. Программа не записывает в файл текст после пробела, помогите пожалуйста. char name; char text; cout<<"vvedite put' i im9 faila:\n"; cin>>name; ofstream out(name); cout<<"vvedite text:\n"; cin>>text; out<<text; out.close();
C++ allocator std::map Подскажите вопрос, есть тестовое задание: Написать allocator для std::map, располагающий элементы контейнера последовательно в памяти. Подскажите где про это почитать и разъясните по-возможности, что это вообще такое (std::map я вкурсе что это контейнер и как с ним работать) в ступор вводит allocator подробнее

Показать сообщение отдельно
kickupduster
4 / 4 / 1
Регистрация: 04.08.2013
Сообщений: 20
25.08.2013, 23:25     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Мой вариант решения 12-го Упражнения 7-й Главы.
Не нашел рабочих функций для работы с типом long doble, использовал просто double. разница не большая.
Глава 7. Упражнение 12
Кликните здесь для просмотра всего текста
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
const int MAX = 50;
//прототипы функций-----------------------------------------------------------------------
double mstod(char[]); //функция перевода денежной строки в double
void reversit(char[]); //функция переворота строки
//----------------------------------------------------------------------------------------
class bMoney
{
private:
    double money;
public:
    bMoney(): money(0.0)
    {}
    bMoney(char s[])
    {money = mstod(s);}
    void getmoney()
    {
        cout << "Введите денежную сумму в формате \"$xxx,xxx,xxx.xx\":" << endl;
        char strM[MAX];
        cin >> strM;
        money = mstod(strM);
    }
    void madd(bMoney m1, bMoney m2)
    {money = m1.money + m2.money;}
    void putmoney();
};
//----------------------------------------------------------------------------------------
double mstod(char str[])
{
    char temp[MAX];
    int k=0;
    for(int i=0; i<strlen(str); i++)
    {
        if (str[i] != '$' && str[i] != ',') { if (str[i] == '.') temp[k++] = ',';
                                              else temp[k++] = str[i];}
    }
    temp[k] = '\0';
    return atof(temp); //не нашел рабочей функции для перевода в long double
}
//----------------------------------------------------------------------------------------
void bMoney::putmoney()
{
    char temp[MAX], strMoney[MAX];
    _gcvt(money, 20, temp); //переводит значение money в строку temp
    int len = strlen(temp);
    int i,k=0,j=0,f=0;
    //в случае если введено целое число
    //строка будет дополнена нулями после точки
    if (temp[len-1] == ',') {temp[len] = '0'; temp[len+1] = '0';}
    else if (temp[len-2] == ',') temp[len] = '0';
    for(i=strlen(temp)-1; i>=0; i--)  //формируем новую строку в обратном порядке
    {
        if (temp[i-2] == ',') f = 1;  //оставляем 2 знака после запятой
        if (j == 3 && k > 3) {strMoney[k++] = ','; j=0;} //расставляем запятые после знака "." через каждые три цифры
        if (temp[i] == ',') {strMoney[k++] = '.'; j=0;}  //замменяем запятую на точку
        else if (f == 1) {strMoney[k++] = temp[i]; j++;} //копируем цифры 
    }
    strMoney[k] = '$';
    strMoney[k+1] = '\0';
    reversit(strMoney);  //преобразуем строку в нормальный вид
    cout << strMoney << endl;  
}
//-----------------------------------------------------------------------------------------
void reversit(char s[])  //функция переворота строки
{
    int len =strlen(s);        //найти длину строки
    for(int j=0; j<len/2; j++) //поменять все
    {                          //символы из первой половины
      char temp = s[j];        //на символы
      s[j] = s[len-j-1];     //из второй половины
      s[len-j-1] = temp;
    }
}
//-----------------------------------------------------------------------------------------
void main()
{
    setlocale(0,"rus");
    bMoney m1("$1,234,567,890,123.99"); //используем конструктор с одним параметром
    cout << "Денежная строка: ";
    m1.putmoney();
    bMoney m2 , m;  //используем конструктор без параметров
    m2.getmoney();
    m.madd(m1,m2); //сумма строк m1 и m2
    cout << "Результат сложения двух денежных сумм: ";
    m.putmoney(); //вывод результата
    system("pause");
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru