Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pojasnitelnaja_zapiska.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
165.48 Кб
Скачать

Приложение б Текст программы

Program KurRab;

Uses Crt;

Type

strmenu=record {Структура горизонтального меню}

x: integer; {Позиция вывода пункта меню}

s: string[14]; {Название пункта меню}

end;

Const

kol=4;

mas:array[1..kol] of strmenu=

((x:6; s:'Ввод данных'),

(x:25; s:'Сортировка'),

(x:42; s:'Вывод данныч'),

(x:63; s:'Выход'));

Var

AS, A: array [1..5,1..5] of integer;

A1:array[1..10] of integer;

PV, PS: byte;

i,j: integer;

n: integer; {Текущий активный пункт меню}

ch: char;

procedure InputDan;

Label M1, M2;

var n:integer;

begin

clrscr;

writeln('+__________________________+');

writeln('|1. Ручной ввод |');

writeln('|2. Автоматический ввод |');

writeln('|3. Выход в главное меню |');

writeln('+__________________________+');

M1:writeln(' Введите пункт меню');

readln(n);

case n of

1: begin

for i:=1 to 5 do

for j:=1 to 5 do

begin

write('A [',i,',',j,']=');

readln(A [i,j]);

end;

writeln('Данные введены');

goto M1;

PV:=1;

end;

2:begin randomize;

for i:= 1 to 5 do

for j:= 1 to 5 do

A[i,j]:= random(100)-50;

writeln('Данные введены');

goto M1;

PV:=1;

end;

3:begin

writeln('Для выхода в главное меню нажмите Enter');readln;end

else

goto M1;

end;

end;

procedure SortDan;

var

k,buf:integer;

p,min:byte;

begin

clrscr;

if PV=1 then begin

writeln('Сортировка элементов выше боковой диагонали методом выбора');

k:=1;

for i:=1 to 5 do

for j:=1 to 5 do

if((i+j)<6) then begin

A1[k]:=A[i,j];

k:=k+1;

end;

for i:= 1 to 9 do

begin

min:= i; p:=0;

for j:=i+1 to 10 do

if A1[j]<A1[min] then begin

min:= j; p:=1;

end;

if p=1 then begin

Buf:=A1[i];

A1[i]:=A1[min];

A1[min]:=Buf;

end;

end;

PS:=1;

writeln('Сортировка данных выполнена, для выхода в главное меню нажмите Enter');

end

else

writeln('Данные не введены, для выхода в главное меню нажмите Enter');

readln;

end;

procedure OutputDan;

var

i,j,min:integer;

begin

clrscr;

if PV=0 then

writeln('Данные не введены,для выхода в главное меню нажмите Enter')

else

begin

writeln('Исходная матрица');

for i:=1 to 5 do

begin

for j:=1 to 5 do

write(A[i,j]:5);

writeln;

end;

writeln('Поиск минимального элемента матрицы');

for i:=1 to 5 do

for j:=1 to 5 do

if(i>j) and (A[i,j]<min) then min:= A[i,j];

writeln('Деление положительных элементов матрицы на min=',min);

if min<>0 then begin

for i:=1 to 5 do

begin

for j:=1 to 5 do

begin

if A[i,j]>0 then A[i,j]:=A[i,j] div min;

write (A[i,j]:5);

end;

writeln;

end;

end

else

writeln ('Минимальное значение min=0, деление невозможно');

if ps=1 then begin

writeln('Отсортированный массив');

for i:=1 to 10 do

write(a1[i], ' ');

writeln;

end;

writeln('Для выхода в меню нажмите Enter');

end;

readln;

end;

Begin

n:=1;

repeat {Основной цикл по меню}

textattr:=7;

clrscr;

for i:=1 to kol do

begin

gotoxy(mas[i].x,3);

write(mas[i].s);

end;

textattr:=87; { цвет активного пункта меню}

gotoxy(mas[n].x,3);

write (mas[n].s); {вывод активного пункта меню}

ch:=readkey; {ввод символа с клавиатуры}

case ch of {определить код нажатой клавиши}

#13: case n of {клавиша Enter}

1: InputDan; {ввод данных}

2: SortDan; {сортировка данных}

3: OutputDan; { вывод данных}

end;

#0:begin

ch:=readkey;

case ch of {анализ функциональных клавиш}

#77:

if n<kol then

n:=n+1

else

n:=1;

#75:

if n>1 then

n:=n-1

else

n:=kol;

end;

end;

end;

until(ch= #13)and(n=4)or(ch= #27); {цикл, пока не нажата клавиша Esc или не выбран пункт ?Выход?}

textattr:=7;

clrscr;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]