Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2008, 15:11   #1
rm2003
Новичок
Джуниор
 
Регистрация: 01.10.2008
Сообщений: 1
По умолчанию Помогите пож найти ошибки в программе и дописать ее до конца

Такая задача
1.Найти максимальное и минимальное значения компонент квадратной целочисленной матрицы m[n,n] .
2.Поменять местами в матрице компоненты строки, содержащей максимум, с компонентами столбца, содержащего минимум. Если максимумов и (или) минимумов в матрице несколько, то взять строку и столбец последних встреченных при переборе из максимумов и минимумов соответственно.
3.В одномерный массив v[n] записать компоненты побочной диагонали изменённой матрицы m[n,n] (индексы строки и столбца компонент побочной диагонали изменяются как [1, n],[2, n-1],[3, n-2], … ,[n-2, 3], [n, 1]).
4.Вычислить сумму компонент полученного массива v[n].
5.На экран вывести исходную матрицу m[n,n] , последние встреченные максимальную и минимальную компоненты с индексами, изменённую матрицу m[n,n], массив v[n], сумму компонент массива v[n] .

Данные: Матрица
0[1,1] 8[1,2] 1[1,3]
0[2,1] 5[2,2] 0[2,3]
9[3,1] 0[3,2] 9[3,3]

начало программы писала так:
Program Zadanie_3;
Var
m:Array [1..3, 1..3] of Integer;
i,j:Integer;
Begin
WriteLN ('Ввод элементов матрицы');
ReadLn;
WriteLn (' Введите поочередно элементы матрицы:');
For i:=1 To 3 Do
For j:=1 To 3 Do
Begin
Write ('m[',i,',',j,']=');
Readln(m[i,j]);
End;

Procedure search_min (Var m: matrix);
Var
min, row_min, column_min,i,j:integer;
begin
min:=m[1,1]; row min:=1; column_min:=1;
For: i=1 To 3-1 Do
For j:=1 To 3-i Do
If min>m[i,j] Then Begin
min:=m[i,j]; row_min:=i; column_min:=j;
End;
Write ('Минимальное значение ', min);
Write (' в строке ', row_min);
WriteLn('в столбце ', column_min);
ReadLn;
End;

Procedure search_max (Var m: matrix);
Var
max, row_max, column_max,i,j:integer;
begin
max:=m[1,1]; row max:=1; column_max:=1;
For: i=1 To 3-1 Do
For j:=1 To 3-i Do
If max<m[i,j] Then Begin
max:=m[i,j]; row_max:=i; column_max:=j;
End;
Write ('Максимальное значение ', max);
Write (' в строке ', row_max);
WriteLn('в столбце ', column_max);
ReadLn;
End.
rm2003 вне форума Ответить с цитированием
Старый 02.10.2008, 21:24   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
const
  n = 3;
var
  m: array[1..n, 1..n] of integer;
  v: array[1..n] of integer;
procedure min(var stroka, stolb: integer);
var
  i, j, tmp: integer;
begin
  stroka := 1;
  stolb := 1;
  tmp := m[1, 1];
  for i := 1 to n do
  for j := 1 to n do
  if m[i, j] <= tmp then
  begin
    stroka := i;
    stolb := j;
    tmp := m[i, j]
  end
end;
procedure max(var stroka, stolb: integer);
var
  i, j, tmp: integer;
begin
  stroka := 1;
  stolb := 1;
  tmp := m[1, 1];
  for i := 1 to n do
  for j := 1 to n do
  if m[i, j] >= tmp then
  begin
    stroka := i;
    stolb := j;
    tmp := m[i, j]
  end
end;

var
  tmp, i, j, min_row, min_col, max_row, max_col: integer;
begin
  for i := 1 to n do
  for j := 1 to n do
  begin
    write('[', i, ',', j, '] = ');
    readln(m[i, j])
  end;
  for i := 1 to n do
  begin
    for j := 1 to n do write(m[i, j]:4);
    writeln
  end;
  min(min_row, min_col);
  writeln('minimum [', min_row, ',', min_col, '] = ', m[min_row, min_col]);
  max(max_row, max_col);
  writeln('maximum [', max_row, ',', max_col, '] = ', m[max_row, max_col]);
  {2 zadanie ?????}
  for i := 1 to n do
  begin
    tmp := m[max_row, i];
    m[max_row, i] := m[i, min_col];
    m[i, min_col] := tmp
  end;
  writeln;
  for i := 1 to n do
  begin
    for j := 1 to n do write(m[i, j]:4);
    writeln
  end;
  {konec 2-go zadaniya}
  writeln('diagonal 2');
  tmp := 0;
  for i := 1 to n do
  begin
    v[i] := m[i, n-i+1];
    write(v[i]:4);
    tmp := tmp + v[i]
  end;
  writeln;
  writeln('summa = ', tmp);
  readln
end.
На счёт второго пункта что-то я не понял. Если даже в вашей матрице поменять 3 строку и 2 столбец, то что получится? Варианта 4 (смотря что записывать сперва - новую строку или столбец или по очереди). Например так:
0 9 1
0 0 0
8 5 0
или так:
0 9 1
0 0 0
8 9 0
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++.Задача на строки.Помогите найти ошибки NamelessEndless Помощь студентам 7 26.05.2008 23:42
помогите исправить ошибки в программе... VDK23 Помощь студентам 1 17.04.2008 13:05
Помогите исправить ошибки в программе Gambit90 Помощь студентам 1 20.12.2007 16:24
помогите найти причину ошибки! НиКС БД в Delphi 3 10.05.2007 15:55