Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > помогите с задачей на матрицы


Автор: madbiker 14.12.2005, 18:11
в данной вещественной матрице размером 6*9 поменяёте местами строку,содержашую элемент
с наибольшим значением,со строкой, содержащей элемент с наименьшим значением. Предпологается, что эти элементы единственный.

smile

Автор: АлексейМ 14.12.2005, 18:35
А у тебя-то вообще вариантов нет? Хочешь, чтобы всё от начала до конца сделали тебе? smile Говори, чё конкретно не получается. А там посмотрим. На каком языке-то вообще прогу пишешь?

Автор: madbiker 14.12.2005, 19:16
на паскале, мне срочняк надо,пожалуйста решите smile

Автор: darkart 15.12.2005, 22:05
Ну вроде так...
Код

program ChanMatr;
const
  n=6;{кол-во строк}
  m=9;{кол-во столбцов}
type
  TMatrix=array[1..n,1..m] of real;
procedure CreateRandomMatrix(var Matrix:TMatrix);
{создание случайной матрицы}
var
  i,j:integer;
begin
  for i:=1 to n do
    for j:=1 to m do
      Matrix[i,j]:=10*random;
end;
procedure InputMatrix(var Matrix:TMatrix);{ввод матрицы}
var
  i,j:integer;
begin
  writeln('Please enter matrix(',n,'x',m,'):');
  for i:=1 to n do
  begin
    for j:=1 to m-1 do
      read(Matrix[i,j]);
    readln(Matrix[i,m]);
  end;
end;
procedure PrintMatrix(var Matrix:TMatrix);{печать маирицы}
var
  i,j:integer;
begin
  for i:=1 to n do
  begin
    for j:=1 to m-1 do
      write(Matrix[i,j]:5:2);
    writeln(Matrix[i,m]:5:2);
  end;
end;
function FindMinStringIndex(var Matrix:TMatrix):integer;{поиск номера строки с первым мин. эл-ом}
var
  i,j,index:integer;
  min:real;
begin
  min:=Matrix[1,1];
  index:=1;
  for i:=1 to n do
    for j:=1 to m do
      if Matrix[i,j]<min then
      begin
        min:=Matrix[i,j];
        index:=i;
      end;
  FindMinStringIndex:=index;
end;
function FindMaxStringIndex(var Matrix:TMatrix):integer;;{поиск номера строки с первым макс. эл-ом}
var
  i,j,index:integer;
  max:real;
begin
  max:=Matrix[1,1];
  index:=1;
  for i:=1 to n do
    for j:=1 to m do
      if Matrix[i,j]>max then
      begin
        max:=Matrix[i,j];
        index:=i;
      end;
  FindMaxStringIndex:=index;
end;
procedure ReplaceStrings(var Matrix:TMatrix;x,y:integer);{замена i-ой и j-ой строки}
var
  j:integer;
  tmp:real;
begin
  if x<>y then
  begin
    for j:=1 to m do
    begin
      tmp:=Matrix[x,j];
      Matrix[x,j]:=Matrix[y,j];
      Matrix[y,j]:=tmp;
    end;
  end;
end;
var
  Matrix:TMatrix;
begin
  InputMatrix(Matrix);{если ввод маирицы не нужен, то заменить наCreateRandomMatrix(Matrix)}
  writeln('Source matrix:');
  PrintMatrix(Matrix);
  ReplaceStrings(Matrix,FindMinStringIndex(Matrix),FindMaxStringIndex(Matrix));
  writeln('Matrix after replacing:');
  PrintMatrix(Matrix);
  readln;
end.

Автор: madbiker 18.12.2005, 12:45
а без процедур и функций можно решить? smile

Автор: darkart 18.12.2005, 21:02
Конечно можно smile

Автор: madbiker 18.12.2005, 23:31
ну а как? smile

Автор: Elfin 19.12.2005, 04:32
Код

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const m=6; n=9;

type rec=record
      col,row: byte;
      end;

var matr: array [0..m-1,0..n-1] of real; i,j: integer;
mas: array [0..n-1] of real;
min,max:  rec;

begin
for i:=0 to m-1 do
for j:=0 to n-1 do
matr[i,j]:=random(10)+random;
writeln('Old Matrix');
for i:=0 to m-1 do
  begin
    for j:=0 to n-1 do
    write(matr[i,j]:4:2,'  ');
    writeln
  end;
min.col:=0;
min.row:=0;
for i:=0 to m-1 do
for j:=0 to n-1 do
if matr[i,j]<matr[min.col,min.row] then
  begin
    min.col:=i;
    min.row:=j;
  end;
max.col:=0;
max.row:=0;
for i:=0 to m-1 do
for j:=0 to n-1 do
if matr[i,j]>matr[max.col,max.row] then
  begin
    max.col:=i;
    max.row:=j;
  end;
for i:=0 to n-1 do
mas[i]:=matr[min.col,i];
for i:=0 to n-1 do
matr[min.col,i]:=matr[max.col,i];
for i:=0 to n-1 do
matr[max.col,i]:=mas[i];
writeln('New matrix');
for i:=0 to m-1 do
  begin
    for j:=0 to n-1 do
    write(matr[i,j]:4:2,'  ');
    writeln
  end;
readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)