Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 21.05.2013, 11:03   #1 (permalink)
aleksandr1983
Новичок
 
Регистрация: 21.05.2013
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Нужна срочная помощь с программой на 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:=
aleksandr1983 вне форума   Ответить с цитированием

Старый 21.05.2013, 11:03
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Аналогичные топики без полезной информации не бывают

Жесткому диску нужна срочная помощь
Нужна срочная помощь: проблемы с ноутбуком
Нужна срочная помощь по вирусу

Старый 21.05.2013, 11:07   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от aleksandr1983 Посмотреть сообщение
Где ошибка - не могу понять.
Ну, одно торчит, как гвоздь в диване! Это вот что за бессмыслица?
Цитата:
Сообщение от aleksandr1983 Посмотреть сообщение
write b (1,2);
write c (1;2);
...
write d (1;2)
Vladimir_S вне форума   Ответить с цитированием
Старый 21.05.2013, 11:12   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Есть и еще перлы. Вы явно не разобрались с глобальными параметрами и формальными, а также служебными параметрами внутри подпрограмм. Вот Вы повторно вносите в параметры процедуры полный перечень глобальных параметров программы - ну так уверяю Вас, ни к чему хорошему это не приведет. Значения этих параметров так внутри процедуры и останутся, а глобальные параметры (пусть и с теми же именами) получат значения по умолчанию (нули), да так с ними и пребудут.
Vladimir_S вне форума   Ответить с цитированием
Старый 21.05.2013, 11:23   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да, сейчас посмотрел - похоже, Вы и с вычислением корреляционных моментов толком не разобрались... Ладно, нарисую.
Будем исходить из формул
Название: Corr_1.gif
Просмотров: 146

Размер: 1.2 Кб
corr_2.gif
Vladimir_S вне форума   Ответить с цитированием
Старый 21.05.2013, 12:19   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вроде так:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
программирование

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:55.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.