Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 21

Создайте калькулятор, выполняющий действия над денежными суммами

15.02.2020, 17:21. Показов 3423. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создайте калькулятор, выполняющий действия над денежными суммами, выраженными в фунтах, шиллингах и пенсах (см. упражнения 10 и 12 главы 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
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
#include <iostream>
#include <locale>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "RUS");
 
    char j = 'J';
    char point = '.';
    int lb, s, p, lb1, s1, p1;
    char oper;
    int sum1=0, sum2=0, sum3=0;
    int min1=0, min2=0, min3=0;
    int multiply, mul1=1, mul2=1, mul3=1;
 
    cout << "\nВведите первую сумму: ";
    cin >> j >> lb >> point >> s >> point >> p;
    cout << "\nВведите операцию(+-*): ";
    cin >> oper;
    if (oper == '*')
    {
        cout << "\nВведите второй множитель: ";
        cin >> multiply;
    }
    else 
    cout << "\nВведите вторую сумму: ";
    cin >> j >> lb1 >> point >> s1 >> point >> p1;
 
 
    
        
    switch (oper) {
    case '+':
        sum3 = p + p1;
        if (sum3 > 11)
        {
            sum3 -= 12;
            sum2++;
        }
        sum2 = s + s1;
        if (sum2 > 19)
        {
            sum2 -= 20;
            sum1++;
        }
        sum1 = lb + lb1;
 
        cout << j << sum1 << point << sum2 << point << sum3;
        break;
 
    case '-':
        min3 = p - p1;
        if (min3 < 0) {
            min3 += 12;
            s--;
        }
        min2 = s - s1;
        if (min2 < 0) {
            min2 += 20;
            lb--;
        }
        min1 = lb - lb1;
 
        cout << j << min1 << point << min2 << point << min3;
        break;
    case '*':
        mul3 = p * multiply;
        if (mul3 > 11)
        {
            mul3 -= 12;
            (s*multiply)+1;
        }
        mul2 = s * multiply;
        if (mul2 > 19)
        {
            mul2 -= 20;
            (lb*multiply)+1;
        }
        mul1 = lb * multiply;
        cout << j << mul1 << point << mul2 << point << mul3;
        break;
    }
 
 
    return 0;
}
1)приумножении на вещественное число при шиллингах>19 или пенни>11 не добавляется единица в больший разряд. пробовал ++mul2/++mul1 и mul2++/mul1++.
2)и при выборе операции * после ввода множителя произведение появляется не сразу, а после ввода любых символов, хотя сложение и вычитание происходит сразу
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2020, 17:21
Ответы с готовыми решениями:

Калькулятор: выполнение действий над денежными суммами, выраженными в фунтах, шиллингах и пенсах
Создайте калькулятор, который выполняет действия над денежными суммами, выраженными в фунтах, шиллингах и пенсий. Калькулятор должен...

Методы для действий над денежными суммами
Доброго времени суток.помогите реализовать методы для сложения и вычитания денежных сумм и деления и умножения. class BaseMoney(): ...

Создайте скрипт sql, выполняющий следующие действия
1) Создать базу данных 2) В базе данных создать таблицу Товары со структурой: код товара, наименование товара, цена единицы товара в...

8
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.02.2020, 17:51
Vanoy, рекомендую поменять подход - переводите введённое значение в пенсы, с ними производите действия
и выводите результат с помощью операции нахождения остатка от деления.
0
 Аватар для Recrut_rf
383 / 326 / 65
Регистрация: 14.10.2014
Сообщений: 1,394
15.02.2020, 21:43
Vanoy, это случаем, задание не из книги "Лафоре -Объектно Ориентированное Программирование"? Уж очень похоже.
0
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 21
16.02.2020, 16:46  [ТС]
Yetty, спасибо, получилось.

Добавлено через 28 секунд
Recrut_rf, оно самое
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
16.02.2020, 16:49
Цитата Сообщение от Vanoy Посмотреть сообщение
спасибо, получилось.
не за что. сбросьте что получилось.
0
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 21
17.02.2020, 00:06  [ТС]
Yetty,
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 <locale>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "RUS");
 
    char j = 'J';
    char point = '.';
    char oper;
    int lb, lb1=0, s, s1=0, p, p1=0, multi; // фунт, шиллинг, пенни, множитель
    int sum = 0, sum1 = 0, sum2 = 0, sum3 = 0;
    int min, min1, min2, min3;
    int mul=1, mul1=1, mul2=1, mul3=1;
 
    cout << "\nВвелите первую строку: ";
    cin >> j >> lb >> point >> s >> point >> p;
    cout << "\nВведите операцию(+-*): ";
    cin >> oper;
 
    if (oper == '*')
    {
        cout << "\nВведите второй множитель: ";
        cin >> multi;
    }
    else
    {
        cout << "\nВведите вторую сумму: ";
        cin >> j >> lb1 >> point >> s1 >> point >> p1;
    }
 
    // перевод 1 значения в пенни
    if (lb > 0)
    {
        s += lb * 20;
        lb = 0;
    }
    if (s > 0)
    {
        p += s * 12;
        s = 0;
    }
 
    // перевод 2 значения в пенни
    if (lb1 > 0)
    {
        s1 += lb1 * 20;
        lb1 = 0;
    }
    if (s1 > 0)
    {
        p1 += s1 * 12;
        s1 = 0;
    }
 
    // операция и перевод обратно
    switch (oper) {
    case '+':
        sum = p + p1;
        
        sum3 = sum % 12;
        sum /= 12;
        sum2 = sum % 20;
        sum /= 20;
        sum1 = sum;
        cout << j << sum1 << point << sum2 << point << sum3;
        break;
    case '-':
        min = p - p1;
 
        min3 = min % 12;
        min /= 12;
        min2 = min % 20;
        min /= 20;
        min1 = min;
        cout << j << min1 << point << min2 << point << min3;
        break;
    case '*':
        mul = p * multi;
 
        mul3 = mul % 12;
        mul /= 12;
        mul2 = mul % 20;
        mul /= 20;
        mul1 = mul;
        cout << j << mul1 << point << mul2 << point << mul3;
        break;
    }
 
    return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
17.02.2020, 01:54
Vanoy, растянут код малость, а так нормально, главное чтобы считал правильно. не разобрал зачем вводить j и точки, зачем проверять if (lb > 0) ну и вывод можно попроще считать. добавьте default: в общем на скорую руку набросал код на 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
#include <iostream>
using namespace std;
 
int main() 
{ 
    char ch, sign;    
    int f1, s1, p1, f2, s2, p2, sum1, sum2, res=0; 
    
    do
    {    
        cout << "Enter sum1,znak(+-),sum2 (format f, s, p, sign, f, s, p):\n";
        cin >> f1 >> s1 >> p1 >> sign >> f2 >> s2 >> p2;
    
        sum1=f1*240+s1*12+p1;
        sum2=f2*240+s2*12+p2;    
    
        if (sign == '+') res=sum1+sum2;
        else if (sign == '-') res=sum1-sum2;
 
        cout << "=";        
        if (res<0) {res=-res;cout <<"-";}        
    
        cout << res/240 << "f" << res/12%20 << "s" << res%20 << "p" << "\n";
    
        cout << "Continue? (Y - YES) "; cin >> ch;
    }     
    while (ch=='Y' || ch=='y');    
    
    return 0;
}
0
 Аватар для Recrut_rf
383 / 326 / 65
Регистрация: 14.10.2014
Сообщений: 1,394
17.02.2020, 09:41
Цитата Сообщение от Vanoy Посмотреть сообщение
оно самое
тогда очень рекомендую просмотреть эту тему

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

там разобраны все задачи из этой книги
0
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 21
17.02.2020, 22:03  [ТС]
Yetty, считывает все правильно моя)
Цитата Сообщение от Yetty Посмотреть сообщение
е разобрал зачем вводить j и точки
J и точки из условия, как разделитель величин, аналогично f, s, p. в вашем примере не получилось правильного результата добиться, переделала в 23 строке пенни остаток от 12 и вроде правильно. насчет if да, спасибо, не нужно и у вас намного проще))

Добавлено через 25 секунд
Recrut_rf, спасибо, буду сверять)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2020, 22:03
Помогаю со студенческими работами здесь

Создайте пакетный файл first.bat, выполняющий следующие действия
Создайте пакетный файл first.bat, выполняющий следующие действия: - Создать каталог TEMP в доступном месте, например, в каталоге Пакетные...

Создать калькулятор, выполняющий все арифметические действия
Создать калькулятор, выполняющий все арифметические действия. Добавить кнопки для вычисления степени вещественного числа (xp – основание x...

Сделать программный комплекс, выполняющий действия над матрицей.
Язык программирования - Pascal Сделать программный комплекс, выполняющий действия над матрицей: – Введение -- Поиск среднего...

Создать программный комплекс, выполняющий действия над матрицей
А) Выполнить процедурную декомпозицию программного комплекса согласно варианта задания. Б) Выполнить модульную декомпозицию...

Реализовать калькулятор, выполняющий все арифметические действия и вычисляющий основные элементарные функции
Задание: Сделать Калькулятор, выполняющий все арифметические действия и вычисляющий основные элементарные функции.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru