Реализовать возврат в меню - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Всем привет! кто может помочь доделать код в доработке меню или свой вариант представить меню к примеру такую последовательность! запускаю программу показывается меню выбираю задачу ввожу символы решается затем тут же предлагается после задачи вернуться в меню или выйти именно как доработать чтобы в меню вернуться

Решение задачи: «Реализовать возврат в меню»

textual
Листинг программы
Uses Crt;
Procedure proc1;
const nmax=20;
type str=array[1..nmax] of integer;{массив=строка матрицы}
    matr=array[1..nmax] of str;{матрица=массив строк}
const p:array[1..5] of byte = (9,5,3,2,1);{вспомогательный массив для сортировки}
var a:matr;
    m,n,i,j,k,g:integer;
    x:str;{переменная типа массив=буфер для обмена при сортировке}
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i][j]:=-20+random(71);
    write(a[i][j]:4);
   end;
  writeln;
 end;
writeln;
{Перестановка строк сортировкой Шелла}
for k:=1 to 5 do
 begin
  g:=p[k];
  for i:=g to m-1 do
   begin
    x:=a[i];
    j:=i-g;
    while (x[1]>a[j][1]) and (j>=g) do
     begin
      a[j+g]:=a[j];
      j:=j-g;
     end;
    a[j+g]:=x;
   end;
 end;
writeln('Перестановка строк по убыванию элементов первого столбца:');
for i:=1 to m do
 begin
  for j:=1 to n do
  write(a[i][j]:4);
  writeln;
 end;
readln
end;
 
Procedure proc2;
const
  n = 10;
var
  i, c, j,ind: integer;
  min:real;
  mas: array [1..n]of real;
begin
clrscr;
writeln('Исходный массив');
for i := 1 to n do
 begin
  c := random(71) - 50;
  mas[i] := c;
  write(mas[i], ' ');
 end;
writeln;
for i := 1 to n - 1 do
 begin
  min := mas[i];
  ind := i;
  for j := i + 1 to n do
  if mas[j] < min then
   begin
    min := mas[j];
    ind := j;
   end;
  mas[ind] := mas[i];
  mas[i] := min;
 end;
writeln('Сортировка');
for i := 1 to n do
write(mas[i], ' ');
readln;
end;
 
Procedure proc3;
var a:array [1..100] of integer;
    x,i,j,n: integer;
begin
clrscr;
randomize;
write ('размер масива => ');
readln(n);
for i := 1 to n do
 begin
  a[i] := random(71)-50;
  write(a[i]:4);
 end;
writeln;
for i:=2 to n do
 begin
  x:=a[i];
  j:=i-1;
  while (j>0) and (x<a[j]) do
   begin
    a[j+1]:=a[j];
    j:=j-1;
   end;
  a[j+1]:=x;
 end;
for i:=1 to n do
write (a[i],'  ');
readln;
end;
 
var n:byte;
begin
  repeat
  ClrScr;
  WriteLn('Program 1 - 1');
  WriteLn('Program 2 - 2');
  WriteLn('Program 3 - 3');
  WriteLn('Exit - 0');
  Write('Select program: ');
  ReadLn(n);
  Case n of
    1: proc1;
    2: proc2;
    3: proc3;
  end;
  until n = 0;
end.

Объяснение кода листинга программы

В представленном коде реализованы три программы. В первой программе используется массив строк типа str и массив типа byte для вспомогательной сортировки. Программа позволяет пользователю выбрать количество строк и столбцов для создания матрицы, затем заполняет матрицу случайными числами. После этого выполняется перестановка строк матрицы по убыванию элементов первого столбца. Во второй программе используется массив типа real для хранения чисел. Программа создает случайный массив чисел, сортирует его по возрастанию, а затем выводит отсортированный массив на экран. В третьей программе используется массив типа integer. Программа создает случайный массив чисел, сортирует его по возрастанию, а затем выводит отсортированный массив на экран. Все программы используют функции из библиотеки Crt для очистки экрана перед началом работы и чтения/записи ввода/вывода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы