Матрица. Нахождение наименьших элементов

yllll

Доброго времени суток! помогите пожалуйста разобраться в задаче:Найти произведение двух наибольших элементов матрицы (не одинаковых) и их координаты.- Ввести произвольную размерность квадратной матрицы в интервале 1..10.- Предложить ввод данных (чисел целого типа) двумя способами:1. Через датчик случайных чисел на интервале -100..100.2. С клавиатуры в виде «Х[i],[j]=», где i и j – числа, соответствующие номеру строки и столбца.- После окончания ввода данных вывести на экран матрицу в отформатированном виде по строкам и столбцам.Например:2 5 -1211 18 323 -31 72- Обработать данные согласно заданию в варианте и вывести результат.- Если результатами вычислений являются вещественные числа, то выводить их с точностью до 2-х знаков после точки.- Вектор (одномерный массив) можно не создавать, а сразу выводить результаты на печать.
6 ответов

yllll

Понаписали Вы много, а что уже сами сделали и что не получается?


yllll

Program mass;
 uses crt;
  const n=2;
  var 
  a: array [1..n,1..n] of integer;
    i,c,j, P, min1, min2, x1, x2: integer;
   BEGIN
  write('1-Случайно, 2-Свои данные');
  readln(c);
  if c=1 then
begin
randomize;
  For i:=1 to n do begin
  For j:=1 to n do begin
   a[i,j]:=random(100)-4;
    Write(a[i,j]:4);
   end;
   writeln;
   end;
   end;
   min1:=a[1,1];
   if c=2 then
   begin
for i:=1 to n do
begin
for j:= 1 to n do
begin
writeln('a[',i,',',j,']=');
readln(a[i,j]);
end;
end;
end;
 For i:=1 to n do begin
If a[i,j]<min1 then begin min1:=a[1,1]; 
x1:=i;
 end;
  end;
   min2:=a[i,j];
  For i:=1 to n do begin
 If (min1<>min2) AND (a[i,j]<min2) then begin min2:=a[1,1]; 
 x2:=i;
end;
 end;
  WRITELN;
   P:=min1*min2;
    WRITELN;
   WriteLN('Первый минимальный элемент', min1, 'и его координата', x1);
  WriteLN('Второй минимальный элемент', min2, 'и его координата', x2);
 WriteLN('Произведение= ', P);
END.


yllll

- Ввести произвольную размерность квадратной матрицы в интервале 1..10.- Предложить ввод данных (чисел целого типа) двумя способами: 1. Через датчик случайных чисел на интервале -100..100. 2. С клавиатуры в виде «Х[i],[j]=», где i и j – числа, соответствующие номеру строки и столбца.
const NMax=10; W=4;
var
  x: array [0..Sqr(NMax)-1] of Integer;
  n, i, j, t, m1, m2: Integer;
begin
  repeat Write('N [2..',NMax,']: '); ReadLn(n);
  until n in [2..NMax];
  repeat Write('Данные ввести (1) или сгенерировать (2): '); ReadLn(t);
  until t in [1..2];
  case t of
  1:
    begin
      for i:=0 to n-1 do for j:=0 to n-1 do begin
        Write('x[',1+i,'][',1+j,'] = '); Read(x[n*i+j]);
      end; ReadLn;
    end;
  2:
    begin
      Randomize;
      for i:=0 to Sqr(n)-1 do x[i]:=-100+Random(201);
    end;
  end;
  WriteLn('X =');
  for i:=0 to n-1 do begin
    for j:=0 to n-1 do Write(x[n*i+j]:W); WriteLn;
  end;
Найти произведение двух наибольших элементов матрицы (не одинаковых) и их координаты.
  m1:=0; for i:=1 to Sqr(n)-1 do if x[m1]<x[i] then m1:=i;
  t:=x[m1]; m2:=Sqr(n)-1; while (m2>=0) and (x[m2]=t) do Dec(m2);
  for i:=0 to m2-1 do if (x[m2]<x[i]) and (t<>x[i]) then m2:=i;
  if m2>=0 then
    WriteLn('Max1: X[',1+m1 div n,'][',1+m1 mod n,'] = ',x[m1],
           ' Max2: X[',1+m2 div n,'][',1+m2 mod n,'] = ',x[m2],
           ' Max1*Max2 = ',x[m1]*x[m2])
  else WriteLn('Все элементы одинаковы');
end.


yllll

Нужно убрать точку с запятой в строке 33.


yllll

Puporev, убрал, спасибо, от удаленного begin end осталась по недосмотру.


yllll

Пере end точку с запятой можно не ставить, но тоже часто ставлю.