С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
1

Реализовать программу перевода денежных единиц (фунты, шиллинги, пенсы)

12.03.2016, 11:41. Показов 3711. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа складывает две суммы в футах, шиллингах и пенсах. Посмотрите условия еще где static_cast; Пытался использовать там, что 12 пенсов равно 1 шиллингу, а уже 20 шиллингов 1 футу. Далее вывод на экран. char(36) Взял , т.к не получилось char(156) Взять, вопрос выдавала ( почему?) Заранее спасибо!

Вопрос в следующем:
Ошибка в строке, где из ft3,sh3,pe3 вычитается '0' ( Для получения числа ); Пишет не иннициализированная переменная ft3,sh3,pe3;
Как исправить ? Как правильно сделать перевод из char типа с помощью _getche() в число типа int; Или я в начале неправильно указал тип в начале float?
Вот код:
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
// ConsoleApplication6.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <process.h>
#include <iomanip>
#include <conio.h>
using namespace std;
 
 
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    float ft1, sh1, pe1, ft2, sh2, pe2, ft3, sh3, pe3, d=0, c=0;
    cout << "Введите первую сумму: " << char(36) ;
    ft1 = _getche(); cout << "."; sh1 = _getche(); cout << "."; pe1 = _getche();
    cout << "\nВведите вторую сумму: " << char(36) ;
    ft2 = _getche(); cout << "."; sh2 = _getche(); cout << "."; pe2 = _getche(); cout << endl;
    ft3 -= '0';
    sh3 -= '0';
    pe3 -= '0';
    pe3 = pe2 + pe1;
    if (pe3 >= 12) {
        c = static_cast<int>(pe3 / 12);
        pe3 = static_cast<int>(pe3) % 12;
    }
    sh3 = sh1 + sh2+c;
    if (sh3 >= 20) {
        d = static_cast<int>(sh3 / 20);
        sh3 = static_cast<int>(sh3) % 20;
    }
    ft3 = ft1 + ft2 + d;
    cout << "\n\t\t" << char(36) << ft3 << "." << sh3 << "." << pe3 << endl;
    
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
12.03.2016, 11:41
Ответы с готовыми решениями:

Пересчет валют: фунты/шиллинги/пенсы в стерлинги
Не знаю в чем причина. Программа после сложения выводит не те числа. #include&lt;iostream&gt;...

На сколько лет необходимо положить в банк сумму Х денежных единиц, чтобы получить сумму N денежных единиц (N> X)
Здравствуйте помогите пожалуйста сделать эту задачу в которой нужно использовать цикли. На...

Реализовать конвертер денежных единиц
Устаревшая денежная система Великобритании состояла из фунтов, шиллингов и пенсов. Один фунт был...

Составить программу, которая печатает таблицу перевода из килограммов в фунты
ребят, помогите пожалуйста!!!! очень нужно!!! 1. Составить программу, которая печатает таблицу...

14
Модератор
Эксперт С++
13722 / 10919 / 6478
Регистрация: 18.12.2011
Сообщений: 29,148
12.03.2016, 13:51 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int ft1, sh1, pe1, ft2, sh2, pe2, ft3, sh3, pe3;
    cout << "Введите первую сумму в формате фунтов шиллингов пенсов: ";
    cin>>ft1>>sh1>>pe1;
    cout << "\nВведите вторую сумму в формате фунтов шиллингов пенсов:  ";
    cin>>ft2>>sh2>>pe2;
    ft3 = ft2 + ft1;
    sh3 = sh2 + sh1;
    pe3 = pe2 + pe1;
    sh3+=pe3/12;
    pe3%=12;
    ft3+=sh3/20;
    sh3%=20;
    cout << "\n\t\t"<< ft3 << "." << sh3 << "." << pe3 << endl;
    system("pause");
    return 0;
}
1
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
12.03.2016, 23:34 3
Цитата Сообщение от AliceAlex Посмотреть сообщение
12 пенсов равно 1 шиллингу, а уже 20 шиллингов 1 футу
Может быть, всё-таки, фунты? Потому что футы (feet) - это мера длины, а фунты (pounds) - это денежная единица.
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
13.03.2016, 03:57  [ТС] 4
Да, описался , простите. Фунты. У меня было целью задания ввести с помощью оператора _getche(). Чтобы ввод был не через Enter. И выглядел так:
Введите первую сумму: $5.4.9
Через cout я знаю как написать, там меньше нужно ломать голову. Если бы cout Не переводил на новую строку после нажатия кнопки Enter - тогда бы проблема пропала. Может кто-то помочь сделать через оператор _getche()- Как я пытался в своем нелепом коде :/

Или же есть возможность ввода такого же через cout???
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2016, 08:11 5
AliceAlex,
Цитата Сообщение от AliceAlex Посмотреть сообщение
Или же есть возможность ввода такого же через cout???
Нет нету...cout - оператор вывода а не ввода. Через оператор ввода cin>> можно.
C++
1
2
3
char zn;
cout<<"Введите фунты,шилинги,пенсы через точку: "<< char(36) ;
cin>>ft1>>zn>>sh1>>zn>>pe1;
0
Модератор
Эксперт С++
13722 / 10919 / 6478
Регистрация: 18.12.2011
Сообщений: 29,148
13.03.2016, 08:28 6
Вот Вам через getch().
Только я все равно не вижу разницы.
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
#include <iostream>
#include <sstream>
#include <string>
#include <conio.h>
using namespace std;
void InputValue(int &ft,int &sh,int &ps)
{
    char ch;
    string str;
    do
    {
        ch=getch();
        if(isdigit(ch))
            str+=ch;
        else
            str+=' ';
        if(ch!=13) // enter не выводим 
            putch(ch);
    }while(ch!=13);
    istringstream ss(str);
    ss>>ft>>sh>>ps;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int ft1, sh1, pe1, ft2, sh2, pe2, ft3, sh3, pe3;
    cout << "Введите первую сумму: ";
    InputValue(ft1,sh1,pe1);
    cout << "\n\nВведите вторую сумму: "; // Все равно ведь пришлось перейти на новую строку
    InputValue(ft2,sh2,pe2);
    ft3 = ft2 + ft1;
    sh3 = sh2 + sh1;
    pe3 = pe2 + pe1;
    sh3+=pe3/12;
    pe3%=12;
    ft3+=sh3/20;
    sh3%=20;
    cout << "\n\t\t"<< ft3 << "." << sh3 << "." << pe3 << endl;
    system("pause");
    return 0;
}
1
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2016, 08:48 7
zss, я так понял, что ему нужно с выводом символа на экран через getche().

Добавлено через 8 минут
zss,
Цитата Сообщение от zss Посмотреть сообщение
cout << "\n\nВведите вторую сумму: "; // Все равно ведь пришлось перейти на новую строку
Он скорее всего имел другое ввиду...
Скорее всего вводит фунты, нажимает ввод, далее шиллинги, опять ввод и т.д
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
13.03.2016, 11:48  [ТС] 8
Смысл в том, чтобы ввести значение без перехода на новую строку, вместе с точками разделительными. И в этой же строчке , где cout показать эту сумму.
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2016, 11:55 9
Ты и вводи с точками тогда в строке... В чем проблема?
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
13.03.2016, 12:05  [ТС] 10
А Если через getch() сделать? Как с помощью него можно реализовать? Например ввод трёх чисел: 12.15.19?
Он вроде по одному символу читает? Просто его действия как раз то, что мне нужно. Ввожу числа, а потом с помощью cout вывожу их на той же строчке. Только вопрос в том , как ввести двузначное число... Cadr, что вы имеете в виду? Можете часть кода показать?
0
Модератор
Эксперт С++
13722 / 10919 / 6478
Регистрация: 18.12.2011
Сообщений: 29,148
13.03.2016, 13:25 11
AliceAlex, что-то Вы невнимательны, см функцию в моем 6 сообщении.
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2016, 13:31 12
AliceAlex, Если через getch() то смотри у zss в 6 сообщении, если через оператор ввода cin то в моем 5 сообщении я показал часть кода, как это можно сделать...
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
14.03.2016, 16:08  [ТС] 13
Реализовать программу перевода денежных единиц (фунты, шиллинги, пенсы)
Посмотрите на внешний вид задачи? Как они реализовали такой ввод?
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
14.03.2016, 19:06 14
Лучший ответ Сообщение было отмечено AliceAlex как решение

Решение

AliceAlex, Если вам нужен такой же внешний вид на скрине, то вот :
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
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int ft1, sh1, pe1, ft2, sh2, pe2, ft3, sh3, pe3;char otv;
    do{
    cout << "Введите первую сумму : "<< char(36) ;
    cin>>ft1>>sh1>>pe1;
    cout << "\nВведите вторую сумму: "<< char(36) ;
    cin>>ft2>>sh2>>pe2;
    ft3 = ft2 + ft1;
    sh3 = sh2 + sh1;
    pe3 = pe2 + pe1;
    sh3+=pe3/12;
    pe3%=12;
    ft3+=sh3/20;
    sh3%=20;
    cout << "Всего: "<< char(36) << ft3 << " " << sh3 << " " << pe3 << endl;
    cout<<"Продолжить? (y/n)";cin>>otv;}
    while (otv!='n');
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
15.03.2016, 00:15  [ТС] 15
Спасибо
0
15.03.2016, 00:15
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
15.03.2016, 00:15
Помогаю со студенческими работами здесь

Написать программу для перевода рублей в доллары сша, евро, иены, юани, марки и фунты стерлингов
Написать программу для перевода рублей в доллары сша, евро, иены, юани, марки и фунты стерлингов и...

Написать программу для перевода единиц измерения
Известно,что 1 верста=500 саженей=1066,8 метров.Дано х км.Перевести эту величину в версты,сажени.

Написать программу для перевода единиц измерения (конвертер)
Написать программу для перевода единиц измерения например длины . Из: В: Миллиметры Миллиметры ...

Написать программу для перевода единиц измерения количества информации
Я недавно начал изучать С++. Хотел попробовать написать программу для перевода единиц измерения...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru