|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задачи первого классаРешение задач первого класса сводится к установлению того, как обрабатывается каждый элемент массива или указанные элементы. Затем выбирается подходящая схема перебора элементов, в которую вставляются операторы обработки элементов массива. Пример 1. Найдите среднее арифметическое элементов массива. Решение. Задача сводится к отысканию суммы, для чего вводится дополнительная переменная S, в которой накапливается сумма путем прибавления очередного элемента массива, т.е. S:= S + a[i]. При этом можно использовать любую линейную схему перебора с единичным шагом. После нахождения суммы необходимо ее поделить на количество элементов, получим среднее арифметическое. const nn = 30; var a: array [1..nn] of integer; i, n, S: integer; begin write (‘задайте количество элементов массива’); readln (n); for i:= 1 to n do read (a[i]); S:= 0; for i:= 1 to n do S:= S + a[i]; write (‘среднее арифметическое равно ’, S/n) end. Пример 2. Определите количество четных элементов массива с нечетными порядковыми номерами. Решение. Сначала надо определить условие, по которому будут отбираться элементы массива. Это должны быть четные элементы (делятся на 2 без остатка) a[i] mod 2 = 0 и имеющие нечетные порядковые номера (номер элемента совпадает с его индексом) i mod 2<>0. Поскольку нас интересуют элементы, удовлетворяющие обоим условиям, соединены эти условия будут оператором and. Выполнение этого условия должно проверяться для всех элементов массива, т.е. используется любая из схем перебора по одному, и в случае выполнения условия счетчик элементов должен увеличиваться на 1. const nn = 30; var a: array [1..nn] of integer; i, n, S: integer; {S - счетчик элементов} begin write (‘задайте количество элементов массива’); readln (n); for i:= 1 to n do read (a[i]); S:= 0; for i:= 1 to n do if (a[i] mod 2 = 0) and (i mod 2 <> 0) then S:= S +1; writeln (‘S= ‘, S) end. Пример 3. Найдите максимальный (минимальный) элемент массива. Решение этой задачи можно организовать, используя алгоритм, предложенный при изучении циклов, а именно: считаем кандидатом на максимальный (минимальный) первый элемент массива, затем в цикле сравниваем очередной элемент массива с кандидатом на максимальный (минимальный), если очередной элемент больше (меньше) кандидата, то меняем значение кандидата на значение данного элемента массива. const n = 30; var a: array [1..n] of integer; i, max: integer; begin for i:= 1 to n do read (a[i]); max:= a[1]; for i:= 2 to n do if a[i] > max then max:= a[i]; writeln (‘максимальный элемент массива равен ’, max) end. Во втором варианте решения этой задачи запоминается не значение максимального элемента, а его порядковый номер (индекс), по которому элемент однозначно определяется, а значит, можно будет определить и величину максимального элемента. const n = 30; var a: array [1..n] of integer; i, imax: integer; begin for i:= 1 to n do read (a[i]); imax:= 1; for i:= 2 to n do if a[i] > a[imax] then imax:= i; writeln (i:2,‘-ый элемент массива - максимальный, его величина равна ’, a[imax]); end. Упражнения. 1. Установите, какую задачу решает приведенный ниже фрагмент программы. Перепишите его с использованием оператора while. s:= 1; max:= a[1]; for i:= n downto 2 do if max < a[i] then begin max:= a[i]; s:= 1 end else if max = a[i] then s:= s + 1; 2. В городе N закусочных. Известны расстояния от каждой закусочной до цетра города. Нужно указать пару закусочных, расположенных дальше всего друг от друга, если переходы от закусочной к закусочной осуществляются через центр. 3. Последовательность определяется по следующим правилам: a0 = 9; ak+1 = 3ak4 + 4ak3 для любого k > 0. Заданы номера элементов этой последовательности i и j. Определите в записи какого элемента входит больше цифр девять. 4. В одномерном массиве целых чисел найдите максимальный среди элементов, являющихся четными, и минимальный среди элементов, кратных А. 5. Автомат, приклеивающий этикетки, работает со светлыми, зелеными и темными бутылками, в которые наливаются светлые и темные жидкости. Темные бутылки с темной жидкостью автомат разбивает. Сколько бутылок из 1997 штук разобьет автомат? Вид бутылки и жидкости в ней задается случайным числом. 6. В массиве хранятся натуральные числа из интервала от 10 до 50, сформированные случайным образом. Выведите его на экран построчно, где каждая строка содержит столько звездочек, каково значение соответствующего элемента массива. 7. В одномерном массиве хранятся случайные натуральные числа от -10 до 37. Напечатайте содержимое соответствующего элемента массива в виде столбца звездочек вверх (в случае положительного элемента) или вниз (в случае отрицательного элемента) от базовой строки. Например, для А = {-2, 3, 2, -3, 4, -2} получим: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |