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

Можно ли еще сократить код?

07.07.2013, 21:30. Показов 3149. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа, которая должна считать данные из файла input.txt и записать ответ в фаил output.txt. Программа должна сложить 2 числа не превосходящих 10^9. Можно ли еще уменьшить код??
C++
1
2
3
4
5
6
7
8
9
#include <fstream>
long a,b; 
main()
{
    std::ifstream cin("input.txt");
    std::ofstream cout("output.txt");
    cin>>a>>b;
    cout<<a+b;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2013, 21:30
Ответы с готовыми решениями:

Скажите, пожалуйста, возможно ли код сократить еще?
Вот код моей программы. #include &lt;fstream&gt; int a,b,c; main(){ std::fstream...

как можно ещё сократить код?
#include&lt;iostream&gt; main(){ int n; std::cin&gt;&gt;n; std::cout&lt;&lt;n*(n+1)/2+1; }

Как можно еще оптимизировать код?
Как еще можно оптимизировать данный код? Если вкратце, то он выводит значение АВ, если ключ = вводу...

Поделитесь советом. Как сократить еще 1 символ. =)
c&gt;&gt;a; a--; while(g+=a&amp;1, a/=2); o&lt;&lt;g%3; Подскажите, пожалуйста, реально ли укоротить...

38
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.07.2013, 22:31 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Nikko12 Посмотреть сообщение
Программа должна сложить 2 числа не превосходящих 10^9.
А это просто так написано было?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 22:34 22
111 байт.
C++
1
2
#include<fstream>
long a,b;int main(){std::ifstream r("i");std::ofstream w("o");r>>a>>b;w<<a+b;}
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.07.2013, 22:39 23
alsav22, где input.txt и output.txt из задания?
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 22:52  [ТС] 24
Tulosba, Простите, был не прав, можно Long на int заменить.

Добавлено через 4 минуты
alsav22, Спасибо

Добавлено через 50 секунд
Цитата Сообщение от Tulosba Посмотреть сообщение
alsav22, где input.txt и output.txt из задания?
i и o и есть input.txt и output.txt Сокращенный вид
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.07.2013, 23:02 25
У меня какое-то время на этой задаче 54 символа было. Потом злой админ удалил мою посылку :(
Конкретно на этой задаче на плюсах в топ попыток попасть никак не получится (вернее, получится, но опять удалят посылку).
Проще всего найти какую-нибудь сложную задачу, посидеть над ее сокращением пару часов, и вы почти гарантированно попадете в топ. А на простенькие задачи смотреть не стоит - все топовые позиции уже расхвачены различными читерами.
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно ли еще уменьшить код??
Да, можно. Символов на 15-20.
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 23:06  [ТС] 26
diagon, Если не секрет, за что удалят решение?? Ведь все решено верно
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
08.07.2013, 03:58 27
stream f;
f.open("Имя файла");
Только расширение файла придется тебе добавлять с помощью strcpy.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 04:03 28
Bend3r, более короткий код в студию!
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
08.07.2013, 07:24  [ТС] 29
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
#include<fstream>
long a,b;int main(){std::ifstream r("i");std::ofstream w("o");r>>a>>b;w<<a+b;}
Можно еще сократить:
C++
1
2
#include<fstream>
long a,b;int main(){std::fstream r("inpit.txt");std::ofstream w("output.txt");r>>a>>b;w<<a+b;}
110 байт
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 07:58 30
В 22 посте я неправильно написал, там 97 байтов.
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно еще сократить:
Здесь - 113.
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
08.07.2013, 14:14 31
C++
1
2
3
4
5
#include <ios>
main()
{
  system("for /f \"tokens=1,2\" %a in (input.txt) do set /a %a+%b >output.txt");
}
Думаю, дальше надо в строке делать пробельные символы и декодировать её в цикле.
Вообще самая ненормальная идея, которая у меня была насчёт [читерства на] acmp, - это написать ассемблерную вставку, которая состоит в основном из пробельных символов и генерирует основной код, который решает задачу. Это было давно, так что подробности не помню, но вроде у меня какой-то вариант создания любого кода любого размера из небольшого количества непробельных символов получился в теории, но трудоёмкость создания всего этого оказалась слишком большой, чтобы реально попробовать (что-то типа десятка adc на каждые 4 байта генерируемого в регистре кода). К тому же, чтобы избавиться от include, надо ещё или заранее узнать адреса системных функций в системе, где будет тестироваться (например, можно вытащить набором решений, которые будут побитово выдавать адреса правильностью ответа), или ещё динамически искать базу kernel32, копаться в таблице экспорта и грузить потом остальные dll'ки.
2
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2013, 14:32 32
Цитата Сообщение от Somebody Посмотреть сообщение
которая состоит в основном из пробельных символов
На ацмп их убрали уже. Теперь там не учитываются только пробелы и переносы строк.
Я когда-то пробовал реализовать подобную идею, только в system подавал код на vbs'ке. На 3 тесте стабильно TLE + падение тестирующей системы. После ~5 попытки мне в личку написал разгневанный админ, которому надоело постоянно чинить систему :) Просто system создает отдельный процесс, по мере прохождения тестов эти процессы накапливаются и намертво вешают систему, насколько я понял.
2
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
08.07.2013, 18:57 33
Цитата Сообщение от diagon Посмотреть сообщение
Просто system создает отдельный процесс, по мере прохождения тестов эти процессы накапливаются и намертво вешают систему, насколько я понял.
Вообще этот процесс должен завершаться по-хорошему. Во всяком случае, думаю, помнишь вот это - я тогда с system раз по 10 подряд отправлял, но админ мне не писал
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2013, 19:15 34
Цитата Сообщение от Somebody Посмотреть сообщение
Вообще этот процесс должен завершаться по-хорошему. Во всяком случае, думаю, помнишь вот это - я тогда с system раз по 10 подряд отправлял, но админ мне не писал
Видимо, echo завершается быстро, а вот vbs'ки тормозят.
0
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 17:23 35
Меня одного смущает то что там у фу-и main нету типа (int)
Цитата Сообщение от Nikko12 Посмотреть сообщение
main()
И что там есть cout, но нету std::
или
C++
1
using namespace std;
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 17:29 36
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Меня одного смущает то что там у фу-и main нету типа (int)
И что там есть cout, но нету std::
или
C++
1
using namespace std;
cin, cout - это его файловые потоки, а не стандартные, о чём я ТС и пишу, но он все-равно продолжает свои потоки называть именами стандартных.
0
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 17:34 37
А-а-а, извините, я не знал этого

Добавлено через 22 секунды
Но про main я точно прав, потому что у меня ошибку выбивало
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
28.07.2013, 17:52 38
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Но про main я точно прав, потому что у меня ошибку выбивало
Тут подгоняется под acmp.ru, там вроде VC++ 7.1, в нём работает. А так вообще да.
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
29.07.2013, 08:28 39
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно ли еще уменьшить код??
Еще можно использовать класс fstream вместо ifstream и ofstream. Если схитрить с учетом особенностей тамошнего компилятора, код немного сократится.
0
29.07.2013, 08:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2013, 08:28
Помогаю со студенческими работами здесь

Сократить код, переделав if
#include &lt;iostream&gt; #include &lt;math.h&gt; #pragma hdrstop #pragma argsused using namespace std; ...

Как можно сократить массив?
Как можно сократить масив? К примеру есть масив: A =...

Сократить код на два символа
сокртить код #include &lt;fstream&gt; main(int n) { std::fstream I(&quot;input.txt&quot;), O(&quot;output.txt&quot;, 2);...

Крестики нолики(сократить код)
а как в крестиках ноликах можно заменить проверку двух подряд крестиков? ...


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru