Поддерживаю. Со следующего раза?
Давайте со следующего.
Небольшой комментарий к задаче #3 д/з #3:
Дан целочисленный массив A размера N, содержащий хотя бы одно чётное число. Найти первое и последнее чётное число в данном массиве.
Многие решали эту задачу так, будто дан не массив, а последовательность чисел, вводимая с клавиатуры. То есть последовательно слева направо обрабатываем элементы массива, последнее чётное обновляем всегда, а первое — по какому-то условию/флажку. При таком решении всегда обрабатываются все элементы массива.
В массиве все числа уже известны, обрабатывать их можно в любом порядке. Последнее чётное число — это первое чётное число, если смотреть с конца. Поэтому данную задачу можно решить двумя циклами с break
.
При таком решении в худшем случае будет обработан N + 1 элемент (если в массиве только один чётный элемент, он будет обработан дважды), а если чётных элементов несколько, то «середину» массива между первым и последним вообще не нужно обрабатывать.
Ещё несколько замечаний по итогам проверки д/з #3.
Как показывает многолетняя практика, систематическое невыполнение домашних заданий коррелирует с плохими результатами контрольной работы.
Лабораторные работы нужно доделывать дома.
В моей подгруппе у большинства студентов обнаружилась проблема в задаче #1: перечислимый тип объявили, а в подпрограмме использовали тип int
. И зачем тогда вообще было перечислимый тип объявлять?
В задаче #6 почти у всех есть такой код:
b[j] = a[i];
++j;
Это хороший пример того, что многие пока не чувствуют, когда можно использовать постфиксную операцию ++
и идиому i++
, а когда нужен просто инкремент. Здесь будет хорошо смотреться i++
:
b[j++] = a[i]
Это повод ещё раз подумать над ++i
vs i++
!
Проверила к/р в своей подгруппе.
Опубликован методический материал к этой неделе: Преобразование типов C++, просьба ознакомиться до первого занятия. Релевантный материал лекций: указатели и адреса. Ко второму стоит освежить в памяти материал лекции про указатели на функции.
Ещё прошу ответственных студентов своей подгруппы, напомнить остальным, что в четверг в 8:00 в 202 будет лабораторная за прошлую неделю, когда отключили свет.
@dimanpro не стоит постить тут ответы к задачам, да ещё бонусным. Если есть вопросы, лучше подходить на консультации (мои, например, указаны здесь).
По вашему коду. В задаче написано, что приближение зависит напрямую от качества случайности. Вы сильно портите качество случайности операцией %
. Следует использовать получение из rand()
вещественного числа от 0 до 1, которое описано в Разговорнике.
srand
в этой задаче необязателен, по идее.
Антон Панченко, вы вместо файлов контрольной отправили в ответ файлы node.h
/node.cpp
…
В домашнем задании: неделя 8 требуется создать класс department, в котором надо определить поле для его названия. Но про конструктор, или про какие либо методы, изменяющие название ничего не сказано. Похоже на ошибку. Могу предположить, что, помимо прочего, предполагалось требовать определить ещё и конструктор инициализирующий это назваие.
Александр Мордвинцев, вы тоже в к/р не те файлы отправили.
Проверила к/р в своей подгруппе.
По д/з #7: Олег Витолс, Ксения Гуцько, не отправляйте, пожалуйста, архивы.
Вот, кстати, у нас с @Admin’ом ещё один вечный спор (кроме ++i vs. i++), это как писать параметр-массив у функции. @Admin пишет int a[]
, а я — int * a
. Сегодня в твиттере на эту тему высказался Стефан Лававей, один из лидирующих разработчиков реализации стандартной библиотеки в Microsoft Visual C++, а отретвитила его рекомендацию Алёна C++:
На странице курса добавлены материалы к текущей неделе.
Я настоятельно рекомендую всем студентам второго курса сделать домашнее задание по программированию до первого занятия на этой неделе. Основное внимание следует уделить тренировке в сборке и подключении библиотеки. Иначе ваши шансы что-то успеть на лабораторных на этой неделе сильно снизятся. Эта неделя единственная в семестре, когда я готов признать, что задания сложные.
Ко второму занятию этой недели требуется наличие выполненных двух третей задач первого занятия. Делайте выводы…