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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2015, 23:43   #1
DariaCh13
 
Регистрация: 13.12.2009
Сообщений: 3
По умолчанию Тест Чоу. МНК. Ошибки при компиляции

Написала реализацию теста Чоу. Наверное, ошибок много. Мой компилятор выдает мне только по одной ошибке. На первой же встала, не знаю, как исправить. 24 строка "Ожидалось константное выражение". Помогите, пожалуйста, исправить.

Код:
program metod_chou; 
  uses crt; 
  var 
    b,a,a0,a1,a2,s,k,d:real; 
    xy, x, y, xx, sum1, sum2, sum,i,j, n: integer;
    F, Q: text;
    Fisher: array[1..200,1..20] of real;

 
  BEGIN 
    clrscr;
    assign(F, 'Fisher.txt'); 
    reset(F);
    for i:=1 to 200 do
      begin
        for j:=1 to 20 do 
          read(F,Fisher[i,j]);
      end;
    close(F);
    
    assign(Q, 'Data-in.txt'); 
    reset(Q);
    read(Q,n);
    var Data: array[1..n,1..20] of real;
     for i:=1 to n do
      begin
        for j:=1 to 3 do 
          read(Q,Data[i,j]);
      end;
    close(Q);
    
    var Data1: array[1..n, 1..j] of real;
     for i:=1 to n do
       for j:=1 to 2 do
         Data1[i,j]:=Data[i,j];
       
    var Data2: array[1..n] of real;
     for i:=1 to n do
       Data2[i]:=Data[i,3];
    
    k:=1; 
    d:=2;
    xy:=0;
    x:=0;
    y:=0;
    xx:=0;
    sum1:=0;
    sum2:=0;
    sum:=0;

    
    Repeat
    begin 
     for i:=k to d do
      begin {МНК}
        xy:=Data1[i,1]*Data[i,2]+xy;
        x:=Data1[i,1]+x;
        y:=Data1[i,2]+y;
        xx:=sqr(Data1[i,1])+xx;
      end;
    b:=(n*xy-x*y)/(n*xx-x*x); {коэффициенты регрессионного уравнения}
    a:=(y-b*x)/n;
    for i:=k to d do
      summ1:=sqrt((a*Data1[i,1]+b)-Data1[i,2])+summ1; {сумма квадратов остатков для 1 подвыборки}
      
    xy:=0;
    x:=0;
    y:=0;
    xx:=0;
    sum2:=0;
    for i:=d+1 to n do
      begin {МНК}
        xy:=Data1[i,1]*Data[i,2]+xy;
        x:=Data1[i,1]+x;
        y:=Data1[i,2]+y;
        xx:=sqr(Data1[i,1])+xx;
      end;
    b:=(n*xy-x*y)/(n*xx-x*x); {коэффициенты регрессионного уравнения}
    a:=(y-b*x)/n;
    for i:=k to d do
      summ2:=sqrt((a*Data1[i,1]+b)-Data1[i,2])+summ2; {сумма квадратов остатков для 2 подвыборки}
      
    xy:=0;
    x:=0;
    y:=0;
    xx:=0;
    sum:=0;
    for i:=k to n do
      begin {МНК}
        xy:=Data1[i,1]*Data[i,2]+xy; 
        x:=Data1[i,1]+x;
        y:=Data1[i,2]+y;
        xx:=sqr(Data1[i,1])+xx;
      end;
    b:=(n*xy-x*y)/(n*xx-x*x); {коэффициенты регрессионного уравнения}
    a:=(y-b*x)/n;
    for i:=k to d do
      summ:=sqrt((a*Data1[i,1]+b)-Data1[i,2])+summ;  {сумма квадратов остатков для всей выборки}
     
    chou: real;
    chou:=((summ-summ1-summ2)/2)/((summ1+summ2)/(n-k-3)); {тест Чоу}
    if chou > Fisher[(n-k-3),2] {сравниваем F-статистику с квантилью}
       then d:=d+1
     else
      begin
        writeln(Data2[d,k], 'поворотная точка');
        k:=k+1;
        d:=k+1;
      end;
    end;   
    until(d <(n-1));  
    
  readln();
END.

Последний раз редактировалось Вадим Мошев; 13.06.2015 в 00:13.
DariaCh13 вне форума Ответить с цитированием
Старый 13.06.2015, 00:20   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Вы научитесь нормально оформлять код. Чтобы можно было что-то понять.
Я например вообще не понял структуру программы, да и разбираться совсем неохота, потому что нечитаемое в таком виде. Просто пробегитесь по форуму, посмотрите как красиво и понятно можно подать код.

Непонятно например, почему эти два var идут подряд. Но там вроде как ошибка.
Код:
var Data1: array[1..n, 1..j] of real; // ***
for i:=1 to n do
for j:=1 to 2 do
Data1[i,j]:=Data[i,j];

var Data2: array[1..n] of real;  // ***
*** - вместо 1..n, 1..j должно быть например 1..10, 1..20, либо
Код:
const 
  NN=10;
  JJ=20; // n,j - нельзя, они заняты
var 
  Data1: array[1..NN, 1..JJ] of real;
То есть в качестве границ массовов - только константы.
type_Oleg вне форума Ответить с цитированием
Старый 13.06.2015, 00:25   #3
DariaCh13
 
Регистрация: 13.12.2009
Сообщений: 3
По умолчанию

Спасибо, я учту!
DariaCh13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибки при компиляции Lers Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.06.2013 21:25
Ошибки при компиляции sarkolk Общие вопросы C/C++ 27 22.08.2012 18:54
Ошибки при компиляции Tinny Общие вопросы C/C++ 7 30.06.2011 10:00
Ошибки при компиляции vader2 Общие вопросы Delphi 11 29.09.2010 16:33
ошибки при компиляции |{ot Общие вопросы Delphi 14 02.08.2008 01:20