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

Задача из "ООП в C++" Р. Лафоре - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с ресурсами (создать файл ресурсов, загрузить туда изображения (png) и использовать их в проекте?) http://www.cyberforum.ru/cpp-beginners/thread937683.html
Как в Visual Studio Desktop создать файл ресурсов, загрузить туда изабражения (png) и использовать их в проэкте? В общем как интегрировать изображения в exe файл?
C++ Метод STL size и инициализация списка Всем доброго вечера! Вот код#include <fstream> // для потоковых файловых функций #include <typeinfo> // для typeid() using namespace std; #include <process.h> // для exit() #include <iostream>... http://www.cyberforum.ru/cpp-beginners/thread937644.html
Как сделать так, чтобы элемент массива считывался и умножался. C++
Вновь добрый вечер! Есть массив... пкод Я ввёл значение "1" в массив. Теперь пкод = 1 Но... Мне теперь нужно например это число в пкод умножить на число 1. Т.е. как я писал res = пкод * 1 - не...
Сортировка массива C++
Добрый вечер! Мне нужно отсортировать элементы массива по возрастанию. Проблема в том, что элементы состоят как из цифр, так и из символов. Вводим допустим "ff03" и должно получиться согласно...
C++ Не пойму чего хочет компилятор http://www.cyberforum.ru/cpp-beginners/thread937573.html
Вот значит перепечатал буква в букву с книги Страуструпа такой код в main() . Этот кусок должен извлекать числа со строк, если это возможно. Но в одном месте пишет требуется точка с запятой и при...
C++ .h Невозможно открыть Помогите плз. Visual Studio стал выводить что невозможно открыть .h файл. Там у меня пол программы было. Кажется файл повреждён. Возможно ли как то его восстановить? подробнее

Показать сообщение отдельно
Purcell
0 / 0 / 0
Регистрация: 14.08.2013
Сообщений: 20
15.08.2013, 12:21  [ТС]
Цитата Сообщение от TimeToWork Посмотреть сообщение
3) Судя по названию книги "ООП в C++" и номеру страницы (141) уже вероятно начали щупать работу с классами.
Пока ещё нет. Это задача для закрепления 3 главы, которая посвящена циклам и ветвлениям. А уже в следующей главе речь идёт от структурах и перечислениях, в 5-й - о функциях, в 6-й - об объектах и классах. Когда эти главы пройду, я усовершенствую эту программку, как вы мне советуете. Тем более, наверняка автор книги попросит сделать то же самое: уже заметил, что после каждой главы необходимо приводить решение старой задачи в соответствие с только что пройденной темой.

Цитата Сообщение от TimeToWork Посмотреть сообщение
2) У пользователя должна быть возможность ввести только пенсы либо только шиллинги и пенсы. Мы ведь не говорим в реальной жизни "Сколько будет 7 гривен 17 коппек + 0 гривен 5 копеек?". Желательно чуток улучшить механизм ввода.
Как это сделать, пока не могу сообразить или ещё не знаю подходящих для решения этой задачи возможностей C++.

Цитата Сообщение от TimeToWork Посмотреть сообщение
4) Даже если до классов ещё не дошли от этого
switch (choice)
нужно отказаться - у вас операции + и - занимают по 30 строк каждая. Попробуйте переводить деньги в пенсы и делать операции над ними.
Действительно, используя перевод всех сумм в пенсы для операций над ними, код стал менее объёмным, а жизнь проще Правда, от оператора switch не смог отказаться.

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
// 11.cpp
/* калькулятор, складывающий и вычитающий денежные суммы,
   выраженные в устаревшей денежной системе Великобритании,
   а также умножающий эти суммы на вещественные числа */
 
# include <iostream>
 
using namespace std;
 
int main()
{
    char ch;    // выбор пользователя продолжать работать с программой или выйти
    int first_pou, first_sch, first_pen;    // вводимые фунты, шиллинги и пенсы
    int second_pou, second_sch, second_pen;     // вводимые фунты, шиллинги и пенсы
    int last_pou, last_sch, last_pen;           // выводимые фунты, шиллинги и пенсы
    int oper;                                   // выбор функции программы
    float number;                           // число, на которое умножается сумма
    do          // цикл, пока пользователь не введёт 'n' (ch == 'n')
    {
        cout << "Если нужно сложить две суммы, введите '1'. Если нужно вычесть ";
        cout << "одну сумму из другой, введите '2'. Если нужно умножить сумму ";
        cout << "на число, введите '3', для получения инструкции по использованию этой ";
        cout << "программы введите '4': ";
        cin >> oper;
        cout << endl;
        switch (oper)
        {
            case (1):                          // сложение 2-х сумм
                cout << "Введите 1-ю сумму: ";
                cin >> first_pou >> first_sch >> first_pen;
                cout << "Введите 2-ю сумму: ";
                cin >> second_pou >> second_sch >> second_pen;
                last_pen = first_pen + second_pen + (first_sch + second_sch) * 12 +
                (first_pou + second_pou) * 240;
                last_pou = last_pen / 240;
                last_sch = (last_pen - last_pou * 240) / 12;
                last_pen = (last_pen - last_pou * 240) - last_sch * 12;
                cout << "Результат: ВЈ" << last_pou << "." << last_sch << "." << last_pen << endl;
                break;
            case (2):                         // вычитание одной суммы из другой
                cout << "Введите 1-ю сумму: ";
                cin >> first_pou >> first_sch >> first_pen;
                cout << "Введите 2-ю сумму: ";
                cin >> second_pou >> second_sch >> second_pen;
                last_pen = first_pen - second_pen + (first_sch - second_sch) * 12 +
                (first_pou - second_pou) * 240;
                last_pou = last_pen / 240;
                last_sch = (last_pen - last_pou * 240) / 12;
                last_pen = (last_pen - last_pou * 240) - last_sch * 12;
                cout << "Результат: ВЈ" << last_pou << "." << last_sch << "." << last_pen << endl;
                break;
            case (3):                         // умножение суммы на число
                cout << "Введите сумму: ";
                cin >> first_pou >> first_sch >> first_pen;
                cout << "Введите число: ";
                cin >> number;
                last_pen = first_pen + first_sch * 12 + first_pou * 240;
                last_pen *= number;
                last_pou = last_pen / 240;
                last_sch = (last_pen - last_pou * 240) / 12;
                last_pen = (last_pen - last_pou * 240) - last_sch * 12;
                cout << "Результат: ВЈ" << last_pou << "." << last_sch << "." << last_pen << endl;
                break;
            case (4):                         // инструкция
                cout << "Устаревшая денежная система Великобритании выглядит следующим ";
                cout << "образом: 1 фунт = 20 шиллингов, 1 шиллинг = 12 пенсов. Вводите";
                cout << " сумму, разделяя фунты, шиллинги и пенсы пробелами: '7 12 3'.";
                cout << " Даже если какой-то элемент из данной денежной системы отсутствует, его ";
                cout << "отсутствие необходимо обозначить числом '0': '0 2 9' или '194 18 0'." << endl;
                break;
            default:
                cout << "Ошибка! Вы ввели недопустимое значение\n";
        }
        cout << "Желаете продолжить? (y/n) ";
        cin >> ch;
    }
    while (ch != 'n');
    return 0;
}
Спасибо, вам, за конструктивную критику.

Добавлено через 10 минут
Цитата Сообщение от Kins Посмотреть сообщение
Вроде это задание.
Спасибо Оно самое. Только вот в данном решении есть недостаток. Например, при сложении сумм, если пенсов больше 11, то этот код прибавляет только 1 шиллинг. А что будет если сумма пенсов будет больше 23? Тогда программа выдаст 3.4.34 или 0.8.29. Мне кажется, было бы лучше, если бы программа переводила лишние пенсы в шиллинги. Аналогично с шиллингами и вычитанием.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru