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

Вывести в выходной файл округленное до n знаков после десятичной точки число E

19.04.2015, 13:03. Показов 4510. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выведите в выходной файл округленное до n знаков после десятичной точки число E. Число Е, округленное до 25 знаков после десятичной точки, равно 2.7182818284590452353602875.

Входные данные

Входной файл INPUT.TXT содержит целое число n (0 ≤ n ≤ 25).

Выходные данные

В выходной файл OUTPUT.TXT выведите ответ на задачу.

Моя проблема в том, что я не знаю как работать в С++ с таким числом(2.7182818284590452353602875) и как задавать округление.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2015, 13:03
Ответы с готовыми решениями:

Выведите в выходной файл округленное до n знаков после десятичной точки число E
Как пишутся очень короткие программы на C++ или C (менее 150 символов, не считая пробелов и табуляций)? Например, задача Вот мое...

Вывести в файл число с заданным количеством знаков после точки
Как это сделать, нигде не нашёл.(

Округлить число до 25 знаков после десятичной точки
Есть простая задача: вот я ее решаю таким способом, т.к в задании написано округлить #include <fstream> #include...

9
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.04.2015, 13:06
Число задавай в виде строки. Округлять будешь вручную поразрядно.
C++
1
std::string s = "2.7182818284590452353602875";
1
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 2
19.04.2015, 13:11  [ТС]
поразрядно это как?

Добавлено через 1 минуту
поразрядно? как?

Добавлено через 1 минуту
Цитата Сообщение от nmcf Посмотреть сообщение
Число задавай в виде строки. Округлять будешь вручную поразрядно.
C++
1
std::string s = "2.7182818284590452353602875";
Как округлять поразрядно?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
19.04.2015, 13:21
Лучший ответ Сообщение было отмечено Nicko как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char s[]= "7182818284590452353602875";
int n;cin>>n;
if(n>25)n=25;
cout<<"2.";
for(i=0;i<n-1;i++)
   cout<<s[i];
if(n==25)
   cout<<s[24]<<endl; // округлять нечего
else
  if(s[n]>='5')
    cout<<char(s[n-1]+1)<<endl;// округляем в плюс
  else
    cout<<s[n-1]<<endl;   // обрезаем
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.04.2015, 13:31
Не совсем оптимально, но работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    int n;
 
    std::cin >> n;
 
    std::string s = "2.7182818284590452353602875";
 
    if (n == 0) s = "3";
    else
        if (n < 25)
        {
            int c = s[n + 2] - '0' > 4 ? 1 : 0;
 
            for (int i = n + 1; i > 1; --i)
            {
                int d = s[i] - '0' + c;
                s[i] = (d % 10) + '0';
                c = d > 9 ? 1 : 0;
            }
 
            s.resize(n + 2);
        }
 
    std::cout << s << std::endl;
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
19.04.2015, 13:39
zss, В строчке 11. А вдруг s[n-1]=='9' ? Будет работать?

Добавлено через 2 минуты
nmcf, у вас с этим моментом, кажется, все в порядке (во всяком случае, вы на это обратили внимание). Но в деталях я не смотрел.
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
19.04.2015, 13:56
Цитата Сообщение от Nicko Посмотреть сообщение
2.7182818284590452353602875.
ну ежли больше не надо то
вот такой вариант
C++
1
2
3
4
5
6
unsigned long long int dec=7182818284590452353602875;
unsigned int n;cin>>n;
unsigned int tmp=25-n;
unsigned int tmp1=pow(10.0,tmp);
dec=(dec+(tmp1/2))/tmp1;
cout<<2<<'.'<<dec;
не проверял, критика приветствуется
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.04.2015, 13:59
Не хватит диапазона ни у long long, ни у double.
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
19.04.2015, 14:14
прошу пардона
Цитата Сообщение от ValeryS Посмотреть сообщение
7182818284590452353
это не
Цитата Сообщение от Nicko Посмотреть сообщение
7182818284590452353602875
вот что значит доверять калькуляторам
решение свое снимаю
можно было конечно пришпандорить длинную арифметику, но решение, по моему, будет сложнее чем со строками
0
0 / 0 / 0
Регистрация: 09.11.2016
Сообщений: 2
09.11.2016, 14:57
Вы не учли, что если n==0,то программа должна вывести 3,т.к. округлит до целых

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
#include <iostream>
 
using namespace std;
 
int main()
{
    char s[] = "7182818284590452353602875";
    int n;
    cin >> n;
 
    if (n == 0)
        cout << "3";
 
    if (n != 0)
    {
        if (n > 25)
            n = 25;
        cout << "2.";
        for (int i = 0; i < n - 1; i++)
            cout << s[i];
        if (n == 25)
            cout << s[24] << endl;
        else if (s[n] >= '5')
            cout << char(s[n - 1] + 1) << endl;
        else
            cout << s[n - 1] << endl;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2016, 14:57
Помогаю со студенческими работами здесь

Округление числа до n знаков после десятичной точки
Решил задачу для новичков по C++. Задача совсем для зелёных новичков, кто только-только начал изучать C++, и у меня есть ощущение, что её...

Вычислить функцию с точностью 6 знаков после десятичной точки
)Вычислить функцию f(x,a)= при x=0.4, 0.6,..., 1.2 и a=2, 3, 4, 5 с точностью 6 знаков после десятичной точки.

Дано вещественное число, проверить является ли это число симметричным относительно положения точки до двух знаков после запятой.
Только начинаю программировать на с/с++ и столкнулась с логическими выражениями, простейшие задачи могу решить а в эту никак не могу...

Вывести первую цифру после десятичной точки.
Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. При решении этой задачи нельзя пользоваться...

Найдите такое число x, что x^2+√x=C , с точностью не менее 6 знаков после точки
Найдите такое число x, что x^2+√x=C , с точностью не менее 6 знаков после точки. Я думал, что это должно работать так, но получается...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru