Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   паскаль !!! (https://forum.antichat.xyz/showthread.php?t=58032)

rubik-nerubik 10.01.2008 01:22

паскаль !!!
 
дюди выручайте оооч срочно
есть задание
Дана матрица n x m найти минимальный и максимальный элементы в строке и заменить первый и последний элементы строк соотстветственно... помогите!!!
Код:

program number2;
var a:array[1..3,1..4] of longint;
max,min,buf,k,n,i,j,maxj,minj:longint;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
readln(n);
readln(k);
 for i:=1 to k do
    for j:=1 to n do read(a[i,j]);
 for i:=1 to k do begin
 max:=a[i,1];
 min:=a[i,1];
 maxj:=1;
 minj:=1;
    for j:=1 to n do begin
    if a[i,j]>max then maxj:=j
                  else if a[i,j]<min then minj:=j;
    end;
 if (maxj=n)and(minj=1) then
                            begin
                            buf:=a[i,1];
                            a[i,1]:=a[i,n];
                            a[i,n]:=buf;
                            end;
 buf:=a[i,1];
 a[i,1]:=a[i,maxj];
 a[i,maxj]:=buf;
 buf:=a[i,n];
 a[i,n]:=a[i,minj];
 a[i,minj]:=buf;
 end;
 for i:=1 to k do begin
    for j:=1 to n do write(a[i,j],' ');
    writeln;
 end;
end.


вот задача только как-то неправильно рабтает, достаточно отредить , помогитеееее

diehard 10.01.2008 04:16

Автор, в четкой формулировке задачи уже половина её решения.

diehard 10.01.2008 04:29

Если я правильно понял задание, то надо для каждой строки минимальный элемент переставить местами с первым, а максимальный с последним. Тогда это выглядит так:

Код:

type index=word;

var i, j, j_max, j_min : index;
    A1, AM, Amax, Amin : integer;

BEGIN

for i:=1 to N do
 begin
  j_max := 1;
  j_min := 1;
  for j:=1 to M do
    begin
      if A[i,j] > A[i,j_max] then j_max := j;
      if A[i,j] < A[i,j_min] then j_min := j;
    end;
  A1 := A[i,1];
  Amin := A[i,j_min]
  AM := A[i,M];
  Amax := A[i,j_max];
  A[i,1] := Amin;
  A[i,j_min] := A1;
  A[i,M] := Amax;
  A[i,j_max] := AM;
 end;

END.

Всю фигню с вводом-выводом и константами допиши сам.

krypt3r 10.01.2008 13:08

Вроде бы в задании не сказано "обменять", написано "заменить", а про старое значение элемента массива ничего не упоминается, если я правильно понял. Можно и вот так
Код:

program laba1;

const
  maxrow = 3;
  maxcol = 4;

type
  TMass = array  [1..maxrow, 1..maxcol] of integer;

function FillArray : TMass;
var
  i, j : integer;
  a : TMass;
begin
  Randomize;
  for i := 1 to maxrow do
    for j := 1 to maxcol do
      a[i][j] := Random (1000) - 500;
  FillArray := a
end;

procedure PrintArray (a : TMass);
var
  i, j : integer;
begin
  for i := 1 to maxrow do
    for j := 1 to maxcol do
      writeln (a[i][j]);
  writeln ('=====');
end;

procedure FindMinMax (a : TMass; row : integer; var min : integer; var max : integer);
var
  j : integer;
begin
  for j := 1 to maxcol do begin
    if j = 1 then begin
      min := a [row][j];
      max := min;
    end
    else begin
      if min > a [row][j] then
        min := a [row][j];
      if max < a [row][j] then
        max := a [row][j];
    end;
  end;
end;

procedure ReplaceArr (var a : TMass; row, min, max : integer);
begin
  a[row][1] := min;
  a[row][maxcol] := max;
end;

var
  a : TMass;
  max, min, i : integer;

begin
  a := FillArray;
  PrintArray (a);
  for i := 1 to maxrow do begin
    ///max := FindMax (a, 3);
    ///writeln (max);
    FindMinMax (a, i, min, max);
    writeln (min);
    writeln (max);
    writeln ('=====');
    ReplaceArr (a, i, min, max);
  end;
  PrintArray (a);
end.


diehard 10.01.2008 18:48

Цитата:

Вроде бы в задании не сказано "обменять", написано "заменить", а про старое значение элемента массива ничего не упоминается, если я правильно понял.
Вот потому и пишу, что надо чётко формулировать задание. А то в задании сказано "заменить соответственно", а в коде делает "обменять несоответственно":
buf:=a[i,1];
a[i,1]:=a[i,maxj];
a[i,maxj]:=buf;
buf:=a[i,n];
a[i,n]:=a[i,minj];
a[i,minj]:=buf;


Время: 14:05