Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.93/42: Рейтинг темы: голосов - 42, средняя оценка - 4.93
5 / 5 / 0
Регистрация: 18.06.2013
Сообщений: 51
1

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

05.08.2013, 11:17. Просмотров 7973. Ответов 53
Метки нет (Все метки)

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

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

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

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

В выходной файл OUTPUT.TXT выведите ответ на задачу.
Вот мое решение на 255 символов:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>,<string>
 
int main()
{
    std::string e = "2.71828182845904523536028750";
    std::ifstream f ("input.txt");
    std::ofstream o("output.txt");
    int a,i;
    
    f >> a;
    if (a==0) 
            o << 3;
         else
        {
            if (e[a+2] > 52) e[a+1]++;
            for (i=0; i <= a+1 ;++i)
                o<<e[i];
        }   
    
    return 0;
}
Некоторым удается написать решения на 130, 156, 171 символов. Как это у них получается?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2013, 11:17
Ответы с готовыми решениями:

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

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

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

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

53
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
05.08.2013, 12:10 2
Цитата Сообщение от Bohes_ Посмотреть сообщение
Как это у них получается?
Они как минимум читают документацию языка. Вот мое решение в 143 символа:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
 
int main()
{
    std::ifstream i( "input.txt" );
    int p;
    i >> p;
    std::ofstream o( "output.txt" );
    o.precision( p+1 );
    o << 2.7182818284590452353602875;
}
Как решить в 130 символов мне самому интересно.
0
72 / 69 / 38
Регистрация: 09.10.2012
Сообщений: 238
05.08.2013, 12:22 3
C++
1
2
3
4
5
6
7
8
9
10
#include <fstream>
 
int main()
{
    std::fstream i( "input.txt" ), o( "output.txt", 2);
    int p;
    i >> p;
    o.precision(++p);
    o << 2.7182818284590452353602875;
}
131 знак. Только не ругайте
0
5 / 5 / 0
Регистрация: 18.06.2013
Сообщений: 51
05.08.2013, 12:22  [ТС] 4
Цитата Сообщение от Fyret Посмотреть сообщение
Они как минимум читают документацию языка. Вот мое решение в 143 символа:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
 
int main()
{
    std::ifstream i( "input.txt" );
    int p;
    i >> p;
    std::ofstream o( "output.txt" );
    o.precision( p+1 );
    o << 2.7182818284590452353602875;
}
Как решить в 130 символов мне самому интересно.
return 0; для C++ в проверяющей системе обязателен
0
2820 / 1630 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
05.08.2013, 12:24 5
Цитата Сообщение от Bohes_ Посмотреть сообщение
return 0; для C++ в проверяющей системе обязателен
main по стандарту возвращает 0, если нет retrun'а.

Добавлено через 58 секунд
P. S. Да, и для минимального размера надо подгонять не под стандарт, а под тот компилятор, который там.
1
5 / 5 / 0
Регистрация: 18.06.2013
Сообщений: 51
05.08.2013, 12:25  [ТС] 6
Microsoft Visual C++ 7.1 там
0
193 / 173 / 30
Регистрация: 10.07.2012
Сообщений: 800
05.08.2013, 12:31 7
какой смысл в этом?
0
Каратель
Эксперт С++
6598 / 4019 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
05.08.2013, 12:36 8
Цитата Сообщение от Bohes_ Посмотреть сообщение
Microsoft Visual C++ 7.1 там
и что?
0
5 / 5 / 0
Регистрация: 18.06.2013
Сообщений: 51
05.08.2013, 12:43  [ТС] 9
Цитата Сообщение от salam Посмотреть сообщение
какой смысл в этом?
интерес

Добавлено через 6 минут
Fyret, mishelle92, ваши решения не совсем верны:например, при тесте "25" выводится "2.7182818284590450907955983"
0
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
05.08.2013, 12:45 10
Цитата Сообщение от mishelle92 Посмотреть сообщение
131 знак. Только не ругайте
gcc в отличие от msvc не компилирует. Но подгонять надо под используемый компилятор, да.
1
5 / 5 / 0
Регистрация: 18.06.2013
Сообщений: 51
05.08.2013, 12:50  [ТС] 11
Цитата Сообщение от Bohes_ Посмотреть сообщение


Fyret, mishelle92, ваши решения не совсем верны:например, при тесте "25" выводится "2.7182818284590450907955983"
Значит код в 130 символов пишется иначе
0
72 / 69 / 38
Регистрация: 09.10.2012
Сообщений: 238
05.08.2013, 12:50 12
Цитата Сообщение от Bohes_ Посмотреть сообщение
Добавлено через 6 минут
Fyret, mishelle92, ваши решения не совсем верны:например, при тесте "25" выводится "2.7182818284590450907955983"
Действительно, мой код неверно работает при точности > 16...
1
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
05.08.2013, 13:11 13
Подправленное решение mishelle92, 137 символов:

C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
 
int main()
{
    std::fstream i( "input.txt" ), o( "output.txt", 2 );
    int p;
    i >> p;
    char s[28] = "2.7182818284590452353602875";
    s[p+2] = 0;
    o << s;
}
Как же ужать до 130?
1
5 / 5 / 0
Регистрация: 18.06.2013
Сообщений: 51
05.08.2013, 13:17  [ТС] 14
Цитата Сообщение от Fyret Посмотреть сообщение
Подправленное решение mishelle92, 137 символов:

C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
 
int main()
{
    std::fstream i( "input.txt" ), o( "output.txt", 2 );
    int p;
    i >> p;
    char s[28] = "2.7182818284590452353602875";
    s[p+2] = 0;
    o << s;
}
Как же ужать до 130?
Оно определенно выдает неверный ответ
0
1401 / 643 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
05.08.2013, 13:17 15
Fyret, если бы он еще работал. Я еще ужал до 132, если бы он был рабочий...
0
5 / 5 / 0
Регистрация: 18.06.2013
Сообщений: 51
05.08.2013, 15:08  [ТС] 16
А как решить такую задачу за 111 символов?
Драконы
(Время: 1 сек. Память: 16 Мб Сложность: 40%)
Известно, что у дракона может быть несколько голов и его сила определяется числом голов. Но как определить силу драконьей стаи, в которой несколько драконов и у каждого из них определенное число голов? Вероятно, вы считаете, что это значение вычисляется как сумма всех голов? Это далеко не так, иначе было бы слишком просто вычислить силу драконьей стаи. Оказывается, что искомое значение равно произведению значений числа голов каждого из драконов. Например, если в стае 3 дракона, у которых 3, 4 и 5 голов соответственно, то сила равна 3*4*5 = 60. Предположим, что нам известно суммарное значение голов драконьей стаи, как нам вычислить максимально возможное значение силы этого логова драконов? Именно эту задачу Вам и предстоит решить.

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

В единственной строке входного файла INPUT.TXT записано натуральное число N (0 < N < 100) – количество голов драконьей стаи.

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

В единственную строку выходного файла OUTPUT.TXT нужно вывести максимально возможное значение силы, которая может быть у стаи драконов из N голов.
Через ДП или тут есть какая-то формула?


Добавлено через 1 час 7 минут
У меня через ДП выходит 205 символов:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
 
int main()
{
    std::fstream f("input.txt"), o("output.txt",2);
    long long x,i,j, a[100];
    a[1] =1;
    f>>x;
    for (i = 2; i<=x;++i)
    {
        a[i]=i;
        for (j = i-1; j >= i/2; --j)
            a[i]=std:: max(a[i],a[j]*a[i-j]);
    }
    o<<a[x];
    
 
}
0
1350 / 989 / 313
Регистрация: 28.07.2012
Сообщений: 2,746
05.08.2013, 15:28 17
По первой... Возможно нигде не ошибся...
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <fstream>
 
int main() {
    char e[] = "2.71828182845904523536028750";
    std::fstream f ("input.txt"), o("output.txt", 2);
    int a, b;
    f >> a;
    b = a ? a + 1: a;
 
    e[b] += (30043989 >> a) & 1, e[b + 1] = 0;
    o << e;
}
176 символов. Дальше не знаю как жать >_>
0
2820 / 1630 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
05.08.2013, 15:30 18
154, хотя, вроде бы знаю, как короче. Сейчас ещё попробую...
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
 
main(int p)
{
    std::fstream i("input.txt"), o("output.txt", 2);
    i >> p;
    char s[] = "2.7182818284590452353602875", *q = s + p + !!p;
    *q += s[p + 2] > 52;
    q[1] = 0;
    o << s;
}
2
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
05.08.2013, 15:33 19
С учетом предыдущих ошибок я в 162 укладываюсь, но это как-то много, если кто-то и вправду 130 символами обошелся.
0
1350 / 989 / 313
Регистрация: 28.07.2012
Сообщений: 2,746
05.08.2013, 15:35 20
Somebody, неверно. Фейлится на девятке. Или я не по тем правилам округляю?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2013, 15:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.