Листинг (текст) программы
uses crt;
const n=7;
m=7;
var c:array[1..n,1..m] of integer;
st:array[1..n*m] of integer;
k:integer;
ch:char;
{Вывод меню на экран}
procedure vmenu(k:integer);
begin
TextBackground(Black);
clrscr;
writeln;
writeln(' МЕНЮ');
writeln;
TextBackground(Black); write(' ');
if k=1 then TextBackground(Blue);
writeln('Ввод случайними данными');
TextBackground(Black); write(' ');
if k=2 then TextBackground(Blue);
writeln('Ввод с клавиатуры');
TextBackground(Black); write(' ');
if k=3 then TextBackground(Blue);
writeln('Вывод на экран');
TextBackground(Black); write(' ');
if k=4 then TextBackground(Blue);
writeln('Найти количество элементов');
TextBackground(Black); write(' ');
if k=5 then TextBackground(Blue);
writeln('Сортировка после главной и попочной диагонали');
TextBackground(Black); write(' ');
if k=6 then TextBackground(Blue);
writeln('Выход');
TextBackground(Black);
end;
{Заполнение массива случайными числами}
procedure vrand;
var i,j:integer;
begin
randomize;
for i:=1 to n do
for j:=1 to m do
begin
c[i,j]:=Random(256);
end;
end;
{Ввод массива с клавиатуры}
procedure vkl;
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
begin
write('c[',i,',',j,']: ');
readln(c[i,j]);
end;
end;
{Вывод массива на экран}
procedure viv;
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
write(c[i,j]:3,' ');
writeln;
end;
end;
{Ожидание нажатия клавиши Enter}
procedure vln;
var i,j:integer;
begin
writeln;
write('Нажмите <Enter> для продалжения.');
readln;
end;
{1 Определение сколько раз встречается число,}
{ введенное с клавиатуры, в массиве элементов,}
{ находящихся наже главной диагонали матрицы}
procedure countel;
var i,j,a,l:integer;
begin
l:=0;
clrscr;
write('A: ');
readln(a);
for i:=1 to n do
for j:=1 to m do
if (i>j) then
begin
if c[i,j]=a then inc(l);
end;
writeln(a,' - встречается ',l,' раз.');
vln;
end;
{2 Сортировка элементов по убыванию,}
|
|
{ распаложеных после главной и попочной}
{ диагонали матрицы}
procedure sort;
var i,j,k,t:integer;
begin
{Перекладываем элементы расположеные после главной и}
{попочной диагонали матрицы в одномерный массив}
k:=0;
for i:=1 to n do
for j:=1 to m do
if (i<j) and (i>m-j+1) then
begin;
k:=k+1;
st[k]:=c[i,j];
end;
{Сортируем одномерный массив по убыванию}
for i:=1 to k do
for j:=2 to k do
if st[j-1]<st[j] then
begin
t:=st[j-1];
st[j-1]:=st[j];
st[j]:=t;
end;
{Перекладываем отсортированые элементы расположеные после}
{главной и попочной диагонали матрицы из одномерного массива}
k:=0;
for i:=1 to n do
for j:=1 to m do
if (i<j) and (i>m-j+1) then
begin;
k:=k+1;
c[i,j]:=st[k];
end;
end;
begin
k:=1;
repeat
vmenu(k);
ch:=Readkey; {Определение нажитие клавиши на клавиатуре}
case ord(ch) of
0: {Если функцианальная клаваша}
begin
{то считываем следующий символ}
ch:=Readkey;
{Определяем клавишу}
case ord(ch) of
72: if k>1 then k:=k-1; {Нажата клавиша вверх}
80: if k<6 then k:=k+1; {Нажата клавиша вниз}
end;
end;
13: {Нажата клавиша Enter}
begin
case k of {Определяем что выбрано в меню}
1: {Заполнение случайными числами}
begin
clrscr;
vrand;
writeln;
viv;
vln;
end;
2: {Ввод с клавиатуры}
begin
clrscr;
vkl;
end;
3: {Вывод на экран}
begin
clrscr;
writeln;
viv;
vln;
end;
4: {1 Задача}
begin
countel;
end;
5: {2 Задача}
begin
clrscr;
writeln;
writeln('До сортировки:');
viv;
sort;
|
|
writeln;
writeln('После сортировки:');
viv;
vln;
end;
end; {case k}
end;
end; {case ord(ch)}
until (k=6) and (ch=chr(13)); {Выход из программы}
end.
Выходные результаты
Дата добавления: 2016-01-05; просмотров: 28; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!