Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10

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

27.09.2011, 19:24. Показов 1934. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возник вот такой вопрос..
Есть программа:
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 <<-м?
Буду признателен!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2011, 19:24
Ответы с готовыми решениями:

Округление double до 9 знака
Здравствуйте, форумчане. Появилась проблема при округлении результата при выполнении математической формулы. Задача - написать...

Округление до 25-го знака после запятой
Граждане, помогите с округлением до 25-го знака после запятой в Питоне, пожалуйста) Вот сама задача, собственно: Выведите в выходной...

Округление, 2 знака после запятой
Привет всем. Помогите сделать округление на 2 цифры после запятой. В общем, нашел в сети вариант кода для определения размера файла. ...

8
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
27.09.2011, 20:31
Для форматирования чисел при выводе через 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
1
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 21:45
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...
0
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10
28.09.2011, 01:34  [ТС]
Liraim, Спасибо, ща попробую отпишусь.


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

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

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

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

0
6 / 6 / 0
Регистрация: 28.01.2009
Сообщений: 15
28.09.2011, 19:51
Раз не хочется лесть в API, то лучше пока не трогать консоль.
Так как самым оптимальным и красивым решение поставленной проблемы с цветом в консоли, как раз и является использование API.
Лучше тогда оставь эту проблему и перейди к более общим вещам С++.
И (лично мое мнение) одновременно заниматься С++ и Паскалем не эффективно и сбивает. Лучше выбери язык который больше по душе и разбирайся только с ним.
0
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10
29.09.2011, 02:13  [ТС]
Liraim, Начал с паскаля, так как он очень легок в изучении, в принципе он создавался как язык для изучения в учебных заведениях. Но потом как то магия С++ меня притянула к себе. По С++ больше материала в интернете, на нем написаны большинство программ серьезных, а изучение их исходников думаю многое даст. Но Си++ и позапутаннее будет конечно, чем паскаль. Но мы не ищем легких путей))
Про АПИ вроде написал причину нежелания учить язык, просто сам С++ не так уж и легко сдается, АПИ ваще запутает.
А консоль... Так все начинают с консоли, не начать же мне с Классов или ООП сразу. Если не консоль, то что?
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
29.09.2011, 12:35
gosho, API - это просто набор функций, и всё. Если голова на плечах есть, то не запутаетесь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2011, 12:35
Помогаю со студенческими работами здесь

Сопроцессор. Округление до нужного знака
Необходимо округлить число до нужного знака в сопроцессоре(в данном случае до 4-го): ... fx dd 3.456753 tmp dw ? ... finit ...

Округление числа . FF.1F9A6B51 (16) до определенного знака
Есть дробное число допустим 255,12345 перевести его в 16 систему это будет FF.1F9A6B51 .. и после округлить до определенного знака.......

Округление значения переменной с точностью до определенного знака
Скажите, как округлить число до определенного кол-ва знаков? Добавлено через 5 минут Сделал, но работает неправильно! Сделал...

Как сделать округление до второго знака в Range
Привет ребят) помогите пожалуйста, программа отказывается делать округление до второго знака в Range. все перепробовал, не знаю как...

Цвет текста на форме влияет на цвет текста компонентов формы
Всем доброго времени суток! Появилась потребность написать на форме. При смене цвета текста через колордиалог If...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru