А можно в следующий раз, когда мы будем решать какую-нибудь задачу, сделать так, чтоб input и output полностью были видны с самого начала (потому что в таком случае не приходится сидеть 6 часов и гадать, а где у меня может быть ошибка, если на 2 совершенно разных компиляторах все прекрасно, а в этой системе нет), а не когда отправляется уже верное решение по какому-нибудь тесту. Думаю, что полный текст теста и его решения в момент, когда происходит поиск ошибок, будет полезнее, чем полный текст, когда предполагается, что задача и без того верно решена.
Расписание на ближайшее время. Указывайте свою фамилию в строке, соответственно таймслоту, чтобы зарезервировать время. Принимать задачи буду в 320. Прошу впустую время не бронировать!
А можно в следующий раз поменьше ворчать Ярослав? Вы как тот смурфик из мультика.
Нельзя, т.к. большие файлы она не показывает.
ejudge ничего не компилирует. Это делает компилятор! И если у Вас полный тест, оказался неполный то не стоит винить ejudge. Примите правила игры и соблюдайте их.
Внимание! В расписании прошу указывать количество задач уже готовых к сдаче. Если Ваших в планах есть доделывание и сдача задачи, то это не надо вносить в расписание. Только по факту. Задача готова, пошел(а) и записался.
Прошу всех кто уже записан на 24-25.12 указать кол-во задач. При этом можно записать 2 человека на одно время по 1 графовой задаче каждый.
PS: Это условие связано с тем, что есть люди с готовыми задачами, которым нет место в расписании. Это неправильно.
Помнится все до единого писали лексикографическое сравнение через набор if
в одной из наших задач. Вот нашел элегантный способ сделать это красивее. Читайте про std::tie.
Единственное что меня смущает так это то, что этот tie
только для структур. Видимо, имеется ввиду, что классы с паблик полями тоже подойдут, а то иначе между классами и структурами получится больше чем известные всем два отличия.
Это наверняка уже решили, и было это довольно давно, но мне сразу бросились в глаза строка (и подобная ниже):
const char* s1 = time_str.substr(0, 2).c_str();
int hour = atoi(s1);
Очевидно же, что тут s1
внутри вызова atoi
указывает на уже освобожденную память. substr(...)
возвращает строку, которая в той же строке кода и уничтожается после c_str()
. Отсюда и разное поведение на разных компиляторах.
Правильно было бы так:
std::string s1 = time_str.substr(0, 2);
int hour = atoi(s1.c_str());
А вообще, раз вы тут уже и С++ 11 используете, то существуют аналоги stoi
, stof
и подобные, которые принимают не указатель на char, а собственно string…
Не удержался:smile:
А ссылку на оригинальный пост? Эта тема абсолютный рекордсмен по количеству постов на этом форуме, видимо движок форума работает на пределе и местный поиск выдает, что atoi
в рамках этой темы только в Вашем посте встречается. А еще говорили, что это ультрасовременный хипстерский форумный движок …
ИМХО, надо грядущие консультации посвятить еще всяким полезностям из std utility
В смысле? Какая ему разница, какие поля ему передают, если он испольюзуется внутри функции-члена или friend-функции?
https://ideone.com/aeydT1 - все Ok
Там картинка)
Будущие консультации будут посвящены пройденному материалу. Что логично и законно.
Роман Борисович, а когда будет готова программа/вопросы к экзамену?
У меня завтра будет возможность поработать над тем и другим. Так что заглядывайте сюда завтра вечерком.
Итак, Программа экзамена по С++ 2015.pdf . Если у кого-то есть уверенность, что на лекциях не рассматривали vector, а он есть в программке, или что рассматривали map, но его нет в программке, то замечания по программе принимаются на первой консультации. Соответственно, вечером в понедельник программа экзамена может изменится, но это уже будет окончательный вариант. Форму экзамена тоже обсудим на первой консультации.
Внимание! Время консультаций изменяем на 18:10, а экзамена на 9:00. Аудитории без изменений.
На первой консультации я говорил, что постараюсь перенести экзамен в ауд. 316. Деканат дал добро.
Граждане студенты, внесите, пожалуйста, описания практических задач, которые я вам на экзамене формулировал в гугл-документ.
Добор баллов состоится 18.02. Сдача задач: 14:30-15:30. Если не успеете: 16:30-17:00. Аудитория предположительно 320.
Экзамен по расписанию 25.02.
Итак, я нашел свободную аудиторию 315 на 13:45. Таким образом, мы 27.02 проводим лекцию и практику.
Собираю решение у себя с помощью g++5.1 => все без проблем.
Кидаю на ejudge: g++4.8 и clang++3.6 восемь раз высказывали мне все, что они думают о c++11… Может, стоит их обновить?
g++ отверг все попытки поперемещать потоки ввода-вывода внутрь заготовленной обертки, а clang сперва ругался на abs(long long), пытаясь интерпретировать как abs(float) или abs(double), После не дал использовать перегруженный оператор вывода в поток:
string to_string(const Fraction& val){
return std::to_string(val.numerator) + "/" + std::to_string(val.denumerator);
}
ostream& operator << (ostream& out, const Fraction& val){
out << to_string(val);
return out;
}
clang выплюнул такую непонятность:
src/Fraction.o: In function `Fractions::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, Fractions::Fraction const&)':
src/Fraction.cpp:(.text+0x69d): undefined reference to `std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<< <char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Заставить собрать-то удалось, но путем отказа от использования всего запланированного…
У нашей версии кланга проблемы со стандартной библиотекой. Я это и раньше знал и Ваши слова это подтверждают. Про гцц не знаю, что не так. Обновить думаю можно. Но хочу напомнить, что включить опцию с++1у не удалось в прошлый раз. Хотя обновление может исправить эту ситуацию.
Про отсутствие move-конструкторов у потоковых классов в libstdc++ это известная проблема, легко находится на StackOverflow: решена в версии 5+ GCC.