Автор работы: Пользователь скрыл имя, 02 Ноября 2011 в 20:05, курсовая работа
Задача
Заполнить массив длиной 50 элементов последовательностью случайных положительных вещественных чисел.
Найти минимальный и максимальный элементы массива и вывести их на экран.
Отсортировать массив по возрастанию методом вычеркивания.
Исходный и отсортированный массивы вывести в текстовый файл.
Цель
Познакомится с методами сортировки массивов, научится находить минимальный и максимальный элементы, сортировать массив, выводить данные в текстовый файл.
Пермский
Государственный
Технический Университет
Кафедра
МСА
по теме
выполнил студент
Механошин А.В.
ЭТФ, гр. ЭСу-01
Пермь 2002
Познакомится с методами сортировки массивов, научится находить минимальный и максимальный элементы, сортировать массив, выводить данные в текстовый файл.
Метод состоит из N этапов. На каждом этапе в исходном массиве
Z[N] ищется минимальное значение, которое переписывается в
ячейку Y[I] целевого массива (I – номер этапа), а вместо него в
исходном массиве записывается достаточно большое число
(элемент как бы вычеркивается – он уже не может быть
минимальным). Здесь же подсчитывается число итераций
(количество вычеркнутых
для вывода.
program sort_3 (input,output);
uses crt;
var
Z:array [1..50] of real;
Y:array [1..50] of real;
A:array [1..50] of real;
I,N,J,iter,min_pos:integer;
max,min,min1:real; name:string;
F: text;
begin
clrscr; N:=50; {всего элементов в массиве}
for I:=1 to N do
begin
Z[i]:=random(30); {генератор случ. чисел}
A[i]:=Z[i] {формируется исходный массив}
end;
writeln ('ИСХОДНЫЙ МАССИВ');
write ('[');
for I:=1 to N do
begin
write(' ',Z[i]:4:2)
end;
write (' ]');
writeln;
max:=Z[1]; min1:=Z[1];
for I:=1 to N do
begin if max<z[i] then max:=z[i];
if min1>z[i] then min1:=z[i]
{нахождение мин.и макс.
end;
writeln;
writeln ('МАКС. ЭЛЕМЕНТ МАССИВА = ',max:4:2);
writeln ('МИН. ЭЛЕМЕНТ МАССИВА = ',min1:4:2);
iter:=0;
for J:=1 to N do
begin
min:=Z[1]; {запоминаем первый элемент}
min_pos:=1; {и его позицию}
for I:=2 to N do
begin
if Z[i]<min then
begin
{минимальным становится z[i]}
min:=Z[i]; min_pos:=i;
iter:=iter+1 {счетчик итераций}
end;
end;
{сохраняем мин.элемент,
Y[J]:=Z[min_pos]; Z[min_pos]:=9999;
{записываем большое число
end;
writeln;
writeln ('ОТСОРТИРОВАННЫЙ МАССИВ');
write ('[');
for I:=1 to N do
begin
write (' ',Y[i]:4:2)
end;
writeln (' ]');
writeln;
writeln('КОЛИЧЕСТВО ИТЕРАЦИЙ =',iter);
writeln;
writeln ('НАЗВАНИЕ
ФАЙЛА ДЛЯ ВЫВОДА РЕЗУЛЬТАТОВ:'
readln (name);
assign (F,name);
rewrite (F); {открываем файл для вывода результатов}
writeln(F,' ':30,'СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ');
writeln(F,' ':4,'№ п/п',' ':20,'исх.массив',' ':20,'отсорт.массив');
for I:=1 to N do
writeln (F,' ':5,i,' ':27,a[i]:4:2,' ':27,Y[i]:4:2);
writeln (F,' ':10,'минимальный элемент массива = ',min1:4:2);
writeln (F,' ':10,'максимальный элемент массива = ',max:4:2);
close (F) {закрываем файл для вывода результатов}
end.
Вывод
данных (текстовый
файл)
СОРТИРОВКА
МАССИВА ПО ВОЗРАСТАНИЮ
№ п/п исх.массив отсорт.массив
1 0.00 0.00
2 0.00 0.00
3 25.00 0.00
4 6.00 0.00
5 8.00 0.00
6 20.00 1.00
7 9.00 2.00
8 4.00 2.00
9 11.00 4.00
10 12.00 4.00
11 2.00 4.00
12 14.00 4.00
13 2.00 4.00
14 25.00 6.00
15 1.00 7.00
16 8.00 8.00
17 27.00 8.00
18 11.00 8.00
19 23.00 8.00
20 9.00 9.00
21 20.00 9.00
22 25.00 9.00
23 21.00 9.00
24 9.00 11.00
25 4.00 11.00
26 9.00 12.00
27 13.00 13.00
28 7.00 14.00
29 24.00 14.00
30 8.00 14.00
31 14.00 15.00
32 4.00 17.00
33 26.00 19.00
34 8.00 20.00
35 23.00 20.00
36 29.00 21.00
37 14.00 21.00
38 26.00 23.00
39 24.00 23.00
40 0.00 23.00
41 4.00 23.00
42 4.00 24.00
43 15.00 24.00
44 0.00 25.00
45 17.00 25.00
46 0.00 25.00
47 23.00 26.00
48 19.00 26.00
49 23.00 27.00
50 21.00 29.00
минимальный элемент массива = 0.00
максимальный элемент массива = 29.00