Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Основные задачи по темеНа пошлых занятиях мы разобрали алгоритмы ввода, задания и вывода массивов. Сегодня рассмотрим основные задачи обработки массивов. Задачи: Найти наибольший элемент одномерного массива А8 введенного с клавиатуры. Найти сумму, произведение всех элементов двумерного массива An x m, заданного случайным образом. Элементы массива находятся в (0;1) Найти количество четных элементов массива A5, заданного по формуле a[i]=5i2
Для решения первой задачи заведем новую переменную, назовем max. В начале программы положим в max первый элемент массива, а потом, сравнивая все элементы с max, будем класть туда тот, который оказался больше чем max. Замечание! Первоначально обязательно нужно положить в max элемент массива. program _; const n=8; type vector=array [1..n]of integer; var a:vector; I,max:integer;
begin {алгоритм ввода одномерного массива} For i:=1 to n do Begin Writeln(‘введите а[’,I,’]’); Readln(a[i]); End; {нахождение наибольшего} max:=a[1]; for i:=2 to n do if a[i]>max then max:=a[i]; writeln('max=',max); readln; end.
Для решения второй задачи, необходимо завести две переменные: для суммы-S и для произведения-Р. program _; uses crt;
const n=6; m=3;
var a:array [1..m;1..n] of real; I,j:integer; S,p:real;
Begin Randomize; { задание массива} For i:=1 to m do For j:=1 to n do A[I,j]:=random; {нахождение суммы} s:=0; for i:=1 to m do for j:=1 to n do s:=s+a[I,j]; {нахождение произведения} p:=1; for i:=1 to m do for j:=1 to n do p:=p*a[I,j]; writeln(‘сумма всех элементов =’,s:10:5); writeln(‘произведение всех элементов =’,p:10:5); readln; end.
Для решения задачи необходимо завести переменную, в которой будет лежать количество черных элементов- Kol program _; const n=5; var a:array [1..n] of integer; I, kol:integer;
begin { задание массива} For i:=1 to m do A[I,j]:=5*sqr(i); {нахождение количества четных} Kol:=0; for i:=1 to m do if a[i] mod 2=0 then kol:= kol+1; writeln(‘количество четных элементов =’,kol); readln; end. Дома: Найти минимальный элемент двумерного массива В2х5. Дан массив А 30. Найти сумму всех четных элементов массива и произведение всех отрицательных. Найти в массиве А3 х9 количество элементов из (10;20). Лекция 23. Сортировка массива.
Сортировка массива- это упорядочение элементов массива по возрастанию или убыванию. Существуют несколько способов сортировки. Мы рассмотрим только два. Линейная сортировка массива по возрастанию. Пусть дан массив А(3 8 2 1 7) Рассмотрим элементы массива, начиная с первого. Найдем среди элементов тот, который меньше первого и поменяем их местами. Продолжим просматривать массив, если найдем элемент, меньший того, что стоит на первом месте, то опять поменяем их местами. Т.О. получим массив: А(1 8 2 3 7) Далее будем просматривать массив, начиная со второго элемента. Если найдется элемент меньше второго, то меняем их местами. Т.О. получим массив: А(1 2 8 3 7) Далее будем просматривать массив, начиная с третьего элемента. Если найдется элемент меньше третьего, то меняем их местами. Т.О. получим массив: А(1 2 3 8 7) Продолжаем процедуру, пока не дойдем до элемента под номером N-1, где N-размер массива. В итоге получим массив А(1 2 3 7 8). Итак, чтобы написать программу на Turbo Pascal нам понадобятся два циклических оператора FOR с параметрами I -определяет «рабочую часть» J - для работы в «рабочей части», обращения к каждому элементу Для того чтобы поменять элементы местами, используем следующий алгоритм: begin r:=a[i]; a[i]:=a[j]; a[j]:=r; end;
Где r- переменная для временного хранения значения a[i]; Для краткости не будем вводить массив с клавиатуры, а объявим его как постоянную. Текст программы: Program _; Uses crt; Сonst n=5 Type vector=array [1..n] ofinteger; Const a:vector=(12,8,7,9,0) Var i,j,r:integer;
Begin clrscr; {вывод массива} for i:= 1 to 5 do write(a[i],' '); {сортировка методом отбора} writeln; for i:=1 to N-1 do For j:=i+1 to n do if a[j]<a[i] then {меняем местами} begin r:=a[i]; a[i]:=a[j]; a[j]:=r; end; печатаем новый массив} textcolor(5); for i:= 1 to 5 do write(a[i],' '); readln; End.
Сортировка методом пузырька. Это один из самых популярных методов сортировки, основан на том, что в процессе сортировки более «легкие» элементы массива постепенно «всплывают». Особенностью этого метода является сравнения элемента не со всеми, а только с соседними. Пуст имеем массив А(3 6 5 4 7) Просматриваем массив от второго элемента до конца и, начиная с конца, меняем местами элементы, если правый меньше левого. Т.О. получаем массив А(3 4 6 5 7) Далее просматриваем массив, начиная с третьего. И меняем соседние элементы, если правый меньше левого. Т.О. получаем массив А(3 4 5 6 7) Продолжаем просматривать массив до последнего элемента. Чтобы запрограммировать данный алгоритм на Turbo Pascal, используем два цикла FOR, первый с параметром I-отделяет «рабочую часть», второй for j:=…downto… чтобы работать внутри рабочей части, сравнивать соседние элементы. Сам массив опишем как типизированную констану. Program _; Uses crt; Type vector=array [1..5] of byte; const a:vector=(34,7,1,7,2)
Var i,j,r:integer;
Begin clrscr; {вывод массива} textcolor(15); for i:= 1 to 5 do write(a[i],' '); {сортировка методом пузырька} writeln; for j:=2 to 5 do For i:=5 downto j do if a[i]<a[i-1] then {меняем местами} begin r:=a[i]; a[i]:=a[i-1]; a[i-1]:=r; end; {печатаем новый массив} textcolor(5); for i:= 1 to 5 do write(a[i],' '); readln; End.
Дома: ü Просмотреть другие методы сортировки. Подготовить доклады. (Каждый!) ü Повторить задачи лекции 3 по теме «массивы»
Лекция 24.
|