|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задачи третьего классаЕсли обрабатываются несколько массивов одновременно, то для каждого массива нужно выбрать подходящую схему перебора, завести свой индекс, следить, чтобы индекс не вышел за границы массива. В некоторых частных случаях для обработки нескольких массивов бывает достаточно одного индекса, потому что элементы массива обрабатываются "синхронно", то есть, зная индекс элемента одного массива, можно вычислить по некоторой формуле индекс соответствующего ему элемента другого массива. Если такой формулы установить не удается, то говорят, что массивы обрабатываются "асинхронно". Задача 1. Дан массив целых чисел. Необходимо сформировать второй массив, содержащий четные элементы первого массива, при этом расположить элементы во втором массиве а) на тех же позициях, что и в первом; б) сдвинуть к началу массива. Решение. В первом случае необходимо проверять каждый элемент первого массива на четность, использовав при этом любую из схем перебора по одному. При этом индекс у второго массива меняется таким же образом. Здесь элементы массива обрабатываются синхронно, достаточно одного индекса. Во втором случае массивы обрабатываются асинхронно, необходимо ввести свою переменную для индекса второго массива, которая будет изменять свое значение только в случае записи элемента в массив. Вариант 1. const nn = 30; var a, b: array [1..nn] of integer; i, n: integer; begin write (‘задайте количество элементов массива’); readln (n); for i:= 1 to n do begin read (a[i]); if a[i] mod 2 = 0 then b[i]:= a[i]; end; for i:= 1 to n do write (b[i], ‘ ‘); end. Вариант 2. const nn = 30; var a, b: array [1..nn] of integer; i, k, n: integer; begin write (‘задайте количество элементов массива’); readln (n); for i:= 1 to n do read (a[i]); k:= 0; {в массиве b нет еще элементов} for i:= 1 to n do if a[i] mod 2 = 0 then begin k:= k + 1; b[k]:= a[i]; end; for i:= 1 to k do write (b[i], ‘ ‘); end. Задача 2. Даны два массива целых чисел a и b. Необходимо получить третий массив c, для n = 5 следующего вида: a1 b5 a2 b4 a3 b3 a4 b2 a5 b1. Решение. Элементы массивов обрабатываются асинхронно. Заметим, что на нечетных позициях массива c располагаются элементы массива a в прямом порядке, а на четных позициях - элементы массива b в обратном порядке. const nn = 30; var a, b: array [1..nn] of integer; с: array [1.. 2*nn] of integer; i, k, n: integer; begin write (‘задайте количество элементов массива’); readln (n); writeln (‘задайте элементы массива а’); for i:= 1 to n do read (a[i]); writeln (‘задайте элементы массива b’); for i:= 1 to n do read (b[i]); for i:= 1 to n do begin c[2*i - 1]:= a[i]; c[2*i]:= b[n- i + 1] end; for i:= 1 to 2*n do write (c[i], ‘ ‘); end. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |