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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2011, 13:44   #1
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию Использование подпрограмм

Определить, является ли данная целочисленная квадратная матрица ортонормированной, то есть такой, в которой скалярное произведение каждой пары различных строк равно нулю, а скалярное произведение каждой строки на себя равно единице.

(Разбить задачу на подзадачи таким образом, чтобы решение каждой подзадачи описывалось подпрограммой, а основная программа состояла бы из последовательности вызовов подпрограмм. Размеры матриц задать константами.)

Программа уже написана! Нужно выполнить то, что сказано в скобках.

Код:
const n=3;
var m:array[1..n,1..n] of integer;
    i,j,k:byte;
    f:boolean;
    s:integer;
begin
writeln('Enter ',n*n,' elements:');
for i:=1 to n do
for j:=1 to n do
read(m[i,j]);
readln;
writeln('Current Matrix:');
for i:=1 to n do
  begin
   for j:=1 to n do
   write(m[i,j]:3);
   writeln;
  end;
writeln;
i:=1;
f:=true;
repeat
j:=1;
repeat
s:=0;
for k:=1 to n do
s:=s+m[i,k]*m[j,k];
if ((i=j) and (s<>1)) or ((i<>j) and (s<>0)) then f:=false;
j:=j+1
until not(f) or (j=n+1);
i:=i+1
until not (f) or (i=n+1);
if f=true then writeln ('Ortonorm')
else writeln ('Not ortonorm');
readln
end.
Помогите пожалуйста...
swillrocker вне форума Ответить с цитированием
Старый 22.05.2011, 14:25   #2
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию

Код:
const n=3;
var m:array[1..n,1..n] of integer;
    i,j,k:byte;
    f:boolean;
    s:integer;
    
procedure create(length:byte);
begin
writeln('Enter ',length*length,' elements:');
for i:=1 to length do
for j:=1 to length do
read(m[i,j]);
readln;
end;
 
procedure show(length:byte);
begin
writeln('Current Matrix:');
for i:=1 to length do
  begin
   for j:=1 to length do
   write(m[i,j]:3);
   writeln;
  end;
writeln;
end;
 
procedure ortonorm(length:byte; var f:boolean);
begin
i:=1;
f:=true;
repeat
j:=1;
repeat
s:=0;
for k:=1 to length do
s:=s+m[i,k]*m[j,k];
if ((i=j) and (s<>1)) or ((i<>j) and (s<>0)) then f:=false;
j:=j+1
until not(f) or (j=length+1);
i:=i+1
until not (f) or (i=length+1);
if f=true then writeln ('Ortonorm')
else writeln ('Not ortonorm');
end;
 
begin
create(n);
show(n);
ortonorm(n,f);
readln
end.

Последний раз редактировалось swillrocker; 22.05.2011 в 14:29.
swillrocker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование подпрограмм specnazkin Помощь студентам 0 12.05.2011 15:43
Использование подпрограмм... 7NoName7 Помощь студентам 0 11.05.2010 16:26
Использование подпрограмм бургер Паскаль, Turbo Pascal, PascalABC.NET 5 29.04.2010 04:21
Использование подпрограмм inferno fm Общие вопросы Delphi 2 19.09.2009 18:37