Конспект урока по информатике на тему "Массивы. Решение задач"

  • Разработки уроков
  • docx
  • 28.02.2018
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

урок посвящен решению задач на массивы. задача звучит следующим образом: Дан массив целых чисел. Проверить, есть ли в нем одинаковые элементы. Решить нужно двумя способами. первый способ: нужно заполнить массив вручную, второй способ: нужно заполнить массив случайным образом, чтоб компьютер сам генерировал значения.
Иконка файла материала массивы.docx
Тема «Массивы. Решение задач» Задача:  Дан массив целых чисел. Проверить, есть ли в нем одинаковые элементы. Алгоритм решения задачи:  Чтобы   проверить   каждый   элемент   массива   на   уникальность,   надо сравнить его с остальными элементами. Так первый элемент следует сравнить со вторым, третьим и т. д. до конца. После этого второй элемент ­ с третьим, четвертым и т. д. Второй элемент с первым сравнивать не надо, т.к. они уже сравнивались   при   оценке   уникальности   первого   элемента.   Когда   очередь дойдет до предпоследнего элемента, то он сравнивается только с последним. Последний же уже сравнивать не надо. Таким образом, количество итераций внешнего цикла на 1 меньше, чем элементов в массиве. Счетчик этого цикла ­ это   номер   элемента,  который   сравнивается   с   элементами   стоящими   после него. Внутренний цикл перебирает элементы от следующего за исследуемым до последнего.   На   данном   отрезке   элементы   массива   сравниваются   с исследуемым   элементом.   Если   какой­то   элемент   окажется   равен исследуемому, то значит, что в массиве есть одинаковые значения. Следует вывести соответствующее сообщение и завершить программу, т.к. дальше уже можно не проверять. Если программа в процессе выполнения циклов не завершилась, то значит, одинаковых элементов найдено не было. Следует вывести сообщение, что все элементы массива разные.const N = 10; var     arr: array[1..N] of byte;     i, k: byte; begin     randomize;     for i:=1 to N do begin         arr[i] := random(80);         write(arr[i]:3);     end;     writeln;       for i:=1 to N­1 do          for k:=i+1 to N do              if arr[i] = arr[k] then begin                 writeln('Есть одинаковые элементы');                 exit;             end;     writeln('Все элементы уникальны'); end Задача:  Заполнить   массив   случайными   числами,   вывести   его   на   экран.   Найти самую длинную последовательность чисел, упорядоченную по возрастанию.Вывести   ее   на   экран.   Если   таких   последовательностей   несколько   (самых длинных с одинаковой длиной), то вывести их все. Описание переменных:  i ­ индекс текущего элемента массива; l ­ длина текущей последовательности, упорядоченной по возрастанию; lmax ­ длина самой длинной последовательности, упорядоченной по  возрастанию; j ­ индекс текущего элемента выводимой на данный момент      последовательности. Алгоритм решения задачи:  Задачу можно разбить на три подзадачи: 1. Заполнение и вывод массива. 2. Определение длины самой длинной последовательности чисел,  упорядоченных по возрастанию. 3. Вывод всех упорядоченных по возрастанию последовательностей с  найденной в п. 2 длинной. Алгоритм определения длины: 1. Присвоить переменным lmax и l значение 1. 2. В цикле перебирать элементы массива, начиная со второго: 1. 2. если очередной элемент больше предыдущего, то увеличивать на 1 значение l; иначе: 1. 2. если l больше lmax, то присвоить lmax значение l, снова присвоить l единицу. Вывод всех самых длинных последовательностей, упорядоченных по возрастанию: 1. Снова просматриваем массив и находим длину текущей  последовательности, упорядоченной по возрастанию.2. Если эта длина равна lmax, то выводим элементы массива, начиная с i­l      randomize;     for i:=1 to N do begin     arr: array[1..N] of byte;     i, j, l, lmax: byte; до i­1 (с начала последовательности до предыдущего элемента). 3. const N = 45; 4. var 5. 6. 7. begin 8. 9. 10.        arr[i] := random(100); 11.        write(arr[i]:3); 12.    end; 13.    writeln; 14.  15.    lmax := 1; 16.    l := 1; 17.    for i:=2 to N do  18.        if arr[i] > arr[i­1] then 19.            l := l + 1 20.        else begin 21.            if l > lmax then 22.                lmax := l; 23.            l := 1; 24.        end; 25.    writeln(lmax); 26.    if lmax = 1 then exit; 27.  28.    l := 1; 29.    for i:=2 to N do  30.        if arr[i] > arr[i­1] then 31.            l := l + 1 32.        else begin 33.            if l = lmax then begin 34.                for j:=i­l to i­1 do 35.                    write(arr[j]:3); 36.                writeln; 37.            end; 38.            l := 1; 39.        end; 40.end.Пример выполнения программы: 62 6 11  2 78 37 99  8 80  3 59 71 85 59 46 66  1 43 89 67 48 72 88 57 82 62 51 14 6 88 47 79 96 98 97 58 50 60 58 84 98 69  2 46 12 4    3 59 71 85  47 79 96 98

Посмотрите также