Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Работа с одномерными массивамиСодержание книги
Поиск на нашем сайте
Пример 5.5 Составить программу сложения двух векторов. Вектор в программе может быть представлен в виде одномерного массива. Пусть заданы два одномерных массива а и b, состоящие из n элементов. В результате сложения двух векторов получается массив такого же размера, каждый элемент которого равен сi = аi + bi. В программе должны быть организованы циклы для ввода одномерного массива а, для ввода одномерного массива b, для расчета каждого элемента результирующего массива с и для вывода результата расчета. program slogen; {Сложение 2-х одномерных массивов} uses crt; const n = 10; Var i,sum: integer; a,b,c: array [ 1.. n ] of integer; Begin clrscr; gotoxy(3,1); write('Введите массив а'); for i:= 1 to n do {Ввод массива аi} Begin gotoxy(1+5*i,2); readln(a[i]) end; gotoxy(3,3); write('Введите массив b'); for i:= 1 to n do {Ввод массива bi} Begin gotoxy(1+5*i,4); readln(b [i]) end; for i:= 1 to n do c[i]:= a[i] + b[i]; {Расчет элементов массива сi} gotoxy(3,9); writeln('Суммарный вектор'); for i:= 1 to n do {Вывод массива сi} Begin gotoxy(1+5*i,10); write(c[i]) End End. Одномерные массивы а, b, с описаны в разделе описания переменных. Для обращения к каждому элементу массива использовался оператор цикла с параметром i, где i - пробегает все значения от 1 до n, определяя тем самым каждый элемент массива. Процедуры clrscr и gotoxy (i,k) описаны, модуле crt, поэтому за заголовком программы следует uses - фраза. Clrscr -процедура гашения экрана. Процедураgotoxy (i,k) перемещает курсор в i-тую позицию k-той строки экрана. Параметры процедуры, i и k- величины типа integer. В этой программе процедура gotoxy (i,k) используется для наглядного ввода и вывода массивов. Элементы массива а и b: а[1], а[2], а[3], а[4],..., а[-0] и b[1], b[2], b[3], b[4],..., b[10], вводятся в позициях 6, 11, 16, 21,..., 51 строк 2 и 3 соответственно. Результат - массив с - выводится в позициях 6, 11, 16, 21,..., 51 строки 10. Пример 5.6 Составить программу подсчета суммы только тех элементов массива, целая часть которых - нечетная. Ввод и обработка элементов массива производится в одном цикле. Функция trunc (a[ i ]) - выделяют целую часть каждого элемента. Функция odd - вырабатывает значение TRUE - если целая часть элемента массива - нечетное число, и этот элемент попадает в сумму. Оператор writeln (odd (trunc(x)) - выдает на печать: TRUE - если x - нечетное; FALSE - если x - четное. Program sum; coust n=100; var a: array [1..n] of real; s: real; n, k, i: integer; Begin s: =0; writeln ('введите n 100'); readln (nk); for i:=1 to nk do Begin writeln ('введ.', i, '- й элемент массива'); readln (a[ i ]); if odd (trunc (a[ i ]) then s: = s + a[ i ]; end; writeln ('Сумма нечетных элементов = ', s); End.
Пример 5.7 Определить, содержит ли заданный массив число, равное s. Необходимо разработать программу, которая обеспечит ввод с клавиатуры десяти чисел и сохранит их в некотором одномерном массиве. Затем программа должна запросить у пользователя ввод еще одного числа. После ввода данного числа программа осуществит проверку элементов массива на наличие в них числа, равного введенному, и, если такое есть, выдаст соответствующее сообщение на экран. То есть пользователь получит информацию о том, содержится ли последнее введенное число в массиве. program poisk; {Последовательный поискв массиве} const n = 10; var i,s,r: integer; a: array [ 1.. n ] of integer; Begin for i:= 1 to n do {Ввод одномерного массива а} Begin write('Введите ',i,'-й элемент массива '); readln(a [i]) end; write(‘Введите число для поиска'); readln(s); for i:= 1 to n do Begin if a[i] = s then Begin r:= r + 1; writeln('Обнаружено ',r,'-e вхождение числа ',s,' в массив а в позиции ',i); end; end; if r <>0 then writeln('Число ',s,' встречается в массиве а ',r,' раз') Else writeln('Число ',s,' не встречается в массиве а’) End. Перед оператором ввода readln(a[i]) выполняется оператор вывода writeln('Введите ',i,'-й элемент массива '), который представляет собой подсказку для пользователя при вводе исходной информации. При i = 1 на экране высветится: Введите 1-й элемент массива маркер остановится в конце выведенной строки, ЭВМ приостановит выполнение программы до момента ввода пользователем численной информации. При i = 2 на экране высветится информация: Введите 2-й элемент массива и так далее до конца выполнения цикла. Пример 5.8 Найти минимальный и максимальный члены последовательности а, состоящей из 10 элементов. Присвоим переменным min и max значение первого элемента и далее будем перебирать все элементы последовательности от 2 до n, сравнивая аi с max и с min. Если аi окажется больше, чем max, то max присваивается значение аi. Если аi окажется меньше, чем min, то min присваивается значение аi. По окончании цикла max примет значение наибольшего элемента последовательности, a min - наименьшего. program minmax; {Поиск миним. и максим. элемента} const n = 10; Tyре list= 1..n; Vаг i: list; min, max: integer; a: array [list] of integer; Begin for i:= 1 to n do Begin write('Введите ',i,'-й элемент массива '); readln(a [i]) end; min:= a[1]; max:= min; for i:= 2 to n do Begin if a[i] > max then max:= a[i]; if a[i] < min then min:= a[i]; end; write ('Максимальный элемент = ', max, ' Минимальный элемент = ',min) End. В программе показано, что заданная в разделе описания типов переменная list может быть использована в качестве граничной пары в описании массива. Пример 5.9 Все члены последовательности х из 10 элементов сдвинуть на одну позицию вправо. Каждому последующему элементу хi присваивается значение предыдущего хi-1. Для хi такого значения не существует, следовательно, х1 = 0. program sdvig; {Сдвиг массива на одну позицию вправо} const n = 10; Type mass = array [1.. n] of integer; {Определение массивового типа} Var i: integer; x: mass; Begin for i:= 1 to n do Begin write('Введите ',i,'-й элемент массива '); readln(x[i]) end; for i:= n downto 2 do x[i]:= x[i-1]; x[1]:= 0; writeln('Результат'); for i:= 1 to n do write(x[i]:4); End. В программе определен новый тип данных - массивовый, состоящий из десяти компонент целого типа. Пример 5.10 Даны три массива:a(n), b(m), c(k). Массив a(n)- упорядочен, a[i]<a[i+1]. Из a(n) - удалить m элементов с номерами, хранящимися в b(m),(m<n). Затем в массив a(n) - вставить k элементов, не нарушая упорядоченности из массива c(k). n-m+k 100 Program prim; label 3; Type mas = array [1..100] of integer; Var a, b, c: mas; i, j, p, n, m, k:integer; Begin write(' введите n, m, k'); readln(n, m, k); writeln ('введите массив a); for i:=1 to n do readln (a[i]); writeln ('введите массив b'); for i:=1 to m do readln (b[i]); writeln ('введите массив c'); for i:=1 to k do readln (c[i]); { удаление элементов из a } for i=:1to m do Begin for i:=b[i] to n-1 do a[i]:=a[i+1]; n:=n-1; end; { вставка элементов в a } for j:=1 to k do Begin if c[j]>=a[n] then {если c[j] - наибольший - его ставим в конец массива.} Begin a[n+1]:=c[j]; n:=n+1; end; Else for i:=1 to n do if a[i]>c[j] then Begin for p: =n down to i do a[p+1]:=a[p]; a[i]:=c[j]; n:=n+1; go to 3; end; 3: end; for i:=1 to n do writeln (a[i]); End.
Пример 5.11 Составить программу упорядочивания элементов массива х, состоящего из nd элементов, расположив их в порядке возрастания в том же массиве. 1) Упорядочивание элементов массива по возрастанию можно выполнить, используя прием нахождения наименьшего элемента. В исходной последовательности найдем наименьший элемент и запомним его порядковый не мер к. Элемент хi поменяем местами с элементом хk. После этого наименьший элемент окажется на первом месте. Такую же процедуру необходимо проделать с оставшимися элементами от 2 до nd. В этом случае наименьший элемент xk нужно поменять местами со вторым элементом. На втором месте окажется второй по величине элемент. Процедуру поиска наименьшего элемента нужно повторить nd-1 раз. Последний элемент сам с собой можно не сравнивать. В алгоритм поиска минимального элемента вводим блок для запоминания порядкового номера этого элемента. Такой метод упорядочивания элементов массива называют методом перестановок. program perestan; {Упорядочивание элементов массива методом перестановок} const nmax = 100; Type mass = array [1.. nmax] of real; Var i, j, k, nd: integer; xmin: real; x: mass; Begin read(nd); for i:= 1 to nd do Begin write(' Введите ',i,'-й элемент массива '); readln(x[i]) end; for i:= 1 to nd - 1 do Begin xmin:= x[i]; k:= i; for j:= i+1 to nd do if x[j] < xmin then Begin xmin:= x[j]; k:=j end; x[k]:= x[i]; x[i]:= xmin end; for i:= 1 to nd do write(x[i]:8:2) End. B программе под массив x отводится 100 ячеек памяти. Очевидно, что переменная nd не может быть больше 100. Хорошо было бы дополнить программу проверкой nd при вводе. Если введено значение nd большее 100, дать соответствующее сообщение и вернуться на начало ввода. Пример 5.12 Составить программу упорядочивания элементов массива x, состоящего из nd элементов, расположив их в порядке возрастания в том же массиве. Использовать пузырьковый метод. Сортировка множества данных является одной из центральных проблем обработки данных. Задачу упорядочивания элементов массива можно решать разными способами. Пузырьковый метод заключается в том, что последовательно сравниваются между собой два соседних элемента и меняются местами, если xj-1 > xj. program puzirok; {Упорядочивание элементов массива методом сравнения двух соседних элементов} const nmax =100; Type mass = array [1.. nmax] of real; var i, j, nd: integer; у: real; x: mass; Begin read(nd); for i:= 1 to nd do Begin write('Введите ',i,'-й элемент массива '); readln(x[i]) end; for i:= 2 to nd do Begin for j:= nd downto i do if x[j - 1] > x[j] then Begin у:= x[j - 1]; x[j - 1]:= x[j]; x[j]:= у end; end; for i:= 1 to nd do write(x[i]:8:2) End. При каждом значении i наименьший элемент перемещается к i - 1 позиции в массиве.
|
||||
Последнее изменение этой страницы: 2017-02-17; просмотров: 273; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.231.128 (0.008 с.) |