(1 курс ФИИТ) CS101. Основы программирования — практика

Необязательно, там же нет такого требования.

Почему не работает такой код?

begin
  var s := '  11  / 12 /13  /  14';
  var ss := s.ToWords('/');
  ss := ss.Select(s -> s.Trim).ToArray;
end.

В 2016-м году в PABCNET полностью сломался алгоритм, который отличал вызов подпрограммы от адреса подпрограммы. В связи с этим, при вызове подпрограммы без аргументов лучше всегда писать скобки. В данном случае у Trim обязательно, у ToArray нет, но я бы писал на всякий случай.

Спасибо

Реализуйте класс TextStatistics для углублённой работы со статистикой текста (на основе БДП).

А на основе SortedSet можно? Оно на основе БДП=)

Вы уже задавали этот вопрос, и я на него отвечал.

Я такой вопрос точно не задавал и в обсуждении выше его не нашёл, так что прошу ответить мне.

Вы задавали вопрос на занятии «можно ли использовать SortedSet вместо БДП» в другом задании. Ответ: нет. Смысл заданий «сделайте X на основе БДП» в том, чтобы вы почувствовали как за счёт классов более низкоуровневые абстракции превращаются в более высокоуровневые. SortedSet это уже сама по себе достаточно высокоуровневая абстракция, так что смысла в этом намного меньше. Хотя она конечно менее высокоуровневая, чем TextStatistics.

Опубликовано 3-е и последнее ДЗ с дедлайном 30 мая (вечер).

Вопрос по поводу бонусного задания №4.

Реализуйте очередь с приоритетом (как в лабораторной работе #1 третьего модуля) на основе некоторого вида самобалансирующегося дерева.

Пишу реализацию на базе splay tree. Как происходит удаление элемента? Склюняюсь к варианту получать на вход п/п конкретное число, вытягивать его к корню, удалять и сливать его поддеревья. Или просто удалять корень и сливать его поддеревья? Таким образом, подпрограмма должна возвращать что-нибудь? - Удалённое значение или, например, true/false?

В Википедии приведено два варианта.

Первый

  1. Удалить элемент стандартным для БДП образом: заменить на самый правый элемент левого поддерева или самый левый правого и удалить узел, который содержал скопированное значение.

  2. Сделать splay для родителя к корню.

Второй

  1. Вытянуть удаляемый к корню, удалить, останутся два подерева.

  2. Слить два поддерева.

Можно выбрать любой вариант.

Опубликован последний тест с очень нетривиальными вопросами по ООП: повторите тему полиморфизм перед тем, как начать попытку.

На прошлом занятии встал вопрос, как превратить в строку результат применения к строке метода последовательности (он возвращает последовательность). Я предлагал делать свёртку (Aggregate). Однако проще использовать статический метод String.Concat.

Из 4 лабы реализация калькулятора с делением.

Деление на нуль следует фиксировать специальным флагом (дополнительное поле): если флаг взведён, то метод ToString должен выдавать на экран ERROR, иначе работать как раньше.

  calc.Digit(9);
  calc.Divide;
  calc.Digit(0);
  Writeln(calc); // 1
  calc.Plus;
  Writeln(calc); // 2
  calc.Digit(1);
  Writeln(calc); // 3
  calc.Result;
  Writeln(calc); // 4

Что где должен выводить метод ToString?

Хороший вопрос. Но лучший вопрос был бы, что калькулятор дальше должен делать, как его вернуть в нормальное (не-ERROR) состояние. Пока он в этом состоянии, ToString может всё время выдавать ERROR, например. А вот насчёт состояния: идея всего задания была в том, чтобы было похоже на настоящие калькуляторы. Я вот посмотрел на свой под Убунтой: они после деления на нуль игнорируют другие знаки операций и ждут пока введут другое число, которое и становится делителем. Ну и CE сбрасывает всё состояние, естественно, это просто.

Тогда в нашем случае после деления на нуль при нажатии на операции нужно давать ERROR, а когда начинает вводиться число, то показывать его и считать его делителем.

На странице курса начинает публиковаться график добора баллов. Пока там есть моя подгруппа и подгруппа Натальи Николаевны.

Добор в моей подгруппе: 1.9-1, 15:00, ауд. 202.

В моей подгруппе допуска нет у следующих студентов.

  • Вегиев А.
  • Бедросов А.
  • Денисенко А.
  • Панин В.

На доборе баллов (см. выше) им будут предложены задачи по материалам контрольных, которые они не писали или написали меньше, чем на половину баллов.

Остальные студенты могут спокойно готовиться к экзамену. Баллы я выставлю до экзамена.

Артем Михайлович, здравствуйте. Дело в том, что у всех проверена 1 лабораторная "Повторение: методы строк, записи ", а у меня нет. Обратите, пожалуйста, при проверке на это внимание. Заранее спасибо.

1 лайк

Вроде выставил всё, кроме бонусов, в Мудл. Желательно проверить.

А бонусы когда будут?