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

Округление до n знака. Цвет кусочка текста. - C++

Восстановить пароль Регистрация
 
gosho
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10
27.09.2011, 19:24     Округление до n знака. Цвет кусочка текста. #1
Возник вот такой вопрос..
Есть программа:
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    system("chcp 1251");
    clrscr();
    double RoadS, CarFuelRasxod, FuelCost, RideCost;
 
    cout << "Вычисление стоимости поездки в пункт назначения и обратно.\n"
         << "\nВведите исходные данные:\n"
         << "Расстояние до пункта назначения (км) -> ";
    cin >> RoadS;
    cout << "Расход бензина (литров на 100 км пробега) -> ";
    cin >> CarFuelRasxod;
    cout << "Цена одного литра топлива (руб.) -> ";
    cin >> FuelCost;
 
    RideCost = (CarFuelRasxod/100) * (2*RoadS) * FuelCost;
 
    cout <<"Поездка в пункт назначения и обратно обойдется в "<< RideCost<<"руб.\n";
 
    getch();
    return 0;
}
и если ввести исх.данные:
30.00001
10.00005
23.59
то ответ будет 141.541. А должен быть 141.54075488.
Как добиться этого?
Почему по умолчанию идет округление до 3-го знака?
Или например 1+1=2. А если я хочу чтоб вывелось 2.000 то как поступить?
Прошу не писать примеры с printf(). Привык уже с cout и cin.
Интересует тип double и float.

И сразу в этой теме задам еще один вопрос:

C++
1
cout << "Поездка в пункт назначения и обратно обойдется в " << RideCost << "руб.\n";
Хочу выделить слово обратно, и сделать его подчеркнутым и другим цыветом (красным). Насколько я знаю подчеркнутым в консоли делать невозможно, но вот красным можно точно.
Но никак не получается! Везде на форуме проблему решают с printf(), неужели беда с cout <<-м?
Буду признателен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2011, 19:24     Округление до n знака. Цвет кусочка текста.
Посмотрите здесь:

Цвет текста в консоле C++
цвет текста C++
цвет текста C++
C++ Цвет текста
Цвет текста C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Liraim
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
27.09.2011, 20:31     Округление до n знака. Цвет кусочка текста. #2
Для форматирования чисел при выводе через cout:
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
int main()
{
    cout.precision(5);
    cout<<"Some text bla-bla-bla, :"<<fixed<<(float)2<<endl;
    return 0;
}
В выражении:
C++
1
cout.precision(5);
задается число знаков после запятой.
И перед выводом числа необходимо вывести:
C++
1
cout<<fixed
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 21:45     Округление до n знака. Цвет кусочка текста. #3
gosho, какая ОС?

Добавлено через 13 секунд
Вот для винды:

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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
        CONSOLE_SCREEN_BUFFER_INFO defaultSettings;
 
        HANDLE hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );
        GetConsoleScreenBufferInfo( hStdOut, &defaultSettings );
 
        cout << "This is normal text.\nThis is ";
 
        SetConsoleTextAttribute( hStdOut, FOREGROUND_RED | FOREGROUND_INTENSITY );
 
        cout << "red";
 
        SetConsoleTextAttribute( hStdOut, defaultSettings.wAttributes );
 
        cout << " text.\nThis is ";
 
        SetConsoleTextAttribute( hStdOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY );
 
        cout << "green";
 
        SetConsoleTextAttribute( hStdOut, defaultSettings.wAttributes );
 
        cout << " text.\nThis is ";
 
        SetConsoleTextAttribute( hStdOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY );
 
        cout << "yellow";
 
        SetConsoleTextAttribute( hStdOut, defaultSettings.wAttributes );
 
        cout << " text.\nThis is normal text again.\n";
 
 
        return 0;
}
Добавлено через 1 минуту
gosho, а какая разница - printf, cout? Везде идёт запись stdout...
gosho
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10
28.09.2011, 01:34  [ТС]     Округление до n знака. Цвет кусочка текста. #4
Liraim, Спасибо, ща попробую отпишусь.


talis, Спасибо за отклик, но API пока побаиваюсь. Дойду еще до него. Хочу простыми textbackground и textcolor решить задачу. Всё что-то не то получается.

А по поводу жирного или подчеркнутого текста это фантастика да?

ОС Windovs Se7en Максимальная. RAD C++ Builder XE.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
28.09.2011, 12:53     Округление до n знака. Цвет кусочка текста. #5
gosho, а без API никуда. Ну нету таких волшебных textcolor, которые бы не использовали API. Так что привыкайте, все эти модные библиотеки вроде VCL всё равно используют API, без его знания вам не обойтись. Не, можете писать на асме для доса. Выставляете прерыванием 10h третий режим, затем в регистр BL кладёте атрибуты текста и прерыванием 13h выводите его. Но мне кажется, что для винды будет лучше и проще использовать вызовы системных функций, а не прерываний BIOS Тем более, что по поводу семёрки у меня имеются смутные сомнения.

Жирный в винде (и в досе) выглядит как FOREGROUND_INTENSITY - то есть ярким. А подчёркнутый я вообще только в юниксовских терминалах видел.
gosho
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10
28.09.2011, 19:38  [ТС]     Округление до n знака. Цвет кусочка текста. #6
Цитата Сообщение от talis Посмотреть сообщение
Ну нету таких волшебных textcolor, которые бы не использовали API
Я против API не имею ничего! Просто я совсем недавно начал писать (причем я не студент, не учусь на курсах и т.д., а просто самоучка, по книжкам и форумам) на С++ и не хочу голову забивать API пока.
Пусть инструкции С++ используют его, но ЯВНО указывать их я не готов пока, в силу их не знания. Представьте себе самоучку (по профессии я архитектор, это хобби писать на С++), который недели 2 как начал писать "хелло ворлд" и всякие линейные задачки решать вроде расчет скорости авто при известных S и t, разбирающийся с низкоуровневым WinAPI.
Тем более я считаю что учить API нет смысла, его (так же и MSDN) нужно открывать и читать по мере возникновения задачи. Я реально очень запутаюсь если смешаю АПИ и базовые знания С++.
Кстати параллельно смотрю Паскаль и Делфи.

Liraim
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
28.09.2011, 19:51     Округление до n знака. Цвет кусочка текста. #7
Раз не хочется лесть в API, то лучше пока не трогать консоль.
Так как самым оптимальным и красивым решение поставленной проблемы с цветом в консоли, как раз и является использование API.
Лучше тогда оставь эту проблему и перейди к более общим вещам С++.
И (лично мое мнение) одновременно заниматься С++ и Паскалем не эффективно и сбивает. Лучше выбери язык который больше по душе и разбирайся только с ним.
gosho
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10
29.09.2011, 02:13  [ТС]     Округление до n знака. Цвет кусочка текста. #8
Liraim, Начал с паскаля, так как он очень легок в изучении, в принципе он создавался как язык для изучения в учебных заведениях. Но потом как то магия С++ меня притянула к себе. По С++ больше материала в интернете, на нем написаны большинство программ серьезных, а изучение их исходников думаю многое даст. Но Си++ и позапутаннее будет конечно, чем паскаль. Но мы не ищем легких путей))
Про АПИ вроде написал причину нежелания учить язык, просто сам С++ не так уж и легко сдается, АПИ ваще запутает.
А консоль... Так все начинают с консоли, не начать же мне с Классов или ООП сразу. Если не консоль, то что?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2011, 12:35     Округление до n знака. Цвет кусочка текста.
Еще ссылки по теме:

Цвет текста в консоли C++
Цвет текста консоли C++
C++ Цвет текста в С++

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

Или воспользуйтесь поиском по форуму:
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
29.09.2011, 12:35     Округление до n знака. Цвет кусочка текста. #9
gosho, API - это просто набор функций, и всё. Если голова на плечах есть, то не запутаетесь.
Yandex
Объявления
29.09.2011, 12:35     Округление до n знака. Цвет кусочка текста.
Ответ Создать тему
Опции темы

Текущее время: 08:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru