Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241

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

11.09.2011, 21:52. Показов 1350. Ответов 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;
}
Можно ли для решения вопроса применить метод преобразования типов (без использования округления)? Если да - тогда как?
За ранее благодарю Вас.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.09.2011, 21:52
Ответы с готовыми решениями:

Преобразование типов
Как понять выражение x=(int) y/z; применение типа (int) при значениях y=78, z=25? = 3.12 неправильный ответ.

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

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

14
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2011, 21:56
Пойдет?
1
 Аватар для }{NiM
65 / 65 / 16
Регистрация: 25.11.2009
Сообщений: 283
11.09.2011, 21:58
Перед написанием вопроса рекомендую взглянуть на описанное ранее
Флаги форматирования и манипуляторы
А именно
C++
1
2
3
4
//Печатаем вещественные числа в форме с фиксированной точкой, 
        //точность определяем строкой ниже в setprecision
        std::cout.flags(std::ios::fixed);
        std::cout<<std::setprecision(2)<<_double<<std::endl;
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
11.09.2011, 22:02
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;
}
1
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
11.09.2011, 22:02
C++
1
2
    std::cout.setf(std::ios::fixed,std::ios::floatfield);
    std::cout.precision(2);
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
11.09.2011, 22:03
ну да, неоригинально
1
 Аватар для }{NiM
65 / 65 / 16
Регистрация: 25.11.2009
Сообщений: 283
11.09.2011, 22:07
От каждого по способу ?
1
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 22:11  [ТС]
... я аж растерялся
Всем спасибо!
Сей час попробую каждый из способов.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
11.09.2011, 22:14
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;
}
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
11.09.2011, 22:15
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 местами перепутаны %)
0
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 22:50  [ТС]
В общем так.
Не буду перечислять не корректно работающие варианты, укажу рабочий:
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 минут
Из-за того, что пока не понимаю как это работает - удовольствия от решения проблемы не получил.
Но тем не менее всем спасибо!
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2011, 22:53
Как она работает - пока не знаю
C
1
%.2f
Вся соль тут. 2 - кол-во цифр после запятой. f - тип переменной. Все просто.
1
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 23:51  [ТС]
Спасибо, я это понял.
Если %.2f заменить на %.4f - тогда число будет выводиться с четырьмя знаками после запятой.
Но для меня пока не понятно как оно работает, что это такое, откуда берется и как функционирует std::cout.setf(std::ios::fixed,std::ios: :floatfield);.
0
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
15.09.2011, 08:29  [ТС]
А Г А ! ! !
Я сам её решил! И вот правильный листинг:

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;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.09.2011, 08:36
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2011, 08:36
Помогаю со студенческими работами здесь

Преобразование типов
Как преобразовать массив char message в строку char *strmessage ?????

Преобразование типов
Возможно ли преобразовать vector &lt;Transport_Vehicle*&gt; Cars_for_transportation в vector &lt;MotorCar*&gt; Cars_for_transportation

преобразование типов
Уважаемые специалисты, у меня имеется одна проблема. Есть два числа. double и float. Надо из double вычесть float. Все бы хорошо, но...

Преобразование типов
Какое значение примет переменная x после выполнения следующего фрагмента программы при значениях y=84, z=26? Значение вещественного типа...

Преобразование типов
что-то не пойму почему такая ошибка код такой... .... cnetPars.parse(xml, m_creator, m_name, m_info, m_plane, m_idmap); .... ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru