Fruitsekta.ru

Мир ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ввод массива через процедуру паскаль

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие № 5. Одномерные массивы в Паскале

Одномерные массивы в Паскале

Объявление массива

Массивы в Паскале используются двух типов: одномерные и двумерные.
Определение одномерного массива в Паскале звучит так: одномерный массив — это определенное количество элементов, относящихся к одному и тому же типу данных, которые имеют одно имя, и каждый элемент имеет свой индекс — порядковый номер.
Описание массива в Паскале (объявление) и обращение к его элементам происходит следующим образом:

var dlina: array [1..3] of integer; begin dlina[1]:=500; dlina[2]:=400; dlina[3]:=150; .

Объявить размер можно через константу:

Инициализация массива

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

const a:array[1..4] of integer = (1, 3, 2, 5);

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

Ввод с клавиатуры:

writeln (‘введите кол-во элементов: ‘); readln(n); <если кол-во заранее не известно, - запрашиваем его>for i := 1 to n do begin write(‘a[‘, i, ‘]=’); read(a[i]); . end; .


✍ Пример результата:

Вывод элементов массива

var a: array[1..5] of integer; <массив из пяти элементов>i: integer; begin a[1]:=2; a[2]:=4; a[3]:=8; a[4]:=6; a[5]:=3; writeln(‘Массив A:’); for i := 1 to 5 do write(a[i]:2); <вывод элементов массива>end.

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

Функция Random в Pascal

Для того чтобы постоянно не запрашивать значения элементов массива используется генератор случайных чисел в Паскаль, который реализуется функцией Random . На самом деле генерируются псевдослучайные числа, но суть не в этом.

var f: array[1..10] of integer; i:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); < интервал [0,9] >write(f[i],’ ‘); end; end.

Для вещественных чисел в интервале [0,1):

var x: real; . x := random;

Числа Фибоначчи в Паскале

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

Получили формулу элементов ряда.

var i:integer; f:array[0..19]of integer; begin f[0]:=1; f[1]:=1; for i:=2 to 19 do begin f[i]:=f[i-1]+f[i-2]; writeln(f[i]) end; end.

На данном примере, становится понятен принцип работы с числовыми рядами. Обычно, для вывода числового ряда находится формула определения каждого элемента данного ряда. Так, в случае с числами Фибоначчи, эта формула-правило выглядит как f[i]:=f[i-1]+f[i-2] . Поэтому ее необходимо использовать в цикле for при формировании элементов массива.

Максимальный (минимальный) элемент массива

Псевдокод:

Поиск максимального элемента по его индексу:

Читать еще:  Сумма элементов строки матрицы паскаль

Пример:

Поиск в массиве

Рассмотрим сложный пример работы с одномерными массивами:

var f: array[1..10] of integer; flag:boolean; i,c:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); write(f[i],’ ‘); end; flag:=false; writeln(‘введите образец’); readln(c); for i:=1 to 10 do if f[i]=c then begin writeln(‘найден’); flag:=true; break; end; if flag=false then writeln(‘не найден’); end.

Рассмотрим эффективное решение:

Задача: найти в массиве элемент, равный X , или установить, что его нет.

Алгоритм:

  • начать с 1-го элемента ( i:=1 );
  • если очередной элемент ( A[i] ) равен X , то закончить поиск иначе перейти к следующему элементу.

решение на Паскале Вариант 2. Цикл While:

Поиск элемента в массиве

Предлагаем посмотреть подробный видео разбор поиска элемента в массиве (эффективный алгоритм):

Пример:

Циклический сдвиг

Программа:

Перестановка элементов в массиве

Рассмотрим, как происходит перестановка или реверс массива.

Решение:

Псевдокод:

Программа:

Выбор элементов и сохранение в другой массив

Решение:


Вывод массива B:

writeln(‘Выбранные элементы’); for i:=1 to count-1 do write(B[i], ‘ ‘)

Сортировка элементов массива

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

Выполнение на Паскале:

for i:=1 to N-1 do begin for j:=N-1 downto i do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; end; end;

  • в массиве ищется минимальный элемент и ставится на первое место (меняется местами с A[1]);
  • среди оставшихся элементов также производится поиск минимального, который ставится на второе место (меняется местами с A[2]) и т.д.

Выполнение на Паскале:

for i := 1 to N-1 do begin min:= i ; for j:= i+1 to N do if A[j] i then begin c:=A[i]; A[i]:=A[min]; A[min]:=c; end; end;

    Выбирается и запоминается средний элемент массива (присвоим X):

  • Инициализируем две переменные (будущие индексы массива): L:=1, R:=N (N — количество элементов).
  • Увеличиваем L и ищем первый элемент A[L], который больше либо равен X (в итоге он должен находиться справа).
  • Уменьшаем R и ищем элемент A[R], который меньше либо равен X (в итоге он должен находиться слева).
  • Смотрим, если L X do R:= R — 1; if L

    Читать еще:  Транспонирование матрицы паскаль
    Posted in

    См. пузырьковая сортировка.
    При второй итерации цикла (согласно вашим рисункам и коду ) нет надобности сравнивать первый элемент со вторым. Снова вы всех путаете =)

    admin

    Именно поэтому в коде : for j:=N-1 downto i do

    downto i — то есть мы доходим сначала до первого элемента, потом до второго и т.д.

    Bronislav

    Смотрите. Ваш код работает. Но работает не так, как вы пишете перед этим. Он просеивает минимальный элемент с конца через весь массив до первой позиции (первого индекса если хотите). А не так как вы пишете: «При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой.» Соответственно вашему коду и вашим рисункам на второй итерации не сравнивается первый элемент (минимальный) со вторым, а не последний (который вообще не факт что максимальный) с предпоследним. Вот об чем речь. Или код меняйте или описание алгоритма перед кодом.

    Владимир

    А как насчёт странного способа поменки оандомням образом, конечно это долго , но все таки есть
    Var
    A: array[1..10] of integer;
    I,e,r,r1: integer;
    Begin
    While i at 02:05

    В сохранении в другой массив ошибка. Надо поменять местами счётчик и команду сохранения. В массиве В нет элемента 0.

    Ввод и вывод элементов массива в Паскале

    Как организовать дистанционное обучение во время карантина?

    Помогает проект «Инфоурок»

    Описание презентации по отдельным слайдам:

    Массивы Ввод и вывод элементов массива Учитель информатики и ИКТ МБОУ «Лицей «Дубна» Жевтило Ирина Аскольдовна

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

    С помощью команды присваивания program vvod_mass1; var a: array [1..4] of word; begin a[1]:=2; a[2]:=21; … end. Совет. Добавьте сюда свои заметки докладчика.

    Ввод с клавиатуры program vvod_mass2; var a: array [1..10] of integer; i: integer; begin for i:=1 to 10 do read(a[i]); … end. Числа вводятся через пробел или через Enter Совет. Добавьте сюда свои заметки докладчика.

    Ввод с клавиатуры program vvod_mass2; var a: array [1..10] of integer; i: integer; begin for i:=1 to 10 do readln (a[i]); … end. Числа вводятся через Enter Совет. Добавьте сюда свои заметки докладчика.

    Ввод с помощью датчика случайных чисел program vvod_mass4; var b: array [1..10] of integer; i: integer; begin for i:=1 to 10 do b[i]:=random(21); … end. Случайные числа от 0 до 20 Совет. Добавьте сюда свои заметки докладчика.

    Читать еще:  Служебные слова языка паскаль таблица

    Ввод в программе с помощью Const program vvod_mass4; const a: array [1..5] of integer = (5,4,9,1,2); begin … end. Элементы массива в программе нельзя изменять Совет. Добавьте сюда свои заметки докладчика.

    Ввод в программе с помощью Var program vvod_mass4; Var a: array [1..5] of integer = (5,4,9,1,2); begin … end. Элементы массива в программе можно изменять Совет. Добавьте сюда свои заметки докладчика.

    Вывод номеров и значений элементов массива for i:=1 to n do writeln(i, mas[i]:8); Элементы массива выводятся в столбик Совет. Добавьте сюда свои заметки докладчика.

    Вывод значений элементов массива for i:=1 to n do write (mas[i], ‘ ‘); Элементы массива выводятся в строку через пробел Совет. Добавьте сюда свои заметки докладчика.

    Вывод значений элементов массива for i:=1 to n do write (mas[i] : 5); Элементы массива выводятся в строку через 5 пробелов Совет. Добавьте сюда свои заметки докладчика.

    Бесплатный
    Дистанционный конкурс «Стоп коронавирус»

    В данной работе рассмотрены различные способы ввода и вывода элементов массива на языке программирования Паскаль. Способы ввода с помощью команды присваивания, датчика случайных чисел, операторов Read, Readln, ввод в программе в разделе описания переменных и постоянных с помощью Const, Var. Вывод элементов массива в столбик, в строку через пробел и с указанным интервалом.

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

    • Жевтило Ирина АскольдовнаНаписать 197 23.12.2019

    Номер материала: ДБ-874027

    Добавляйте авторские материалы и получите призы от Инфоурок

    Еженедельный призовой фонд 100 000 Р

      17.12.2019 78
      15.12.2019 75
      06.12.2019 40
      06.12.2019 187
      05.12.2019 50
      03.12.2019 269
      29.11.2019 59
      29.11.2019 121

    Не нашли то что искали?

    Вам будут интересны эти курсы:

    Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.

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

  • Ссылка на основную публикацию
    Adblock
    detector