Введите число столбцов N (от 1 до 10): 7
-0.820 -1.727 8.302 -12.867 14.069 -10.622 2.701
-8.586 -13.447 -4.567 12.362 2.710 -11.745 -18.582
6.518 18.815 -3.697 3.756 -8.867 -1.162 2.670
-5.526 -2.760 -17.617 17.599 15.884 -18.184 11.438
6.524 -17.361 -14.427 16.822 9.827 18.048 -17.959
1.089 -15.169 -18.475 -17.695 19.741 -0.611 -5.954
9.795 -7.356 16.453 -1.509 9.476 -12.490 -1.005
1.736 5.839 -12.669 -5.351 15.385 -5.952 3.622
-10.535 2.011 18.632 7.370 10.124 -16.228 -15.916
-0.452 4.024 0.291 -8.246 -6.923 -3.428 12.669
7.410 8.104 -4.903 -19.497 -6.175 -7.522 -1.275
-11.215 12.795 -10.699 3.611 -8.434 10.929 3.414
-17.101 -10.753 13.619 -11.288 -9.217 -13.621 -18.464
-11.849 -9.958 6.843 -5.954 -11.673 12.428 13.298
-6.080 -19.505 -8.720 -12.251 17.696 9.915 15.745
0.129 6.089 5.392 5.965 -18.233 18.814 -9.118
18.623 10.606 8.197 11.046 2.218 5.060 -4.052
-7.371 -8.568 13.377 -12.526 13.524 19.983 15.384
Максимальный элемента находится в ряду 18, колонке 6.
Его значение: 19.983
Индексы элементов, равных максимальному:
18, 6
CONST
max_cols = 10; {максимально возможное число столбцов N
измените, если мало. Это число - еще можно показать
без проблем}
max_rows = 18; {Из условия задачи}
max_element = 10; {Множители для случайных чисел}
min_element = -10;
diap = (max_element - min_element);
{!!! ИЗМЕНЕНИЕ:}
{} fract = 0; {Самое важное - число цифр после десятичной точки}
{} {поэтому только их и ограничиваем}
VAR
ar: array [1..max_rows, 1..max_cols] of Real;
{Действительные - это вещественные}
N1: Integer; {введенное число столбцов}
max_row, max_col, row, col: Integer;
count : Integer; {Число равных максимальному}
{!!! ИЗМЕНЕНИЕ:}
{} coeff: Integer; {Поможет получить ограничение}
BEGIN
Write('Введите число столбцов N (от 1 до ', max_cols,'): ');
ReadLn(N1);
if N1 < 1 then N1 := 1; {Что делать, если неверный ввод}
if N1 > max_cols then N1 := max_cols;
{Заполнение случайными числами}
randomize; {Каждый раз новыми - инициализация генератора
псевдослучайных чисел}
{!!! ИЗМЕНЕНИЕ:}
{} coeff := 1;
{} for row := 1 to fract do coeff := coeff * 10;
for row :=1 to max_rows do
begin
for col := 1 to N1 do
begin
ar[row, col] := random*diap + min_element;
{!!! ИЗМЕНЕНИЕ:}
{} ar[row, col] := round(ar[row, col]*coeff)/coeff;
Write(ar[row, col]:8:3);
end;
WriteLn
end;
{Ищем максимальный по модулю, вернее, его индексы}
max_row := 1; {Для начала полагаем, что это первый}
max_col := 1;
for row :=1 to max_rows do
for col :=1 to N1 do
if abs(ar[row, col]) > abs(ar[max_row, max_col]) then
begin
max_row := row; max_col := col
end;
WriteLn;
WriteLn('Максимальный элемента находится в ряду ',max_row,
', колонке ',max_col,'.');
WriteLn('Его значение: ',ar[max_row, max_col]:8:3);
{Теперь найдем число равных ему - различный вывод, если есть
и если нет равных}
count := 0;
for row := 1 to max_rows do
for col := 1 to N1 do
if abs(ar[max_row, max_col]) = abs(ar[row, col]) then
inc(count);
{!!! ИЗМЕНЕНИЕ:}
{Тут была ошибка/неточность - равенство самому себе не отрабатывалась}
{} if count <= 1 then WriteLn('В массиве нет элементов, равных максимальному')
else
begin
WriteLn('Индексы элементов, равных максимальному:');
for row := 1 to max_rows do
for col := 1 to N1 do
if abs(ar[row, col]) = abs(ar[max_row, max_col]) then
Write(row:2,',',col:2,' ');
end;
WriteLn;
END.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.