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


Автор: major 7.11.2005, 08:28
Задача написать программу.

Дана квадратная матрица N*N состоящая из целых чисел. Зеркально отразить
ее элементы относительно побочной диагонали. Вывести результат на экран.

Вот мой код. Верен ли он? Если нет пожалуйста исправте.
Код

program pasha1_1;
uses crt;
var
i,sum,b,c:integer;
k:boolean;
m:array[1..100] of integer;
begin
clrscr;
for i:=1 to 100 do
begin
Readln(m[i]);
if m[i]=0 then
begin
b:=i-1;
break;
end;
end;
For i:=1 to b do
begin
sum:=sum+m[i];
if sum>0 then
k:=true
else
k:=false;
end;
writeln(k);
readkey;
end.

Автор: MFSham 7.11.2005, 14:45
Нет, код неправильный.
Цитата(major @ 7.11.2005, 08:28)
Дана квадратная матрица N*N

Условие такое, а ты создаешь в коде только одномерный массив. И что значит побочная диагональ. Может главная?

Автор: St. Andrew 7.11.2005, 22:58
MFSham, побочная диагональ - это нормальный термин. Она проходит от элемента a[n][1] до a[1][n] и равна по длине главной диагонали.

major, действительно, почему массив-то одномерный? "Це ж матрица!" smile

Автор: darkart 10.11.2005, 00:36
Что-то вроде этого:
Код

program Matrix1;
const
  n=3;//размерность матрицы
type
  TMatrix=array[1..n,1..n] of integer;
var
  iTemp,i,j:integer;
  M:TMatrix;
begin
  writeln('Please enter a matrix(',n,'x',n,'):');
  for i:=1 to n do
  begin
    for j:=1 to n-1 do
      read(M[i,j]);
    readln(M[i,n]);
  end;
  for i:=1 to n-1 do
    for j:=1 to n-i do
    begin
      iTemp:=M[i,j];
      M[i,j]:=M[n-j+1,n-i+1];
      M[n-j+1,n-i+1]:=iTemp;
    end;
  writeln('Result:');  
  for i:=1 to n do
  begin
    for j:=1 to n-1 do
      write(M[i,j],' ');
    writeln(M[i,n]);
  end;
  readln;
end.

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