Реализовать возврат в меню - Pascal ABC
Формулировка задачи:
Решение задачи: «Реализовать возврат в меню»
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 для очистки экрана перед началом работы и чтения/записи ввода/вывода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д