• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

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

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Нужна срочная помощь с программой на Pascal

aleksandr1983

Ученик
Регистрация
21 Май 2013
Сообщения
1
Реакции
0
Баллы
0
Нужна срочная помощь с программой на Pascal

программа должна вычислять корреляционный момент значений столбцов матрицы. Написана в Turbo Pascal 7.0. При запуске компилятор выдает сообщение:error in statement. Где ошибка - не могу понять. Листинг программы:
program array;
uses crt;
var a:array [1..9, 1..5] of real;b:real;c:real;d:real;i:real;j:real;
begin
procedure fill_massive;
var a:array [1..9, 1..5] of real;i:real;j:real;
begin
for i:=1 to 9 do;
for j:=1 to 5 do;
write 'Vvedite chislo a';
readln a[i,j];
procedure average_meaning;
var a:array [1..9, 1..5] of real;b:real;c:real;d:real;i:real;j:real;
begin
b:=(a[11]+a[21]+a[31]+a[41]+a[51]+a[61]+a[71]+a[81]+a[91])/9;{рассчитывает среднее значение столбца 1}
c:=(a[12]+a[22]+a[32]+a[42]+a[52]+a[62]+a[71]+a[81]+a[92])/9;
write b (1,2);
write c (1;2);
d:=(a[11]-b)*(a[12]-c);
write d (1;2)

c:=
 
Есть и еще перлы. Вы явно не разобрались с глобальными параметрами и формальными, а также служебными параметрами внутри подпрограмм. Вот Вы повторно вносите в параметры процедуры полный перечень глобальных параметров программы - ну так уверяю Вас, ни к чему хорошему это не приведет. Значения этих параметров так внутри процедуры и останутся, а глобальные параметры (пусть и с теми же именами) получат значения по умолчанию (нули), да так с ними и пребудут.
 
Да, сейчас посмотрел - похоже, Вы и с вычислением корреляционных моментов толком не разобрались... Ладно, нарисую.
Будем исходить из формул
Corr_1.gif
Corr_2.gif
 
Ну вроде так:
Код:
Uses CRT;
Type
 Mas1=array[1..9,1..5] of real;
 Mas2=array[1..5] of real;
 Mas3=array[1..5,1..5] of real;

var
 a:Mas1;
 Mu:Mas2;
 Dz:Mas3;
 p,q:Integer;

procedure fill_massive(var FM:Mas1);
var i,j:Integer;
begin
 for i:=1 to 9 do
  for j:=1 to 5 do
   begin
    write('a[',i,',',j,']= ');
    readln(FM[i,j]);
   end;
end;

procedure average_meaning(AM1:Mas1; var AM2:Mas2);
var i,j:Integer;
begin
 for j:=1 to 5 do AM2[j]:=0;
 for j:=1 to 5 do
  for i:=1 to 9 do
   AM2[j]:=AM2[j]+AM1[i,j]/9;
end;

procedure Correlation(C1:Mas1; C2:Mas2; var C3:Mas3);
var i,j,k:Integer;
begin
 for i:=1 to 5 do
  for j:=1 to 5 do
   C3[i,j]:=0;
 for j:=1 to 5 do
  for k:=1 to 5 do
   for i:=1 to 9 do
    C3[j,k]:=C3[j,k]+(C1[i,j]-C2[j])*(C1[i,k]-C2[k])/9;
end;

Begin
 ClrScr;
 fill_massive(a);
 average_meaning(a,Mu);
 Correlation(a,Mu,Dz);
 ClrScr;
 Writeln('Initial matrix:');
 For p:=1 to 9 do
  begin
   For q:=1 to 5 do write(a[p,q]:8:3);
   Writeln;
  end;
 Writeln;
 Writeln('Correlation matrix:');
 For p:=1 to 5 do
  begin
   For q:=1 to 5 do write(Dz[p,q]:10:3);
   Writeln;
  end;
 ReadKey
End.
 
Назад
Сверху