Предмет: Информатика,
автор: arseniy200334
Напишите программу которая последовасти натуральных чисел находит номер последнего элемента оканчивающиеся на цифру 8. Если в последовательности нет таких элементов, то ввести сообщение NO. Последовать формируется в программе посредством генерации случайных чисел. Элементы последовательности принимают значения от 0 до 30000. Количество чисел 100
Аноним:
У элементов последовательности нет номеров.
Номера есть у элементов массива.
Однако, можно говорить о том, каким по порядку рассматривается элемент последовательности.
Ответы
Автор ответа:
2
PascalABC.NET 3.4.2, сборка 1884 от 24.11.2018
Внимание! Если программа не работает, обновите версию!
begin
var (i, m):=(1, 0);
SeqRandom(100, 0, 30000)
.Foreach(t ->
begin
if t mod 10 = 8 then m := i;
Inc(i);
t.Print
end);
Println;
Println;
if m = 0 then Print('NO')
else m.Print
end.
Приложения:
Такова реализация в PascalABC.NET. Вместо последовательности хранится порождающая ее функция, которая при очередном обращении генерирует и возвращает один элемент. Вот он только (и сама функция) память занимают. В С# это же делает yield. Собственно, в PascalABC.NET это тоже делает yield.
PascalABC.NET - это совсем не тот Паскаль, который придумал Н.Вирт, не тот, что в 1984 году появился под именем Turbo Pascal и даже не тот Object Pascal, что в 1994 году появился в составе BorlandDelphi. Это язык более нового поколения, такой же, как Питон или .NET языки. Разработчики не стали писать очередной Питон, а использовали все хорошее, что было в Object Pascal и расширили язык, оснастив его всеми современными возможностями.
В результате получился немного уcеченный C#, зато дополненный вкусняшками из Питона и Haskell, что делает обучение программированию на нем простым и хорошо понятным даже в школе.
Плюс лаконичность кода, ускоряющая разработку программы. И полноценный компилятор, порождающий самостоятельные исполняемые файлы.
Получается, она подходит только для мгновенного использования?
То есть нельзя создать последовательность, вывести её на экран, затем отсортировать её и снова вывести на экран
Не совсем так. Если есть формула для получения членов последовательности, она будет генерироваться сколько угодно раз, но каждый раз просматриваться от начала. Такие последовательности называются в теории немутирующими. Если же последовательность мутирующая, то либо алгоритм должен быть однопроходным, либо ее нужно сохранить в массив. Например, ка в случае использования датчика случайных чисел или клавиатурного ввода.
С мутирующими последовательностями поступают так например, как вот я поступил в своем решении.
Понятно, спасибо)
Пожалуйста
Похожие вопросы
Предмет: Математика,
автор: lupyrdaria34
Предмет: Физкультура и спорт,
автор: ajsbjznsus
Предмет: Математика,
автор: galchonkmiah
Предмет: Алгебра,
автор: Rezn1k
Предмет: Математика,
автор: dama87