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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
#1

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

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

Есть программа, которая должна считать данные из файла 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.07.2013, 22:31     Можно ли еще сократить код? #21
Цитата Сообщение от Nikko12 Посмотреть сообщение
Программа должна сложить 2 числа не превосходящих 10^9.
А это просто так написано было?
alsav22
5416 / 4812 / 442
Регистрация: 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;}
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.07.2013, 22:39     Можно ли еще сократить код? #23
alsav22, где input.txt и output.txt из задания?
Nikko12
1 / 1 / 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 Сокращенный вид
diagon
Higher
1926 / 1192 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.07.2013, 23:02     Можно ли еще сократить код? #25
У меня какое-то время на этой задаче 54 символа было. Потом злой админ удалил мою посылку :(
Конкретно на этой задаче на плюсах в топ попыток попасть никак не получится (вернее, получится, но опять удалят посылку).
Проще всего найти какую-нибудь сложную задачу, посидеть над ее сокращением пару часов, и вы почти гарантированно попадете в топ. А на простенькие задачи смотреть не стоит - все топовые позиции уже расхвачены различными читерами.
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно ли еще уменьшить код??
Да, можно. Символов на 15-20.
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 23:06  [ТС]     Можно ли еще сократить код? #26
diagon, Если не секрет, за что удалят решение?? Ведь все решено верно
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
08.07.2013, 03:58     Можно ли еще сократить код? #27
stream f;
f.open("Имя файла");
Только расширение файла придется тебе добавлять с помощью strcpy.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 04:03     Можно ли еще сократить код? #28
Bend3r, более короткий код в студию!
Nikko12
1 / 1 / 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 байт
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 07:58     Можно ли еще сократить код? #30
В 22 посте я неправильно написал, там 97 байтов.
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно еще сократить:
Здесь - 113.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
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'ки.
diagon
Higher
1926 / 1192 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2013, 14:32     Можно ли еще сократить код? #32
Цитата Сообщение от Somebody Посмотреть сообщение
которая состоит в основном из пробельных символов
На ацмп их убрали уже. Теперь там не учитываются только пробелы и переносы строк.
Я когда-то пробовал реализовать подобную идею, только в system подавал код на vbs'ке. На 3 тесте стабильно TLE + падение тестирующей системы. После ~5 попытки мне в личку написал разгневанный админ, которому надоело постоянно чинить систему :) Просто system создает отдельный процесс, по мере прохождения тестов эти процессы накапливаются и намертво вешают систему, насколько я понял.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
08.07.2013, 18:57     Можно ли еще сократить код? #33
Цитата Сообщение от diagon Посмотреть сообщение
Просто system создает отдельный процесс, по мере прохождения тестов эти процессы накапливаются и намертво вешают систему, насколько я понял.
Вообще этот процесс должен завершаться по-хорошему. Во всяком случае, думаю, помнишь вот это - я тогда с system раз по 10 подряд отправлял, но админ мне не писал
diagon
Higher
1926 / 1192 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2013, 19:15     Можно ли еще сократить код? #34
Цитата Сообщение от Somebody Посмотреть сообщение
Вообще этот процесс должен завершаться по-хорошему. Во всяком случае, думаю, помнишь вот это - я тогда с system раз по 10 подряд отправлял, но админ мне не писал
Видимо, echo завершается быстро, а вот vbs'ки тормозят.
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 17:23     Можно ли еще сократить код? #35
Меня одного смущает то что там у фу-и main нету типа (int)
Цитата Сообщение от Nikko12 Посмотреть сообщение
main()
И что там есть cout, но нету std::
или
C++
1
using namespace std;
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 17:29     Можно ли еще сократить код? #36
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Меня одного смущает то что там у фу-и main нету типа (int)
И что там есть cout, но нету std::
или
C++
1
using namespace std;
cin, cout - это его файловые потоки, а не стандартные, о чём я ТС и пишу, но он все-равно продолжает свои потоки называть именами стандартных.
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 17:34     Можно ли еще сократить код? #37
А-а-а, извините, я не знал этого

Добавлено через 22 секунды
Но про main я точно прав, потому что у меня ошибку выбивало
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
28.07.2013, 17:52     Можно ли еще сократить код? #38
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Но про main я точно прав, потому что у меня ошибку выбивало
Тут подгоняется под ********, там вроде VC++ 7.1, в нём работает. А так вообще да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 08:28     Можно ли еще сократить код?
Еще ссылки по теме:
C++ Сократить код до 101 - 120 символов
C++ Сократить код. Задача про туриста
Можно ли как-то сократить объявления using в начале программы? C++
Сократить код. Задача про сравнение символов C++
C++ Сократить код ( Вырубка деревьев (Время: 1 сек. Память: 16 Мб Сложность: 46%)

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

Или воспользуйтесь поиском по форуму:
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
29.07.2013, 08:28     Можно ли еще сократить код? #39
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно ли еще уменьшить код??
Еще можно использовать класс fstream вместо ifstream и ofstream. Если схитрить с учетом особенностей тамошнего компилятора, код немного сократится.
Yandex
Объявления
29.07.2013, 08:28     Можно ли еще сократить код?
Ответ Создать тему
Опции темы

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