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

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

07.07.2013, 21:30. Показов 3147. Ответов 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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 21:33 2
Файловым птокам не нужно давать такие имена. Это имена страндартных потоков для консольного ввода\вывода.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.07.2013, 21:38 3
C++
1
2
3
4
   freopen("input.txt","r",stdin);
   freopen("output.txt","w",stdout);
   cin >> a >> b;
   cout << a + b;
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 21:39 4
Thinker, и в чём уменьшение?
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.07.2013, 21:41 5
Цитата Сообщение от alsav22 Посмотреть сообщение
в чём уменьшение?
это более логично. хотя, уменьшения кода нет. короче сделать вряд ли можно
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 21:44 6
Цитата Сообщение от Thinker Посмотреть сообщение
это более логично
Если не трудно, объясните в чём? Не догоняю...
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.07.2013, 21:45 7
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно ли еще уменьшить код??
Уберите 10 и 11 строки А вообще, по какому критерию уменьшить надо?
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.07.2013, 21:49 8
alsav22, легче отлаживать программы. достаточно закомментировать freopen и выводить на консоль. хм... там тоже так можно, но называть собственные потоки именами стандартных как то не то (внутренние убеждения )
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 22:01 9

Не по теме:

Немного хочется сказать о перенаправлении потоков. Есть такая рекомендацпия, что код должен быть легко читаем и понимаем. В частности, имена переменных должны подсказывать из назначение. Если в коде встречается поток с именем cin, то первая буква его имени подсказывает, что чтение с консоли, если - cout, то вывод на консоль. При перенаправлении стандартных потоков только добавляется лишняя путаница. А что это, собственно, добавляет к эфективность (или чему-либо ещё) кода?



Цитата Сообщение от Tulosba Посмотреть сообщение
Уберите 10 и 11 строки
Можно ещё одной строкой всё записать...

Добавлено через 3 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
А вообще, по какому критерию уменьшить надо?
Может предложить вариант хоть по какому-либо?
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
07.07.2013, 22:04 10
alsav22, freopen чаше используется для олимпиадных задач для уменьшения кода.
1
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 22:13  [ТС] 11
Цитата Сообщение от Tulosba Посмотреть сообщение
Уберите 10 и 11 строки А вообще, по какому критерию уменьшить надо?
Критерий уменьшения: чем меньше символов тем лучше, символ пробела не учитывается их можно ставить сколько душе угодно.

Добавлено через 1 минуту
Т. Е. нужно помаксимуму минимизировать кол-во символов. Правильно ли я понимаю, что на с++ уменьшить размер кода больше нет возможности???
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 22:18 12
Цитата Сообщение от Nikko12 Посмотреть сообщение
уменьшить размер кода
Файла .cpp или файла .exe?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.07.2013, 22:19 13
Цитата Сообщение от Nikko12 Посмотреть сообщение
нужно помаксимуму минимизировать кол-во символов
тогда можно как минимум long заменить на int (если гарантировать 32 разряда), и имена переменных изменить на однобуквенные.
1
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 22:22  [ТС] 14
Цитата Сообщение от alsav22 Посмотреть сообщение
Файла .cpp или файла .exe?
Фаил срр

Добавлено через 1 минуту
Tulosba, Long на int заменить не получится
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 22:23 15
Цитата Сообщение от Nikko12 Посмотреть сообщение
Фаил срр
C++
1
2
3
4
std::ifstream r("i");
std::ofstream w("o");
r>>a>>b;
w<<a+b;
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 22:23  [ТС] 16
Цитата Сообщение от Tulosba Посмотреть сообщение
имена переменных изменить на однобуквенные.
Что имеется ввиду, переменные и так из одной буквы?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.07.2013, 22:26 17
Цитата Сообщение от Nikko12 Посмотреть сообщение
Что имеется ввиду, переменные и так из одной буквы?
Так файловые потоки это тоже переменные
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 22:26  [ТС] 18
Цитата Сообщение от alsav22 Посмотреть сообщение
std::ifstream r("i");
std::ofstream w("o");
f>>a>>b;
w<<a+b;
C++
1
f>>a>>b;//может r>>a>>b; ??
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.07.2013, 22:28 19
alsav22,
Цитата Сообщение от Nikko12 Посмотреть сообщение
из файла input.txt и записать ответ в фаил output.txt.
Добавлено через 1 минуту
Цитата Сообщение от Nikko12 Посмотреть сообщение
Long на int заменить не получится
почему?
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 22:30  [ТС] 20
Цитата Сообщение от Tulosba Посмотреть сообщение
Сообщение от Nikko12
Long на int заменить не получится
почему?
Иначе программа если ввести значение больше чем int, выведет не верный ответ
0
07.07.2013, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2013, 22:30
Помогаю со студенческими работами здесь

Сократить код, переделав 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);...

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


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

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