ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

паскаль !!!
  #1  
Старый 10.01.2008, 01:22
rubik-nerubik
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме:
409147

Репутация: 33
Exclamation паскаль !!!

дюди выручайте оооч срочно
есть задание
Дана матрица 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.

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

  #2  
Старый 10.01.2008, 04:16
diehard
Постоянный
Регистрация: 30.09.2007
Сообщений: 815
Провел на форуме:
2590715

Репутация: 659


Отправить сообщение для diehard с помощью ICQ
По умолчанию

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

  #3  
Старый 10.01.2008, 04:29
diehard
Постоянный
Регистрация: 30.09.2007
Сообщений: 815
Провел на форуме:
2590715

Репутация: 659


Отправить сообщение для diehard с помощью ICQ
По умолчанию

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

Код:
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.
Всю фигню с вводом-выводом и константами допиши сам.

Последний раз редактировалось diehard; 22.06.2009 в 10:16..
 
Ответить с цитированием

  #4  
Старый 10.01.2008, 13:08
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Вроде бы в задании не сказано "обменять", написано "заменить", а про старое значение элемента массива ничего не упоминается, если я правильно понял. Можно и вот так
Код:
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.
 
Ответить с цитированием

  #5  
Старый 10.01.2008, 18:48
diehard
Постоянный
Регистрация: 30.09.2007
Сообщений: 815
Провел на форуме:
2590715

Репутация: 659


Отправить сообщение для diehard с помощью ICQ
По умолчанию

Цитата:
Вроде бы в задании не сказано "обменять", написано "заменить", а про старое значение элемента массива ничего не упоминается, если я правильно понял.
Вот потому и пишу, что надо чётко формулировать задание. А то в задании сказано "заменить соответственно", а в коде делает "обменять несоответственно":
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;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль rubik-nerubik С/С++, C#, Delphi, .NET, Asm 2 14.01.2008 22:07
мелочи, ПАскаль rubik-nerubik С/С++, C#, Delphi, .NET, Asm 5 27.12.2007 21:20
ПАСКАЛЬ =\ rubik-nerubik С/С++, C#, Delphi, .NET, Asm 12 27.12.2007 20:08
паскаль, вы программер? rubik-nerubik С/С++, C#, Delphi, .NET, Asm 45 15.12.2007 21:55



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ