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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2008, 14:58   #1
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
Вопрос Задачка в delphi, вылазят ошибки...

Если целочисленная квадратная матрица симетрична относительно главной диагонали, обнулить все
элементы, лежащие выше главной диагонали, и определить сумму элементов лежащих ниже главной
диагонали.

Вроде бы все правильно, но работать не хочет ошибки вылазят. Помогите пожалуйста очень нужно =) Все в delphi
Код:
program zadacha;
{$APPTYPE CONSOLE}
uses
  SysUtils;
Type matr=array[1..100,1..100] of real;
Var k,i,j,n:integer;
sum:real;
A : matr;
Procedure BBOD_A(VAR A:matr);
Var
i,j:integer;
 begin
 write('n=');
 readln(n);
 for i:=1 to n do
 for j:=1 to n do
   begin
   write('A[',i,j,']=');
   readln(A[i,j]);
   end;
 end;
Procedure D(Var k: integer);
Var i,j :integer;
 begin
 for i:=1 to n do
 for j:=1 to n do
   begin
   if A[i,j]=A[j,i] then k:=k+1;
   end;
 end;
Procedure CYMMA(Var sum :real) ;
var
i,j,m:integer;
 begin
 for i:=1 to n do
 for j:=1 to n do
   begin
   if i=j then
   for m:=1 to (i-1) do
   sum:=sum+A[i,m];
   end;
 end;
Procedure G(Var A:matr);
var
i,j,m:integer;
 begin
 for i:=1 to n do
 for j:=1 to n do
   begin
   if i=j then
   for m:=(i+1) to n do
   A[i,m]:=0;
   end;
 end;

BEGIN
sum:=0;
k:=0;
BBOD_A(A);
D(k);
if k><(sqr(n)) then write ('matrica ne simetrichna')
else
G(A);
CYMMA(sum);
for i:=1 to n do
for j:=1 to n do
 begin
 writeln('A[',i,j,']=',A[i,j]);
 end;
 readln;
END.

Последний раз редактировалось Absent; 17.02.2008 в 15:11.
Absent вне форума Ответить с цитированием
Старый 17.02.2008, 15:29   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

А компилятор вам неподсказал, что за ошибки?

if k >< (sqr(n)) then write ('matrica ne simetrichna')

Правильно писать так: if k <> (sqr(n)).....
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 17.02.2008, 15:46   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Кроме того, что подметил Карась, у тебя нет вывода суммы, и еще принято выводить на экран исходную матрицу и обработанную все же в виде таблицы. Еще внимательно посмотри расстановку запятых и апострофов, где вводишь числа, должно бвть не a[11], а a[1,1]. Короче посмотри переделанный код.
Код:
program zadacha;
{$APPTYPE CONSOLE}
uses
  SysUtils;
Type matr=array[1..100,1..100] of integer;
Var k,i,j,n:integer;
sum:integer;
A : matr;
Procedure BBOD_A(VAR A:matr);
Var
i,j:integer;
 begin
 write('n=');
 readln(n);
 for i:=1 to n do
 for j:=1 to n do
   begin
   write('A[',i,',',j,']=');
   readln(A[i,j]);
   end;
writeln('Ishodnaia matrica:');
 for i:=1 to n do
   begin
     for j:=1 to n do
       begin
         write(A[i,j]:3);
       end;
     writeln;
   end;
 end;
Procedure D(Var k: integer);
Var i,j :integer;   
 begin
 for i:=1 to n do
 for j:=1 to n do
   begin  
   if A[i,j]=A[j,i] then k:=k+1;
   end;   
 end;
Procedure CYMMA(Var sum :integer) ;
var
i,j,m:integer;   
 begin
 for i:=1 to n do  
 for j:=1 to n do
   begin
   if i=j then
   for m:=1 to (i-1) do  
   sum:=sum+A[i,m];
   end;   
 end;
Procedure G(Var A:matr);
var
i,j,m:integer;   
 begin
 for i:=1 to n do  
 for j:=1 to n do
   begin
   if i=j then
   for m:=(i+1) to n do  
   A[i,m]:=0;
   end;   
 end;

BEGIN
sum:=0;   
k:=0;
BBOD_A(A);   
D(k);
if k<>(sqr(n)) then write ('matrica ne simetrichna')
else
G(A);   
CYMMA(sum);
writeln('Obrabotannaia matrica:');
for i:=1 to n do
   begin
     for j:=1 to n do
       begin
        write(A[i,j]:3);
       end;
     writeln;
   end;
writeln('Summa=',sum);
 readln;   
END.
puporev вне форума Ответить с цитированием
Старый 17.02.2008, 15:54   #4
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию

Всем спасибо очень помогли.
Absent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки при инжекте joker Win Api 5 21.08.2012 11:04
Две ошибки Crivel Помощь студентам 10 31.07.2008 12:18
Ошибки при линейной интерполяции в Delphi(( Auster Помощь студентам 14 23.04.2008 21:27
Ошибки delphin100 Операционные системы общие вопросы 12 17.04.2008 14:15
Ошибки Terran Общие вопросы Delphi 3 05.02.2008 20:47