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


#125

fixd


#126

Артем Михайлович, исправьте, пожалуйста, время сдачи 2 бонусного задания (оно завтра закрыться должно, а не сегодня)


#127

Я могу, в принципе,а почему вы решили, что должно завтра? Просто любопытно…


#128

Раньше все во вторник закрывалось + это бонусное вроде и выложено было во вторник. Мы вам про это на лабе сказали в субботу и вы согласились…


#129

Да я-то согласился, но потом понял, что не понял, с чем…

Ну, поменял, в общем, но на самом деле, не из чего не следует, что надо…


#130

Если формат вывода должен совпадать, то чем заполнить четвёртый столбик?


#131

Объясните, пожалуйста, почему не работает такой код?

type
  DNode<T> = class
  public 
    
    /// Поле данных
    data: T;
    
    /// Поле связи с предыдущим узлом
    prev: DNode<T>;
    
    /// Поле связи со следующим узлом
    next: DNode<T>;
    
    /// <summary>
    /// Инициализирует новый экземпляр узла двусвязного списка
    /// со значением dt поля данных и ссылками prev, next на соседние узлы
    /// </summary>
    /// <param name="dt">Значение поля данных узла</param>
    /// <param name="prev">Сслыка на предыдущий узел</param>
    /// <param name="next">Сслыка на следующий узел</param>
    constructor(dt: T; prev, next: DNode<T>);
    begin
      data := dt;
      self.prev := prev;
      self.next := next;
    end;
  end;

/// Тип для облегчения работы с двусвязными списками
type
  DList<T> = (DNode<T>, DNode<T>);

/// Создание узла двусвязного списка
function MkDNode<T>(dt: T; prev: DNode<T> := nil; next: DNode<T> := nil):= new DNode<T>(dt, prev, next);

/// Создание двусвязного списка по массиву заданных элементов
function CreateDList<T>(params a: array of T): DList<T>;
begin
  var firstD: DNode<T> := nil;
  if (a = nil) or (a.Length = 0) then
  begin
    Result := Rec(firstD, firstD);
    exit;
  end;
  
  firstD := MkDNode(a[0]);
  var lastD := firstD;
  
  for var i := 1 to a.Length - 1 do
  begin
    lastD := MkDNode(a[i], lastD);
    lastD.prev.next := lastD;
  end;
  
  Result := Rec(firstD, lastD);
  
end;

begin
  Write(CreateDList&<real>.Item1 = nil);
end.

Но всё работает, если вместо одной строчки вывода написать две таких:

var empty := CreateDList&<real>;
Write(empty.Item1 = nil);

#133

@Ilya раз вы уже удалили отвечу только про цель. Можно считать, что это разминка перед реализацией операции добавления головы первого в хвост второго: можете такое реализовать, на его основе легко делаются split / merge из прошлой работы.

Ну, логично предположить, что misc.


#134

На этой неделе не будет домашнего задания, а в следующую субботу у вас не будет занятий вообще (в том числе, непр. математики). Готовьтесь к катанию на лошадях НАМ!


#135

Кстати, нам говорили, что 3 бонусное могут продлить, так как “Домашнего задания нет, нам нечего делать во время НАМ”. Его будут продлевать?


#136

Аналогичный вопрос.


#137

Судя по явке на вчерашнюю лекцию это точно сказано…

Ну раз говорили, то продлил до 12. Больше продлений не будет.


#138

Я залил неполное решение за 5 минут до прошлого дедлайна. Теперь я никак не смогу дополнить свой ответ, там одна попытка.

Имхо, надо было продлевать до 23.00, а не после закрытия уже. А то как-то несправедливо выходит…

Ну или дать Попытку 2.


#139

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


#140

Да, спасибо, теперь можно редактировать ответ.


#141

Подскажите, пожалуйста, частота слова - это количество таковых, встречаемых на миллион слов? “Количество вхождений слова в файл” - это отношение количество данных слов к общему числу слов в файле?


#142

Количество вхождений это не отношение, как мне кажется. А просто количество. Ну то есть для твоего сообщения и слова ‘слов’ количество вхождений это 3.


#143

Количество это не отношение, а частота вполне может быть отношением.

Как я понимаю, в этой задачи не играет роли, как конкретно вычислили эту величину. Важно, что чем больше эта величина, тем чаще слово встречается в некотором тексте.


#144

3 бонусное задание, 2 номер.

Создайте новый текстовый файл из слов файла words.txt, начинающихся с указанного символа. Указание. Напишите строковый предикат для проверки и используйте его в методе массива FindAll. Используйте метод записи/класса в качестве предиката.

Не понятно указание про метод записи/класса. Т.е. какого типа должно быть поле записи/класса и как в дальнейшем реализовать метод?


#145

@KVA заменил это указание другим: «циклы не использовать».