ЯЗЫК ПАСКАЛЬ!!!!!!!!!!!!!
Проблема необычная , открывая меню программы в пункте 2.Просмотреть таблицу таблица показывается только после ДВУХ нажатий ЕНТЕР, а нужно всего одно!
Код:
program MENUSHE4ka;
uses
crt;
type
table = array [1..666, 1..666] of real;
var
n, m: integer;
i, j: integer;
k, l: integer;
paragraph: integer;
subparagraph: integer;
max: integer;
min: integer;
N_ROWS: integer;
N_COLS: integer;
matrix: table;
SUMmax: real;
SUM_of_ROWS: real;
flag: boolean;
procedure Find_the_maximum_sum_of_line_items(mas: table; n1, m1: integer; var SUMmax: real);
var
i, j: integer;
SUM_of_ROWS: real;
flag: boolean;
begin
SUMmax := 0;
for j := 1 to m1 do
begin
SUMmax := matrix[1, j] + SUMmax;
end;
begin
for i := 2 to n1 do
begin
SUM_of_ROWS := 0;
for j := 1 to m1 do
begin
SUM_of_ROWS := SUM_of_ROWS + matrix[i, j];
if SUM_of_ROWS > SUMmax then
SUMmax := SUM_of_ROWS;
end;
end;
end;
end;
procedure first_N_ROWS_with_max(mas: table; col_str, col_stlb: integer; var FNStr: integer);
var
k, l: integer;
sum_otr_str, SUMmax: real;
flag: boolean;
begin
SUMmax := 0;
for k := 1 to col_str do
begin
sum_otr_str := 0;
flag := false;
for l := 1 to col_stlb do
begin
if matrix[k, l] < 0 then
begin
sum_otr_str := sum_otr_str + matrix[k, l];
end;
if matrix[k, l] = 0 then
flag := true;
end;
if (flag = true) then
begin
sum_otr_str := abs(sum_otr_str);
if (SUMmax < sum_otr_str) then
begin
SUMmax := sum_otr_str;
N_ROWS := k;
end;
end;
end;
FNStr := N_ROWS;
end;
procedure num_last_stlb_with_max_pol(mas: table; col_str, col_stlb: integer; var NLStlb: integer);
var
flag: boolean;
kol_pol, max_kol_pol: integer;
N_COLS: integer;
i, j: integer;
begin
max_kol_pol := 0;
flag := false;
for j := 1 to col_stlb do
begin
flag := false;
kol_pol := 0;
if matrix[1, j] < 0 then
begin
flag := true;
for i := 2 to col_str do
begin
if matrix[i, j] > 0 then
kol_pol := kol_pol + 1;
end;
end;
if (flag = true) and (kol_pol >= max_kol_pol) then
begin
N_COLS := j;
max_kol_pol := kol_pol;
end;
NLStlb := N_COLS;
end;
end;
begin
repeat
begin
writeln('Выберите пункт меню:');
writeln('1.Создать таблицу');
writeln('2.Просмотреть таблицу');
writeln('3.Обработать таблицу ');
writeln('4.Выход');
readln(paragraph);
case paragraph of
1:
begin
ClrScr;
begin
writeln('Выберите пункт подменю:');
writeln('1.1.Задать с клавиатуры');
writeln('1.3.Назад');
read(subparagraph);
case subparagraph of
1:
begin
clrscr;
writeln('Задайте размер таблицы');
write('Строк: ');
readln(n);
write('Столбцов: ');
readln(m);
clrscr;
writeln('Введите числа через пробел:');
for i := 1 to n do //с клавы
for j := 1 to m do
read(matrix[i, j]);
readln();
readln();
clrscr;
writeln('Выберите пункт меню:');
writeln('1.Создать таблицу');
writeln('2.Просмотреть таблицу');
writeln('3.Обработать таблицу');
writeln('4.Выход');
read(paragraph);
end;
3:
begin
clrscr;
end;
else writeln( 'Error');
end;
end;
end;
2:
begin
clrscr; //Просмотреть таблицу
for i := 1 to n do
begin
for j := 1 to m do
write(matrix[i, j], ' ');
writeln;
end;
writeln;
writeln('Назад (Enter)');
readln();
clrscr;
end;
3:
begin//Обработать таблицу
clrscr;
writeln('Выберите действие:');
writeln('3.1.Найти максимальную сумму элементов строки');
writeln('3.2.Среди строк, содержащих нули, найти номер первой строки, в которой сумма модулей отрицательных элементов максимальна');
writeln('3.3.Среди тех столбцов,в которых первый элемент отрицателен, найти номер последнего столбца, в котором наибольшее количество положительных чисел');
writeln('3.4.Назад');
readln(subparagraph);
clrscr;
case subparagraph of
1:
begin
clrscr;
writeln('3.1.Find the maximum sum of line items');
Find_the_maximum_sum_of_line_items(matrix, n, m, SUM_of_ROWS);
writeln;
writeln('Ответ: максимальная сумма строки = ', SUM_of_ROWS);
writeln;
end;
2:
begin
clrscr;
writeln('3.2.Среди строк, содержащих нули, найти номер первой строки, в которой сумма модулей отрицательных элементов максимальна');
first_N_ROWS_with_max(matrix, n, m, N_ROWS);
writeln;
writeln('Ответ: номер строки = ', N_ROWS);
writeln;
end;
3:
begin
clrscr;
writeln('3.3.Среди тех столбцов,в которых первый элемент отрицателен, найти номер последнего столбца, в котором наибольшее количество положительных чисел');
num_last_stlb_with_max_pol(matrix, n, m, N_COLS);
writeln;
writeln('Ответ: Номер столбца = ', N_COLS);
writeln;
end;
4:
begin
clrscr;
subparagraph := 4;
end;
else writeln( 'Error');
end;
end;
4:
begin
clrscr;
paragraph := 4; //Выход
end;
else writeln( 'Error');
end;
end;
until paragraph = 4;
end.
Пожалуйста, оформляйте Ваш код согласно правилам.