В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
marga23042002
marga23042002
08.03.2023 05:32 •  Информатика

Дана блок-схема. Какое значение будет иметь z на выходе, если x=31?

Показать ответ
Ответ:
Yakov10
Yakov10
10.11.2022 22:04
Ближе к началу координат та из точек, чей квадрат расстояния до начала координат x^2 + y^2 меньше. У меня описан алгоритм что_ближе, который принимает аргументами 4 вещественных числа - координаты точек и выводит сообщение о том, какая из точек ближе.

У меня для примера рассматриваются точки (1, 1) и (2, 0) - первая точка ближе, (4, 8) и (1, 7) - вторая точка ближе, и (3, 4) и (0, 5) - точки на одинаковом расстоянии.

Вы можете задавать значения и с клавиатуры, и записывать их сразу в текст программы, в зависимости от того, что требуется.

алг
нач
  что_ближе(1, 1, 2, 0)
  что_ближе(4, 8, 1, 7)
  что_ближе(3, 4, 0, 5)
кон
 
алг что_ближе(вещ x1, y1, x2, y2)
нач
  вещ d
  d := (x1*x1 + y1*y1) - (x2*x2 + y2*y2)
  выбор
    при d < 0: вывод "Первая точка ближе", нс
    при d > 0: вывод "Вторая точка ближе", нс
    иначе вывод "Точки на одинаковом расстоянии", нс
  все
кон
0,0(0 оценок)
Ответ:
mintgirl
mintgirl
07.03.2023 02:09
Средствами PascalABC.NET 3.2 эта задача решается очень просто.

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

// PascalABC.NET 3.2, сборка 1439 от 09.05.2017
// Внимание! Если программа не работает, обновите версию!

function IsFib(n:integer):boolean;
begin
  if (n=1) or (n=2) then Result:=true
  else begin
    Result:=false;
    (var n1, var n2):=(1,2);
    var Fib:integer;
    repeat
      Fib:=n1+n2;
      if Fib=n then begin Result:=true; break end;
      (n2,n1):=(Fib,n2)
    until Fib>n
    end;
end;

begin
  var L:=ReadSeqInteger('->',ReadInteger('n=')).ToLinkedList;
  L:=L.Where(x->not IsFib(x)).ToLinkedList;
  L.Println
end.

Пример
n= 9
-> 3 17 13 10 12 4 11 0 5
17 10 12 4 11 0

2. Несколько более длинное решение для желающих немного порулить удалением узлов.

Функция остается той же, а изменения делаются в главной программе.

begin
  var L:=ReadSeqInteger('->',ReadInteger('n=')).ToLinkedList;
  var a:=L.Where(x->IsFib(x)).ToArray; // список значений для удаления
  foreach var t in a do L.Remove(t); // собственно удаление узлов
  L.Println
end.

3. Бонус. Как это сделать без двусвязного списка (опять же, основная программа).

begin
  var a:=ReadSeqInteger('->',ReadInteger('n='))
      .Where(x->not IsFib(x)).ToArray;
  a.Println
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота