Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/23: Рейтинг темы: голосов - 23, средняя оценка - 4.57
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
#1

Сократить код. Задача про сравнение символов

02.01.2014, 21:07. Просмотров 4166. Ответов 81
Метки нет (Все метки)

набросал решение вышесказаной задачи вот код
C++
1
2
3
4
5
6
7
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k = k * 5 - 5;
    k > 720 ? o<<"NO" : o <<k / 60 << " "<< k % 60;
}
с удивлением обнаружил что я на 6 месте по коду
Размер кода: 119
но есть код (с++) и короче 114 символов как?
помогите мне сократить код (убрать 4-5 символов)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 21:07
Ответы с готовыми решениями:

Сократить код. Задача про туриста
всем привет есть задача Турист (Время: 1 сек. Память: 16 Мб Сложность: 22%)...

Сократить код до 101 - 120 символов
есть задача ! есть код #include &lt;fstream&gt; int main(){ std::fstream...

Стоит задача сравнение и подсчета символов строки.
Стоит задача сравнение и подсчета символов строки. Получается, сравнить только...

Сравнение символов через код символа
есть задание выбрать неповторяющиеся символы и расположить в порядке убывания...

Каждое слово строки состоящее более, чем из 8 символов, сократить до первых 8 символов
Нуждаюсь в помощи. Нужно написать программу на C++(в принципе, и на Си можно)...

81
Nikcharn
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
02.01.2014, 21:26 #2
У вас ссылка на 0 задачу, которая не найдена.
Не знаю как считают там размер, но вы не пробовали, например, писать весь код в одной строке?
P.S. Полное отсутствие знаков пунктуации смущает мой разум.
0
Genn55
378 / 225 / 108
Регистрация: 26.12.2012
Сообщений: 744
02.01.2014, 21:30 #3
C++
1
k = k * 5 - 5;
Вам не кажется что это 0?
0
Nikcharn
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
02.01.2014, 21:35 #4
Если так пойдет и дальше, то вы привыкните писать не перевариваемый код.

Добавлено через 2 минуты
Цитата Сообщение от Genn55 Посмотреть сообщение
Вам не кажется что это 0?
Если k = 150, то это не будет 0.
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
02.01.2014, 22:04 #5
Цитата Сообщение от костя666674555 Посмотреть сообщение
C++
1
k = k * 5 - 5;
C++
1
--k *= 5;
1
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
03.01.2014, 11:59  [ТС] #6
? как так к*5-5 это не 0
(к*5)-(к*5) это 0

Добавлено через 1 минуту
Цитата Сообщение от Nikcharn Посмотреть сообщение
У вас ссылка на 0 задачу, которая не найдена.
Не знаю как считают там размер, но вы не пробовали, например, писать весь код в одной строке?
P.S. Полное отсутствие знаков пунктуации смущает мой разум.
сорри вот сылка

Студент Василий живет в общежитии. Отделение банка, в котором он производит оплату за проживание, имеет всего две кассы, поэтому почти всегда длинная очередь к ним. Первая касса открывается в 8.00, вторая – в 8.05. Последний клиент будет принят в 20.00. Очередь единая, и очередной клиент обслуживается, как только освобождается одна из касс. На обслуживание одного клиента уходит ровно 10 минут. Василий приходит ровно в 8.00 и видит, сколько человек стоит перед ним. Требуется определить, сколько времени ему придется простоять в очереди, и вообще обслужат ли его сегодня.

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

Входной файл INPUT.TXT содержит единственное натурально число K – номер Василия в очереди (K < 250).

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

В выходной файл OUTPUT.TXT выводится строка «NO», если Василий сегодня заплатить уже не успеет, и время его ожидания (в формате «X Y», где X – количество целых часов, которые простоит в очереди Василий, и Y – количество минут), если все же успеет заплатить.

Добавлено через 2 минуты
итак мы на 6 месте с кодом 118 символов
как ещё сократить?

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    --k *= 5;
    k > 720 ? o<<"NO" : o <<k / 60 << " "<< k % 60;
}
Размер кода: 118

Добавлено через 2 минуты
Цитата Сообщение от Nikcharn Посмотреть сообщение
Если так пойдет и дальше, то вы привыкните писать не перевариваемый код.

Добавлено через 2 минуты

Если k = 150, то это не будет 0.
при к=150 это будет равно (150*5)-5=750-5=745

 Комментарий администратора 
Условие задачи размещайте на форуме.
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.01.2014, 12:05 #7
Двойка здесь зачем?
C++
1
o("output.txt", 2);
0
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
03.01.2014, 12:15  [ТС] #8
Цитата Сообщение от alsav22 Посмотреть сообщение
Двойка здесь зачем?
C++
1
o("output.txt", 2);
это обязательно я в статье прочитал

Добавлено через 3 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Двойка здесь зачем?
C++
1
o("output.txt", 2);
код
C++
1
2
3
4
5
6
7
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", );
    i>> k;
    --k *= 5;
    k > 720 ? o<<"NO" : o <<k / 60 << " "<< k % 60;
}
не работает вердикт Compilation error
ошибки

task.cpp
task.cpp(3) : error C2059: syntax error : ')'
task.cpp(6) : error C2065: 'o' : undeclared identifier
task.cpp(6) : error C3861: 'o': identifier not found, even with argument-dependent lookup
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.01.2014, 12:20 #9
Цитата Сообщение от костя666674555 Посмотреть сообщение
это обязательно я в статье прочитал
В какой такой статье?
C++
1
o("output.txt", );
Запятую зачем оставили?
0
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
03.01.2014, 12:37  [ТС] #10
Цитата Сообщение от alsav22 Посмотреть сообщение
В какой такой статье?
C++
1
o("output.txt", );
Запятую зачем оставили?
вопрос касался двойки результат Presentation error
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.01.2014, 13:42 #11
Цитата Сообщение от костя666674555 Посмотреть сообщение
вопрос касался двойки результат
Теперь вопрос касается запятой. Вот это:
Цитата Сообщение от костя666674555 Посмотреть сообщение
task.cpp
task.cpp(3) : error C2059: syntax error : ')'
task.cpp(6) : error C2065: 'o' : undeclared identifier
task.cpp(6) : error C3861: 'o': identifier not found, even with argument-dependent lookup
из-за оставленной запятой. Трудно понять или что?
0
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
04.01.2014, 18:44  [ТС] #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Теперь вопрос касается запятой. Вот это:

из-за оставленной запятой. Трудно понять или что?
ладно ладно убрал запятую стал результат (ошибка открытия выходного файла)
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.01.2014, 18:46 #13
Цитата Сообщение от костя666674555 Посмотреть сообщение
стал результат (ошибка открытия выходного файла)
Его заранее, как input.txt, нельзя создать?
0
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
04.01.2014, 19:04  [ТС] #14
пошевелил последней извилиной
пришёл к выводу k = k * 5 - 5; это тоже самое что k=5*(k-1);
=> k / 60= 5*(k-1)/60=(k-1)/12
и k % 60 = (5*(k-1))%60 или же 5*(k-1)%60
=> приходим к коду
C++
1
2
3
4
5
6
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k > 145 ? o<<"NO" : o <<(k-1)/12 << " "<< (5*(k-1))%60;
}
а это 123 символа

Добавлено через 14 секунд
пошевелил последней извилиной
пришёл к выводу k = k * 5 - 5; это тоже самое что k=5*(k-1);
=> k / 60= 5*(k-1)/60=(k-1)/12
и k % 60 = (5*(k-1))%60 или же 5*(k-1)%60
=> приходим к коду
C++
1
2
3
4
5
6
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k > 145 ? o<<"NO" : o <<(k-1)/12 << " "<< (5*(k-1))%60;
}
а это 123 символа
0
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
04.01.2014, 19:07 #15
Если не трудно, объясните, пожалуйста, почему ваше решение верно?

Согласно условию задачи, если Василий видит в очереди одного человека, ждать ему нужно ровно открытия второй кассы -- пять минут. Ваше решение говорит, что ждать ему (1 * 5) - 5 = 0 минут.
Если Василий видит в очереди ноль человек, ваше решение рассчитает (0 * 5) - 5 = -5 минут ожидания.
C++
1
k*=5;
0
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
04.01.2014, 19:37  [ТС] #16
двигаемся дальше
C++
1
2
3
4
5
6
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k > 145 ? o<<"NO" : o <<(k-1)/12 << " "<< 5*(k-1)%60;
}
размер кода 121

Добавлено через 10 минут
Цитата Сообщение от lemegeton Посмотреть сообщение
Если не трудно, объясните, пожалуйста, почему ваше решение верно?

Согласно условию задачи, если Василий видит в очереди одного человека, ждать ему нужно ровно открытия второй кассы -- пять минут. Ваше решение говорит, что ждать ему (1 * 5) - 5 = 0 минут.
Если Василий видит в очереди ноль человек, ваше решение рассчитает (0 * 5) - 5 = -5 минут ожидания.
C++
1
k*=5;
зашол в обсуждение и увидил надпись 16 Мозоленко Вячеслав Константинович, 09 мая 2012 г. 14:40:51
Все до тупого просто. Формула: 5(n - 1); - это в минутах, где n - номер в очереди. А потом целчисленным делением и его остатком разгоняете по часам.

Добавлено через 5 минут
двигаемся далее к-1 это k--;
=> приходим к коду
C++
1
2
3
4
5
6
7
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k--;
    k > 145 ? o<<"NO" : o <<k/12 << " "<< 5*k%60;
}
Размер кода: 117

Добавлено через 10 секунд
двигаемся далее к-1 это k--;
=> приходим к коду
C++
1
2
3
4
5
6
7
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k--;
    k > 145 ? o<<"NO" : o <<k/12 << " "<< 5*k%60;
}
Размер кода: 117

Добавлено через 13 минут
надо сократить строку
C++
1
k > 145 ? o<<"NO" : o <<k/12 << " "<< 5*k%60;
как то типо так
C++
1
2
o<<( k>145 ? "NO" : //вот дальше проблемка
k/12 " " 5*k%60);
0
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
04.01.2014, 19:44 #17
C++
1
2
k--;
    k > 145 ? o<<"NO" : o <<k/12 << " "<< 5*k%60;
C++
1
--k > 145 ? o<<"NO" : o <<k/12 << " "<< 5*k%60;
1
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
04.01.2014, 19:45  [ТС] #18
Цитата Сообщение от alsav22 Посмотреть сообщение
Его заранее, как input.txt, нельзя создать?

ошибка выходного!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! файла
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.01.2014, 19:51 #19
Цитата Сообщение от костя666674555 Посмотреть сообщение
ошибка выходного!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! файла
И что, что выходного? Ошибка в чём? Что не сущетсвует выходного файла? Я без понятия, где вы это делает, там может и нельзя выходной файл руками создавать (как input.txt).
0
костя666674555
-3 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
05.01.2014, 12:27  [ТС] #20
Цитата Сообщение от alsav22 Посмотреть сообщение
И что, что выходного? Ошибка в чём? Что не сущетсвует выходного файла? Я без понятия, где вы это делает, там может и нельзя выходной файл руками создавать (как input.txt).
Что не сущетсвует выходного файла?
да!

Добавлено через 3 минуты
C++
1
2
3
4
5
6
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k-- > 145 ? o<<"NO" : o <<k/12 << " "<< 5*k%60;
}
Размер кода: 115
остался 1 символ
0
05.01.2014, 12:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2014, 12:27

Сократить количество символов кода
#include &lt;fstream&gt; using namespace std; int main(){ifstream f(&quot;input.txt&quot;);...

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

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


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

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

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