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

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

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

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

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
11.09.2011, 21:52
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 2
Пойдет?
1
 Аватар для }{NiM
65 / 65 / 16
Регистрация: 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;
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 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;
}
1
236 / 173 / 25
Регистрация: 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);
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
11.09.2011, 22:03 6
ну да, неоригинально
1
 Аватар для }{NiM
65 / 65 / 16
Регистрация: 25.11.2009
Сообщений: 283
11.09.2011, 22:07 7
От каждого по способу ?
1
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 22:11  [ТС] 8
... я аж растерялся
Всем спасибо!
Сей час попробую каждый из способов.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
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;
}
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 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 местами перепутаны %)
0
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 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 минут
Из-за того, что пока не понимаю как это работает - удовольствия от решения проблемы не получил.
Но тем не менее всем спасибо!
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2011, 22:53 12
Как она работает - пока не знаю
C
1
%.2f
Вся соль тут. 2 - кол-во цифр после запятой. f - тип переменной. Все просто.
1
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.09.2011, 23:51  [ТС] 13
Спасибо, я это понял.
Если %.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  [ТС] 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;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12837 / 7573 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
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;
}
0
15.09.2011, 08:36
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Ошибка "Cleartext HTTP traffic not permitted" в Android
hw_wired 13.02.2025
При разработке Android-приложений можно столнуться с неприятной ошибкой "Cleartext HTTP traffic not permitted", которая может серьезно затруднить отладку и тестирование. Эта проблема особенно. . .
Изменение версии по умолчанию в NVM
hw_wired 13.02.2025
Node Version Manager, или коротко NVM - незаменимый инструмент для разработчиков, использующих Node. js. Многие сталкивались с ситуацией, когда разные проекты требуют различных версий Node. js,. . .
Переименование коммита в Git (локального и удаленного)
hw_wired 13.02.2025
Git как система контроля версий предоставляет разработчикам множество средств для управления этой историей, и одним из таких важных средств является возможность изменения сообщений коммитов. Но зачем. . .
Отличия Promise и Observable в Angular
hw_wired 13.02.2025
В веб-разработки асинхронные операции стали неотъемлимой частью почти каждого приложения. Ведь согласитесь, было бы странно, если бы при каждом запросе к серверу или при обработке больших объемов. . .
Сравнение NPM, Gulp, Webpack, Bower, Grunt и Browserify
hw_wired 13.02.2025
В современной веб-разработке существует множество средств сборки и управления зависимостями проектов, каждое из которых решает определенные задачи и имеет свои особенности. Когда я начинаю новый. . .
Отличия AddTransient, AddScoped и AddSingleton в ASP.Net Core DI
hw_wired 13.02.2025
В современной разработке веб-приложений на платформе ASP. NET Core правильное управление зависимостями играет ключевую роль в создании надежного и производительного кода. Фреймворк предоставляет три. . .
Отличия между venv, pyenv, pyvenv, virtualenv, pipenv, conda, virtualenvwrapp­­er, poetry и другими в Python
hw_wired 13.02.2025
В Python существует множество средств для управления зависимостями и виртуальными окружениями, что порой вызывает замешательство даже у опытных разработчиков. Каждый инструмент создавался для решения. . .
Навигация с помощью React Router
hw_wired 13.02.2025
React Router - это наиболее распространенное средство для создания навигации в React-приложениях, без которого сложно представить современную веб-разработку. Когда мы разрабатываем сложное. . .
Ошибка "error:0308010C­­:dig­ital envelope routines::unsup­­ported"
hw_wired 13.02.2025
Если вы сталкиваетесь с ошибкой "error:0308010C:digital envelope routines::unsupported" при разработке Node. js приложений, то наверняка уже успели поломать голову над её решением. Эта коварная ошибка. . .
Подключение к контейнеру Docker и работа с его содержимым
hw_wired 13.02.2025
В мире современной разработки контейнеры Docker изменили подход к созданию, развертыванию и масштабированию приложений. Эта технология позволяет упаковать приложение со всеми его зависимостями в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru