Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Название: работа с массивами чисел

Поиск

ЦЕЛЬ РАБОТЫ:

1. Получение практических навыков в работе с массивами

2. Знакомство с алгоритмами нахождения суммы, произведения элементов массива и нахождения наименьшего и наибольшего элемента массива.

 

ПОСТАНОВКА ЗАДАЧИ:

Для конкретного варианта составить массив исходных данных. Написать программу, которая работает с любым допустимым набором данных.

Входную информацию и результаты счета вывести на диск, снабдив их соответствующими заголовками.

 

СОДЕРЖАНИЕ ОТЧЕТА:

1. Задание на лабораторную работу.

2. Блок-схему алгоритма и текст программы.

3. Результаты работы программы.

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ:

1. Исходные данные должны включать и положительные числа, отрицательные и нули;

2. Пример программы.

Дан двумерный массив, содержащий 5 строк и 4 столбца. Элементами массива являются вещественные числа. Найти сумму элементов массива.

ПРОГРАММА:

program lab8;

const n=5; m=4;

type str=array[1..n,1..m] of real;

var a:str;

sum:real;

k,i,j:integer;

f:text;

begin

assign(f,'lab8.dat'); rewrite(f);

writeln('ВВЕДИТЕ ЭЛ-ТЫ МАССИВА А(',n:1, ',', m:1, ')');

(* ВВОД МАССИВА *)

for i:=1 to n do

for j:=1 to m do

read(a[i,j]);

(* ВЫВОД ЭЛ-ОВ МАССИВА НА ЭКРАН И В ФАЙЛ *)

writeln; writeln(' ':10,'ИСХОДНЫЙ МАССИВ');

writeln(f); writeln(f,' ':10,'ИСХОДНЫЙ МАССИВ');

for i:=1 to n do

for j:=1 to m do

begin

write(' A[',i:1, ',',j:1,']=',a[i,j]:8:3);

write(f,' A[',i:1, ',',j:1,']=',a[i,j]:8:3);

if (j mod 4 =0) then begin

writeln; writeln(f)

end

end;

(* НАХОЖДЕНИЕ СУММЫ ЭЛЕМЕНТОВ МАССИВА *)

sum:=0;

for i:=1 to n do

for j:=1 to m do

sum:=sum+a[i,j];

writeln; writeln(f);

writeln(' СУММА ЭЛЕМЕНТОВ МАССИВА =',sum:8:3);

writeln(f,' СУММА ЭЛЕМЕНТОВ МАССИВА =',sum:8:3);

writeln; writeln(f);

writeln(' ПРОГРАММУ ВЫПОЛНИЛ ИВАНОВ И.И.');

writeln(f,' ПРОГРАММУ ВЫПОЛНИЛ ИВАНОВ И.И.');

close(f)

end.

 

РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ:

ИСХОДНЫЙ МАССИВ

A[1,1]= 5.100 A[1,2]= 30.000 A[1,3]= 5.900 A[1,4]= 9.300

A[2,1]= 3.400 A[2,2]= 5.600 A[2,3]= -11.500 A[2,4]= 8.300

A[3,1]= 125.800 A[3,2]= 17.100 A[3,3]= 19.500 A[3,4]= 34.000

A[4,1]= 1.000 A[4,2]= 0.500 A[4,3]= 0.400 A[4,4]= 345.000

A[5,1]= -4.700 A[5,2]= 45.700 A[5,3]= 18.900 A[5,4]= 12.700

 

СУММА ЭЛЕМЕНТОВ МАССИВА = 672.000

ПРОГРАММУ ВЫПОЛНИЛ ИВАНОВ И.И.

Контрольные вопросы:

1. Способы описания массивов?

2. Как организуется ввод и вывод массивов?

ЛАБОРАТОРНАЯ РАБОТА №8

 

НАЗВАНИЕ: УПОРЯДОЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА

 

ЦЕЛЬ РАБОТЫ:

1. Получение практических навыков в использовании оператора цикла.

2. Знакомство с алгоритмами упорядочения.

ПОСТАНОВКА ЗАДАЧИ:

Изучив алгоритмы упорядочения, выбрать один из них. Написать программу, которая работает с любым доступным набором данных. Входную информацию и результаты счета вывести на рабочий диск и на экран, снабдив их соответствующими заголовками.

 

СОДЕРЖАНИЕ ОТЧЕТА

1. Задание на лабораторную работу.

2. Блок-схему алгоритма и текст программы.

3. Результаты работы программы.

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ:

Рассмотрим массив целых и действительных чисел A(1),...,A(N).

Пусть требуется переставить элементы этого массива так, чтобы после перестановки они были упорядочены по не убыванию (возрастанию).

A(1)<=A(2)<=A(3)<=...<=A(N).

Эта задача называется задачей сортировки или упорядочения массива (эту же задачу можно рассматривать применительно к упорядочению по не возрастанию (убыванию)):

A(1)>=A(2)>=A(3)>=...>=A(N)).

Для решения этой задачи можно воспользоваться, например, следующими алгоритмами:

а) Найти элемент массива, имеющий наименьшее значение, переставить его с первым элементом, затем проделать то же самое, начав со второго элемента и т.д. (сортировка выбором). При решении задачи используются два цикла. Во внутреннем цикле находится наименьший элемент и его порядковый номер. После окончания цикла первый элемент из рассматриваемой части массива записывается на место наименьшего, а наименьший - на место первого. Указанные действия повторяются во внешнем цикле, начиная сначала с первого элемента массива, затем со второго и т.д.

б) Последовательным просмотром чисел A(1),...,A(N) найти 'I' такое, что A(I)>A(I+1). Поменять местами A(I) и A(I+1), возобновить просмотр с элемента A(I+1) и т.д. Тем самым наибольшее число передвинется на последнее место. Следующие просмотры начинать опять сначала, пока в процессе просмотра массива не будет перестановок (сортировка обменом).

 

Пример программы упорядочения массива по не убыванию (возрастанию) методом выбора.

ПРОГРАММА:

program lab91; (* УПОРЯДОЧЕНИЕ МЕТОДОМ ВЫБОРА *)

var a:array[1..50] of integer;

i,j,n,amax,k:integer; f:text;

begin

assign(f,'lab91.dat');rewrite(f); writeln;

write('ВВЕДИТЕ КОЛ-ВО ЭЛЕМЕНТОВ МАССИВА n=');read(n);

writeln('ВВЕДИТЕ ',n,' ЭЛЕМЕНТОВ МАССИВА');

for i:= 1 to n do read(a[i]);

writeln(f,' ИСХОДНЫЙ МАССИВ ');

writeln(' ИСХОДНЫЙ МАССИВ ');

for i:=1 to n do

begin

write(f,' A[',i:2,']=',a[i]:3); write(' A[',i:2,']=',a[i]:3);

if i mod 5=0 then

begin (* ВЫВОД ПО 5 ЭЛ-ОВ В СТРОКЕ *)

writeln(f);writeln

end

end;

for i:=1 to n-1 do

begin

amax:=a[i];k:=i;

for j:=i to n do

begin

if a[j]<=amax then

begin

amax:=a[j];k:=j

end;

end;

a[k]:=a[i];a[i]:=amax

end;

writeln; writeln(f);

writeln(' МАССИВ ПОСЛЕ СОРТИРОВКИ ');

writeln(f,' МАССИВ ПОСЛЕ СОРТИРОВКИ ');

for i:=1 to n do

begin

write(' A[',i:2,']=',a[i]:3);

write(f,' A[',i:2,']=',a[i]:3);

if (i mod 5=0)or(i=n) then

begin

writeln;writeln(f)

end

end;

writeln(f);writeln(f);

writeln(f, 'ПРОГРАММУ СОСТАВИЛ ИВАНОВ И.И.');close(f)

end.

 

Результаты работы программы

ИСХОДНЫЙ МАССИВ

A[ 1]= 56 A[ 2]= 74 A[ 3]= 23 A[ 4]= 10 A[ 5]= 6

A[ 6]= 45 A[ 7]= 73 A[ 8]= 4 A[ 9]= 62 A[10]= 6

A[11]= 1 A[12]= 50

 

МАССИВ ПОСЛЕ СОРТИРОВКИ

A[ 1]= 1 A[ 2]= 4 A[ 3]= 6 A[ 4]= 6 A[ 5]= 10

A[ 6]= 23 A[ 7]= 45 A[ 8]= 50 A[ 9]= 56 A[10]= 62

A[11]= 73 A[12]= 74

ПРОГРАММУ СОСТАВИЛ ИВАНОВ И.И.

 

Пример программы упорядочения массива по не возрастанию (убыванию) методом обмена.

ПРОГРАММА:

program lab92; (* УПОРЯДОЧЕНИЕ МЕТОДОМ ОБМЕНА *)

var a:array[1..50] of integer;

i,r,n,k:integer; f:text;

begin

assign(f,'lab92.dat');rewrite(f);writeln;

write('ВВЕДИТЕ КОЛ-ВО ЭЛЕМЕНТОВ МАССИВА n=');read(n);

writeln('ВВЕДИТЕ ',n,' ЭЛЕМЕНТОВ МАССИВА');

for i:= 1 to n do read(a[i]);

writeln(f,' ИСХОДНЫЙ МАССИВ ');

writeln(' ИСХОДНЫЙ МАССИВ ');

for i:=1 to n do

begin

write(f,' A[',i:2,']=',a[i]:6);

write(' A[',i:2,']=',a[i]:6);

if i mod 5=0 then { ВЫВОД ПО 5 ЭЛ-ОВ В СТРОКЕ }

begin

writeln(f);writeln

end

end;

repeat

k:=0;

for i:=1 to n-1 do if a[i]<a[i+1] then

begin

r:=a[i];a[i]:=a[i+1];a[i+1]:=r;k:=k+1

end;

until k=0;

writeln; writeln(f);

writeln(' МАССИВ ПОСЛЕ СОРТИРОВКИ ');

writeln(f,' МАССИВ ПОСЛЕ СОРТИРОВКИ ');

for i:=1 to n do

begin

write(' A[',i:2,']=',a[i]:6);

write(f,' A[',i:2,']=',a[i]:6);

if (i mod 5=0)or(i=n) then

begin

writeln;writeln(f)

end

end;

writeln(f);writeln(f);

writeln(f,'ПРОГРАММУ СОСТАВИЛ ИВАНОВ И.И.');close(f)

end.

 

Результаты работы программы

ИСХОДНЫЙ МАССИВ

A[ 1]= 34 A[ 2]= 5 A[ 3]= 67 A[ 4]= 2 A[ 5]= 9

A[ 6]= 0 A[ 7]= 56 A[ 8]= 32 A[ 9]= 17 A[10]= 56

A[11]= 48 A[12]= 3 A[13]= 66 A[14]= 5

МАССИВ ПОСЛЕ СОРТИРОВКИ

A[ 1]= 67 A[ 2]= 66 A[ 3]= 56 A[ 4]= 56 A[ 5]= 48

A[ 6]= 34 A[ 7]= 32 A[ 8]= 17 A[ 9]= 9 A[10]= 5

A[11]= 5 A[12]= 3 A[13]= 2 A[14]= 0

ПРОГРАММУ СОСТАВИЛ ИВАНОВ И.И.

Контрольные вопросы:

1. Какие Вы знаете методы сортировки массивов?

2. В чем отличительная особенность каждого метода?

ЛАБОРАТОРНАЯ РАБОТА №9

 



Поделиться:


Последнее изменение этой страницы: 2016-12-10; просмотров: 427; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.248.150 (0.008 с.)