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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
#1

Преобразование типов. - C++

11.09.2011, 21:52. Просмотров 749. Ответов 14
Метки нет (Все метки)

Всем привет.
Суть вопроса - ответ программы должен содержать только два знака после запятой.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main(void)
{
    float p, sh, pe, otvet, p1 = 240, sh1 = 12;
    cout << "Pound: ";
    cin >> p;
    cout << "Shilling: ";
    cin >> sh;
    cout << "Penny: ";  
    cin >> pe;
    otvet = ((p * p1) + (sh * sh1) + pe) / p1; 
    cout << "Answer: " << otvet << endl;
    system ("pause");
    return 0;
}
Можно ли для решения вопроса применить метод преобразования типов (без использования округления)? Если да - тогда как?
За ранее благодарю Вас.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2011, 21:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование типов. (C++):

Преобразование типов - C++
Подскажите пожалуйста. Есть класс для работы со строками class String // Объявление строкового класса { private:...

Преобразование типов - C++
Вопрос по преобразованию строки в число , и наоборот . Например на форме расположен MaskedTextBox , Button и Label . Как при нажатии на...

Преобразование типов - C++
С учебника переписал код на применение структур, но возникла проблема с преобразованием типов. Вот код проги: #include &quot;stdafx.h&quot; ...

Преобразование типов в С++ - C++
Задача: Определить два класса, String с преобразованием из char * в строку и обратно. Мой код: #include &lt;iostream&gt; ...

Преобразование типов - C++
Цель копировать из одного объекта в другой инофрмацию, типы разные, поэтому приходится приводитьTypeA a; TypeB b; a = *(a*)&amp;b; А вот...

Преобразование типов - C++
Вообщем допустим есть два класа, класс T и класс A, комплексные числа в разной форме записи(тригонометрической и алгебраической). Для класа...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2011, 21:56 #2
Пойдет?
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
11.09.2011, 21:58 #3
Перед написанием вопроса рекомендую взглянуть на описанное ранее
Флаги форматирования и манипуляторы
А именно
C++
1
2
3
4
//Печатаем вещественные числа в форме с фиксированной точкой, 
        //точность определяем строкой ниже в setprecision
        std::cout.flags(std::ios::fixed);
        std::cout<<std::setprecision(2)<<_double<<std::endl;
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.09.2011, 22:02 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main(void)
{
        float p, sh, pe, otvet, p1 = 240, sh1 = 12;
        cout << "Pound: ";
        cin >> p;
        cout << "Shilling: ";
        cin >> sh;
        cout << "Penny: ";      
        cin >> pe;
        otvet = ((p * p1) + (sh * sh1) + pe) / p1; 
        cout.precision(2);
        cout << "Answer: " << otvet << fixed << endl;
        system ("pause");
        return 0;
}
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
11.09.2011, 22:02 #5
C++
1
2
    std::cout.setf(std::ios::fixed,std::ios::floatfield);
    std::cout.precision(2);
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.09.2011, 22:03 #6
ну да, неоригинально
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
11.09.2011, 22:07 #7
От каждого по способу ?
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 22:11  [ТС] #8
... я аж растерялся
Всем спасибо!
Сей час попробую каждый из способов.
Петррр
5948 / 3385 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
11.09.2011, 22:14 #9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
 
int main(void)
{
        float p, sh, pe, otvet, p1 = 240, sh1 = 12;
        printf("Pound: ");
        scanf("%f", &p);
        printf("Shilling: ");
        scanf("%f", &sh);
        printf("Penny: ");
        scanf("%f", &pe);
        otvet = ((p * p1) + (sh * sh1) + pe) / p1; 
        printf("Answer: %.2f\n", otvet);
        system ("pause");
        return 0;
}
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.09.2011, 22:15 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <boost/format.hpp>
 
using namespace std;
int main(void)
{
        float p, sh, pe, otvet, p1 = 240, sh1 = 12;
        cout << "Pound: ";
        cin >> p;
        cout << "Shilling: ";
        cin >> sh;
        cout << "Penny: ";      
        cin >> pe;
        otvet = ((p * p1) + (sh * sh1) + pe) / p1; 
        cout.precision(2);
        cout << "Answer: " << boost::format("%.2f") % otvet << endl;
        system ("pause");
        return 0;
}
да и у меня там otvet и fixed местами перепутаны %)
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 22:50  [ТС] #11
В общем так.
Не буду перечислять не корректно работающие варианты, укажу рабочий:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdio.h>
using namespace std;
int main(void)
 
{
        float p, sh, pe, otvet, p1 = 240, sh1 = 12;
        printf("Pound: ");
        scanf("%f", &p);
        printf("Shilling: ");
        scanf("%f", &sh);
        printf("Penny: ");
        scanf("%f", &pe);
        otvet = ((p * p1) + (sh * sh1) + pe) / p1; 
        printf("Answer: %.2f\n", otvet);
        system ("pause");
        return 0;
}
Как она работает - пока не знаю (выполняю задания по результатам второй главы Р. Лафорте "ООП в С++"), но ответ программа выдает правильный!
Ребята, всем спасибо!

Добавлено через 15 минут
Из-за того, что пока не понимаю как это работает - удовольствия от решения проблемы не получил.
Но тем не менее всем спасибо!
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2011, 22:53 #12
Как она работает - пока не знаю
C
1
%.2f
Вся соль тут. 2 - кол-во цифр после запятой. f - тип переменной. Все просто.
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 23:51  [ТС] #13
Спасибо, я это понял.
Если %.2f заменить на %.4f - тогда число будет выводиться с четырьмя знаками после запятой.
Но для меня пока не понятно как оно работает, что это такое, откуда берется и как функционирует std::cout.setf(std::ios::fixed,std::ios::floatfield);.
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
15.09.2011, 08:29  [ТС] #14
А Г А ! ! !
Я сам её решил! И вот правильный листинг:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main(void)
{
    int p, sh, pe, x1;
    const float x2 = 2.4;       
    cout << "Pound: ";
    cin >> p;
    cout << "Shilling: ";
    cin >> sh;
    cout << "Penny: ";  
    cin >> pe;
    x1 = (sh * 12 + pe);
    x1 = static_cast<float>(x1)/x2;
    cout << "Answer: " << p << "." << x1 << endl;
    system ("pause");
    return 0;
}
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
15.09.2011, 08:36 #15
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <math.h>
 
int main(void){
    int i;
 
    for ( i = 0; i < 10; ++i )
        printf("%.*f\n", i, M_PI);
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2011, 08:36
Привет! Вот еще темы с ответами:

Преобразование типов - C++
Вот я создаю двумерный массив n=1; m=2; char **mas=new char *; mas=new char; после этого мне нужно увеличить размер...

Преобразование типов - C++
Доброго времени суток. В программе нужен корректный ввод числа. Если, например вводим буковки - выводится сообщение, далее в цикле -...

Преобразование типов - C++
есть следующая маленькая программка #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { int oldFunt,...

Преобразование типов - C++
Как преобразовать char * в float?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.09.2011, 08:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru