Top.Mail.Ru
Ответы

Адская задача шайтан языка Pascal.ABC.

Эта адская задача заставляет мои волосы выпадать. Помогите, пожалуйста, я уже наполовину облысел. Только начинаю изучать Паскаль в колледже...

Задача.
Дана матрица размера M х N. Найти максимальный среди минимальных элементов ее строк.

Код 1:

begin

randomize;

write('Определите размерность матрицы M x N (1 <= M,N <= 20): ');
readln(m,n);

write('Заданная матрица:');
writeln;writeln;
for i:integer:=1 to m do //Заполнение двумерного массива
for j:integer:=1 to n do
mass[i,j] := random(21)-10;

for i:integer:=1 to m do //Вывод двумерного массива
begin
for j:integer:=1 to n do
write(mass[i,j]:4);
writeln;
end;

writeln;
write('Минимальные элементы строк: ');
for i:integer:=1 to m do
begin
min := mass[i,1];
for j:integer:=2 to n do
if min>mass[i,j] then
begin
min:=mass[i,j]; b[i]:=min;
end;
end;
for i:integer:=1 to m do
write (b[i],' ');

writeln;
maxmin:=b[1];
for i:integer:=2 to m do
if b[i]>maxmin then maxmin:=b[i];
write('Максимальный из минимальных элементов: ',maxmin);
readln;
end.

Код 2:

begin

randomize;

write('Определите размерность матрицы M x N (1 <= M,N <= 20): ');
readln(m,n);
longmass:=m;
SetLength(min_mass,longmass);
write('Заданная матрица:');
writeln;writeln;
for i:integer:=1 to m do //Заполнение двумерного массива
for j:integer:=1 to n do
mass[i,j] := random(21)-10;

for i:integer:=1 to m do //Вывод двумерного массива
begin
for j:integer:=1 to n do
write(mass[i,j]:4);
writeln;
end;

writeln;
write('Минимальные элементы строк:');

for i:integer:=1 to m do
begin
min:=mass[i,1];
for j:integer:=2 to n do
if mass[i,j]<min then
begin
for k:integer:=0 to min_mass.Length-1 do //Заполнение динамического массива
min_mass[k]:=min;
end;
end;
write(min_mass);
readln;
end.

Вся загвоздка в том, что я никак не могу понять, как полученными минимальными элементами из строк матрицы заполнить одномерный массив, для дальнейшей сортировки. Попытка сделать это вложенными циклами - ошибка, нельзя изменять индексы i,j находясь в цикле. Заменяешь их другими буквами, получается множество массивов, вместо одного. Сбивается определение минимальных элементов, как в случае №1. Где я путаю с begin и end? Извилин уже не хватает. Объясните...

По дате
По рейтингу
Аватар пользователя
Новичок

вот прога вычисления МАХ элементов в столбцах, измени и получишь свою
program mas2_22; //максимальные в столбцах
uses crt;
var
j,i:integer;
a:array[1..6,1..6] of integer;
b:array[1..6] of integer;
BEGIN
randomize;
clrscr;
writeln( ' Исходная матрица');
writeln('-------------------------------');
for i:=1 to 6 do begin
for j:=1 to 6 do begin
a[i,j]:=random(101); write(a[i,j]:5);
end;
writeln; end;
writeln;
writeln(' Максимальные элементы в столбцах ');
writeln('-------------------------------');
for j:=1 to 6 do begin
b[j]:=a[j,1];
for i:=1 to 6 do
if b[j]<a[i,j] then b[j]:=a[i,j];
write(b[j]:5); end;
writeln;
writeln('конец задачи ');
//readkey;
END.

Аватар пользователя
Оракул

это элементарно, пишу упрощенно
а=элемент (1,1)
в цикле по строкам
( ищем b минимальный в строке
a=max(a,b)
);

Аватар пользователя
Профи

Пипец, его ещё изучают!! Те, кто программу создавал явно не очень умные люди.

Аватар пользователя
Искусственный Интеллект

За такую культуру кодирования надо долго и вдумчиво бить фейсом об тейбл. Паскакалем с 90-го года урывками имел дело, но за такую "логику" и такой листинг -- отчислять сразу! "Мне стрёмно косяки твои считать, урла!"
Да, ты Пролог не видел, Или Лисп. Да Ассемблер тот же. Вот где шайтан-языки!