Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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.

Date: 2016-06-08; view: 422; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию