Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Текст программы




Алгоритм

Должен содержать следующие шаги:

  1. Открытие входного и выходного файлов. Текстовый входной файл связывается с набором данных с вещественными числами 'D:\LAB1\DATF.TXT' и открывается для чтения. Выходной файл связывается с новым набором данных 'UMNIК5.RES' (т.к. без указания пути – значит в текущем каталоге) и открывается для записи.
  2. Ввод количества строк массива. Контроль на попадание M в диапазон 2..7. Потребуется метка возврата (Vvod_M).
  3. Ввод количества столбцов массива. Контроль на попадание N в диапазон 2..7. Потребуется метка возврата (Vvod_N).
  4. Двойной цикл заполнения массива числами из файла. Запрос на ввод не требуется, так как ввод из файла. Контроль не требуется.
  5. Распечатка исходного массива. Сначала печать заголовка ("Исходный массив"), затем печать по строкам с форматом, выделяя на число 10 позиций. После печати каждой строки массива – переход на новую запись в выходном файле.
  6. Поиск столбца с минимальным элементом, запоминание его номера. Двойной цикл (по всем элементам массива), перед которым первый элемент запоминается в переменной Amin, а в переменной для номера Jmin запоминается 1.
  7. Определение признака незанятого элемента выходного массива. В качестве признака незанятого элемента выходного массива следует использовать число, которое наверняка не встречается в исходном массиве. Таким числом будет любое, меньшее чем минимальное в массиве, в частности Amin –1.
  8. Цикл заполнения выходного массива признаком незанятого места. Простой цикл присваивания M элементам массива A значения Pr.
  9. Цикл работы с " i -м" элементом сортируемого столбца:

a) Цикл расчета числа элементов, меньших " i -го". Перед циклом ki делаем равным не нулю, а единице, т.к. после подсчета числа элементов, меньших данного, его выходной номер должен стать на единицу больше этого числа.

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

  1. Печать номера сортированного столбца.
  2. Печать отсортированного массива (начинается с печати заголовка "Упорядоченный массив"), и печать одномерного выходного массива с тем же форматом, что и для входного массива.
  3. Закрытие файлов.

При оформлении лабораторной работы, алгоритм следует изобразить в форме блок-схемы.

 

PROGRAM SortNum;

{ Программа Лабораторной работы N 5

Вариант N 31.

А.Я.Умненькая, ст. гр. Я-007 }

VAR

M,N,Jmin,i,j,i1,ki: integer;

Amin,Pr: real;

A: array [1..7,1..7] of real;

B: array [1..7] of real;

Fin,Fout: text;

LABEL

Vvod_M, Vvod_N;

BEGIN

{ Открытие входного и выходного файлов }

assign(Fout,'UMNIK5.RES');

rewrite(Fout);

assign(Fin,'D:\LAB1\DATF.TXT');

reset(Fin);

{ Ввод количества строк массива }

Vvod_M:

writeln ('Введите число строк массива');

readln(M);

if (M < 2) or (M > 7) then

begin

writeln('Недопустимое значение!');

goto Vvod_M;

end;

{ Ввод количества столбцов массива }

Vvod_N:

writeln ('Введите число столбцов массива');

readln(N);

if (N < 2) or (N > 7) then

begin

writeln('Недопустимое значение!');

goto Vvod_N;

end;

{ заполнение массива числами из файла }

for i:=1 to M do

for j:=1 to N do

read(Fin,A[i,j]);

{ Закрытие входного файла }

close(Fin);

{ Распечатка исходного массива }

Writeln(Fout,' Исходный массив из ',M,'x',N,

' элементов');

for i:=1 to M do

begin

for j:=1 to N do

Write(Fout,A[i,j]:8:2); {печать текущей строки }

Writeln(Fout);

end;

Writeln(Fout);

{ Поиск столбца с минимальным элементом }

Amin:= A[1,1];

Jmin:= 1;

for i:=1 to M do

for j:=1 to N do

if A[i,j] < Amin then

begin

Amin:= A[i,j];

Jmin:= j;

end;

{ Определение признака незанятого места }

Pr:= Amin - 1.0;

{ Очистка выходного массива }

for i:=1 to M do B[i]:= Pr;

{ сортировка "Jmin-го" столбца в выходной файл пересчетом }

for i:= 1 to M do

begin

ki:= 1;

for i1:=1 to M do

if A[i1,Jmin] < A[i,Jmin] then ki:= ki+1;

{ сдвиг дальше, если элемент уже занят }

while B[ki] <> Pr do ki:= ki+1;

B[ki]:= A[i,Jmin];

end;

{ Печать номера столбца c минимальным элементом }

Writeln(Fout,'Результаты работы':30);

Writeln(Fout);

Writeln(Fout,' Минимальный элемент находится в ',

Jmin,' столбце');

{ Печать отсортированного массива }

Writeln(Fout,'Сортированный массив':30);

for i:=1 to M do

Write(Fout,B[i]:8:2);

Writeln(Fout);

{ Закрытие выходного файла }

close(Fout);

END.

 




Поделиться с друзьями:


Дата добавления: 2014-11-06; Просмотров: 293; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.