Как найти последовательность чисел паскаль

Работа с последовательностями в Паскаль abc.net

Содержание:

  • Пример работы с последовательностью
  • Генерация и формирование последовательностей
  • Вывод последовательностей
  • Решение задач
    • Создание и вывод

Пример работы с последовательностью

Последовательности — это абстрактный набор данных, которые можно перебирать.

  • В отличие от других структур последовательности не хранятся в памяти (поэтому «абстрактный»), т.е. память используется только в конкретный момент времени, когда происходит перебор значений последовательности, и, как правило, нам необходим только 1 элемент (в единицу времени).
  • Последовательностью может быть, например, последовательность чисел:

    арифметическая прогрессия: 1 3 5 7 9

    или

    геометрическая прогрессия: 1 2 4 8 16

    Тип последовательности: Sequence of Real, Sequence of Integer

    Наиболее близким типом данных к последовательности является массив.

    Рассмотрим стандартный пример работы с числовым рядом, БЕЗ использования последовательности:

    Пример: Вывести сумму 10 чисел

    Без использования последовательности:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      begin
      var s:=0.0;
      for var i:=1 to 10 do
        begin
          var x:=ReadReal;
          s+=x;
        end;
      print(s)
      end.

      Данный стиль написания программы считается плохим, т.к. основной алгоритм смешивается с вводом (ReadReal).
      пример
      Ввод данных необходимо отсоединить от основного алгоритма. Для этого используем последовательность:

      // накапливаем последовательность, переменная q хранит ее
      var q:=ReadSeqReal(10); 
      var s:=0.0;
      foreach var x in q do
        s+=x;
      print(s)
      end.

      пример работы с последовательностью паскаль абц

      Теперь алгоритм находится отдельно от ввода, программа стала более модифицируема.
      Остается оформить основной алгоритм в виде функции:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
      function Sum(q: sequence of real):real;
      begin   
      var s:=0.0;     
      foreach var x in q do
        s+=x;
      result:=s
      end;
      begin
      print(Sum(ReadSeqReal(10)))
      end.
    • У последовательности нельзя изменить какой-либо отдельный элемент
    • Генерация и формирование последовательностей

      Итак, мы рассмотрели, как сформировать последовательность через ввод с клавиатуры:

      • ReadSeqInteger
      • ReadSeqReal

      Теперь рассмотрим, как генерируются последовательности.

      Генераторы последовательностей:
      Range(a,b: integer): sequence of integer

      print(Range(1,10)); // [1,2,3,4,5,6,7,8,9,10]

      Range(a,b,step: integer): sequence of integer

      print(Range(1,10,2)); // [1,3,5,7,9]

      Range(c1,c2: char): sequence of char

      print(Range('a','k')); // [a,b,c,d,e,f,g,h,i,j,k]

      Partition(a,b: real; n: integer): sequence of real

      print(Partition(0.0, 6.0, 4)); // делим поровну на 4 части [0, 1.5, 3, 4.5, 6]

      SeqRandomInteger(n: integer[; a,b: integer]): sequence of integer;

      var q:=SeqRandomInteger(5,10,20);
      print(q); // [12,18,16,14,16]

      SeqRandomReal(n: integer[; a,b: real]): sequence of real;

      var q:=SeqRandomReal(3, 1.0, 5.0);
      print(q); // [4.98996168374548,2.22339218166815,2.81110574389394]

      Seq(params a: array of T): sequence of T;

      foreach var x in Seq (1,3,8) do
          print(x*x); // 1 9 64

      SeqFill(count: integer; x: T): sequence of T;

      begin
      var q:=SeqFill(7,5);
      print(q); // [5,5,5,5,5,5,5] 
      end.

      Следует учесть, что последовательности формируются каждый раз, как только с ними организовывается цикл или работает метод:

      генерация последовательностей в Паскаль abc net

      Вывод последовательностей

      Print(delim: string := ' '): sequence of T;

      var q:=SeqRandomInteger(5,10,20);
      q.Print('/'); // 16/11/13/10/13

      Println(delim: string := ' '): sequence of T;

      Решение задач

      Создание и вывод

      Задание seq 1: Создайте целые числа последовательности от -20 до 30 с шагом 3 (Range).

      Пример вывода:

      [-20,-17,-14,-11,-8,-5,-2,1,4,7,10,13,16,19,22,25,28] 
      

      [файл: seq01.pas]

      Задание seq 2: Создайте целые числа последовательности от -4 до 4 с шагом 2 (Range)

      [файл: seq02.pas]

      Задание seq 3: Создайте N случайных чисел последовательности от -50 до 100 (SeqRandom)

      Пример вывода:

      введите n 
      >>15
      [-23,13,-27,2,46,-26,10,92,60,-9,75,28,85,7,18]
      

      [файл: seq03.pas]

      Задание seq 4: Создайте N чисел последовательности, заполненные 5 (SeqFill)

      [файл: seq04.pas]

      Задание seq 5: Создайте N чисел последовательности c вводом

      [файл: seq05.pas]

      Пример: Написать функцию, которая в последовательности ищет количество максимальных элементов

      Выполнение:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
      function findCountMax(a: sequence  of integer):integer;
      begin
      var k:=a.Max();
        foreach var i in a do
          if i=k then result+=1;
      end;
      begin
        var c:=Seq(1,5,2,10,1,10);
        println('кол-во макс ',findCountMax(c));
        c.Print();
      end.

      Задание seq 6: Написать функцию, которая в последовательности ищет сумму элементов

      Пример вывода:

      1 5 2 10 1
      сумма  19 
      

      [файл: seq06.pas]

      Задание seq 7: Написать функцию, которая в последовательности ищет среднее арифметическое элементов

      Пример вывода:

      1 6 2 -10 1 18
      среднее арифметическое =  3 
      

      [файл: seq07.pas]

      Тоже какая-никакая последовательность
      Тоже какая-никакая последовательность

      Добрый день, товарищи!

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

      Начнем!

      Для начала: наша последовательность будет выглядеть следующим образом:

      первые 100 треугольных чисел
      первые 100 треугольных чисел

      Эта последовательность довольно интересна и называется “треугольными числами”. Смотрите, каждое число больше другого сначала на 1, потом на 2, потом на 3, 4, 5,6….. и так вплоть до 100. Вот поэтому сегодня мы выведем эти числа с помощью нового для нас цикла While.

      1. Переменные

      Последовательность чесел в Pascal. Треугольные числа

      Нам нужны две переменные. Переменная s будет использоваться для нахождения и вывода последовательности, а i будет мотать наш цикл.

      На всякий случай присвоим переменной s значение 0, чтобы быть уверенными, что программа будет работать правильно.

      2. Синтаксис While

      Цикл похож на For, но в этом случае он гораздо более гибкий, потому что шаг цикла задает программист.

      Пример Вайла
      Пример Вайла

      В данном примере синтаксиса мы запускаем счетчик до 100. Соответственно у цикла будет 100 витков. Для этого и понадобилась переменная i.

      На русском While это “пока”, поэтому прочитать этот код можно таким образом:

      Пока (i меньше или равно 100) делать

      *какой-то код*

      3. Создаем нашу последовательность

      На этом примере повторены первые две строки кода с циклом Вайл
      На этом примере повторены первые две строки кода с циклом Вайл

      Последовательность мы выведем по формуле выше. Соответственно, чем больше значение i тем больше будет наше число в последовательности.

      Сразу его и выводим, для наглядности.

      Еще одно существенное отличие Вайла от Фора, это то, что шаг цикла нужно задавать самостоятельно, и, чаще всего, в конце цикла.

      Так мы и сделаем, прибавив к i единицу.

      4. Посмотрим, что получилось

      Цикл While вывел нам то, что мы от него ожидали, последовательность, как на картинке выше:

      Последовательность чесел в Pascal. Треугольные числа

      Весь код нашей небольшой программы будет выглядеть так:

      Последовательность чесел в Pascal. Треугольные числа

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

      Чтож, а сейчас спасибо за просмотр, скоро будет полноценное знакомство с циклом While, заходите на огонек.

      Последовательность чесел в Pascal. Треугольные числа

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

      По возможности я попросил бы подписаться и оценить публикацию. Сейчас это критически важно для развития канала. Так то!

      Доброго вам всем здоровьица в эти трудные времена!

      Урок 12. Циклы и числовые последовательности

      Просмотров 3.3к. Обновлено 23 ноября 2020

      Урок их серии: «Язык программирования Паскаль«.

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

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

      Алгоритм для обработки последовательнойтей относится к одному из двух типов: поиск, проверка условий.

      Для последовательностей характерно, что в каждый момент времени нам доступен только один элемент последовательности. Поэтому все алгоритмы строятся с учетом однократного последовательного просмотра. 

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

      Пример 1. Вводится последовательность из N целых чисел. Найти сумму всех отрицательных чисел.

      Переменные:

      n — количество чисел;
      i — переменная цикла;
      x — очередное число;
      sum — сумма отрицательных чисел.

      program primer_1;
      Var i,n,x,sum:integer;
      Begin
        Writeln('Введите длину последовательности N= ');
        Readln(n);
        Sum:=0;
        For I:=1 to n do
          Begin
            Writeln('Введите ', i, '-ое число: ’);
            Readln(x);
            if x < 0 then sum:=sum+x
          end; 
        If sum = 0 
          then writeln('Отрицательных чисел нет.’)
          Else writeln(‘Сумма отрицательных чисел = ’, sum);
      End.

      Пример 2. Вводится последовательность ненулевых чисел, 0 – конец последовательности. Определить, сколько раз последовательность меняет знак.

      Переменные:

      old — предыдущее число;
      new- обрабатываемое число;
      k — количество смен знака ;
      i — порядковый номер числа в последовательности.

      program primer_2;
      Var old, new: real;
          k: integer;
      Begin
        Write('Введите первое число: ');
        Readln(old);
        Write('Введите второе число: ’);
        Readln(new);
        k:=0; i:=2;
        Repeat
          If new*old < 0 then k := k+1;
          old:=new;
          i:=i+1;
          Write(‘Введите ',i, '-ое число:’);
          Readln(new);
        Until new = 0;
        If k > 0 
          then  writeln('Последовательность меняет знак  ',k,'  раз')
          else writeln('Последовательность  не меняет знак ’);
      end.


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

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

      Следующий урок: Подпрограммы в языке Паскаль

      Здесь приведены примеры программ и алгоритмов, используемых в курсе Основы программирования для студентов 1 курса ФИИТ мехмата ЮФУ

      Редактировать

      Последовательности – опредление

      Последовательность – набор элементов, которые можно перебирать один за другим.

      Последовательность:

      • Вообще говоря не хранится в памяти целиком
      • Задает алгоритм получения значений одно за другим
      • В каждый момент в памяти одно значение
      • Цикл по последовательности – цикл foreach
      • Массивы и списки – разновидности последовательностей

      Пользовательские генераторы последовательностей

      function Arithm(n: integer; a0,h: real): sequence of real;
      begin
        var x := a0;
        loop n do
        begin
          yield x;
          x += h;
        end;
      end;
      
      begin
        Arithm(10,11,3).Println;
        foreach var x in Arithm(10,11,3) do
          Print(x);
      end.
      

      Оператор yield возвращает значение из генератора и запоминает место, на котором мы остановились в функции. При вычислении следующего значения код продолжает выполняться с запомненного места.

      Генераторы бесконечных последовательностей

      function inf: sequence of integer;
      begin
        while True do
          yield 1;
      end;
      
      function Take(s: sequence of integer; n: integer): sequence of integer;
      begin
        var i := 1;
        foreach var x in s do
        begin
          yield x;
          i += 1;
          if i > n then break;
        end;
      end;
      
      begin
        Take(inf,10).Print;
      end.
      

      Простые задачи на последовательности

      Задача 1. Симметрична ли последовательность

      a.SequenceEqual(a.Reverse);
      

      Задача 2. Все ли элементы последовательности различны

      a.Count = a.Distinct.Count;
      

      Задача 3. Совпадают ли первая и вторая половина последовательности длины n

      var n2 := n div 2;
      a.Take(n2).SequenceEqual(a.Skip(n2));
      

      Задача 4. Найти второй максимум последовательности

      a.OrderDescending.Distinct.Skip(1).First;
      

      Задача 5. Функция проверки x на простоту

      function IsPrime(x: integer) := (2..x.Sqrt.Round).All(i -> x mod i <> 0);
      

      Задача 6. Количество простых чисел, меньших n

      function IsPrime(x: integer) := (2..x.Sqrt.Round).All(i -> x mod i <> 0);
      
      begin
        var n := 50000;
        (2..n).Where(IsPrime).Count.Println;
        MillisecondsDelta.Println;
      end.
      

      Задача 7. Табулирование значений функции

      PartitionPoints(1,2,10).PrintLines(x -> $'{x,4:f1} {Sin(x),7:f4}');
      

      0 / 0 / 0

      Регистрация: 27.12.2013

      Сообщений: 21

      1

      Задача: найти последовательность чисел

      27.12.2013, 19:54. Показов 1730. Ответов 2


      Студворк — интернет-сервис помощи студентам

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

      Задание выполнить с использованием любого цикла:
      С клавиатуры последовательно вводится N чисел. Определить, есть ли в последовательности отрицательные числа. В случае положительного ответа определить порядковый номер первого из них. А в случае отрицательно ответа на экран вывести сообщение следующего вида: Не было введено ни одного отрицательного числа.
      Обратите внимание, что количество чисел (N) будет вводиться пользователем после запуска программы.
      Числа вводятся пользователем и считываются программой в цикле.



      0



      newyork7776

      351 / 344 / 279

      Регистрация: 21.05.2013

      Сообщений: 1,312

      28.12.2013, 01:34

      2

      Лучший ответ Сообщение было отмечено Bamp как решение

      Решение

      for to do

      Кликните здесь для просмотра всего текста

      Pascal
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      var i,n,k,q,a:integer;
      begin
        k:=0;a:=0;
        Write('Enter number = ');Readln(n);
        for i:=1 to n do
          begin
            Write('Enter number [',i,'] = ');Readln(q);
            if ((q<0) and(a=0)) then  begin inc(k);a:=i;end;
          end;
          if (k=0) then Writeln('All number + ')
          else Writeln('First number - = ',a);
      readln;
      end.

      while do

      Кликните здесь для просмотра всего текста

      Pascal
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      var i,n,k,q,a:integer;
      begin
        k:=0;a:=0;i:=1;
        Write('Enter number = ');Readln(n);
        while (i<=n) do
          begin
            Write('Enter number [',i,'] = ');Readln(q);
            if ((q<0) and(a=0)) then  begin inc(k);a:=i;end;
            Inc(i);
          end;
        if (k=0) then Writeln('All number + ')
          else Writeln('First number - = ',a);
      readln;
      end.

      repeat until

      Кликните здесь для просмотра всего текста

      Pascal
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      
      var i,n,k,q,a:integer;
      begin
        k:=0;a:=0;i:=1;
        Write('Enter number = ');Readln(n);
        repeat
          begin
            Write('Enter number [',i,'] = ');Readln(q);
            if ((q<0) and(a=0)) then  begin inc(k);a:=i;end;
            Inc(i);
          end;
          until (i>n);
        if (k=0) then Writeln('All number + ')
          else Writeln('First number - = ',a);
      readln;
      end.



      1



      0 / 0 / 0

      Регистрация: 27.12.2013

      Сообщений: 21

      29.12.2013, 16:14

       [ТС]

      3

      Спасибо!



      0



      IT_Exp

      Эксперт

      87844 / 49110 / 22898

      Регистрация: 17.06.2006

      Сообщений: 92,604

      29.12.2013, 16:14

      Помогаю со студенческими работами здесь

      Найти наименьшее из четных чисел, входящих в последовательность A[1]-1, A[1], A[2], …, A[n] и количество нечетных чисел
      Дан целочисленный массив A(N) Найти наименьшее из четных чисел, входящих в последовательность…

      Вводится последовательность из 15 целых чисел. Найти количество четных чисел
      Ребят помогите пожалуйста . В Паскале не селён а вот тут надо работы сдать.
      Вводится…

      Вводится произвольная последовательность целых чисел,заканчивающаяся нулем. Найти среднее арифметическое четных чисел
      Вводится произвольная последовательность целых чисел,заканчивающаяся нулем. Найти среднее…

      С клавиатуры вводится последовательность дробных чисел(окончание ввода-0) найти сумму всех чисел,количество отрицательных и количество положительных.
      В общем,ребята. Помогите написать код,буду очень признателен.
      С клавиатуры вводится…

      Искать еще темы с ответами

      Или воспользуйтесь поиском по форуму:

      3

      Добавить комментарий