2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Делфи
Сообщение31.01.2015, 00:21 
Аватара пользователя


27/03/14
1091
Решил написать программу для вычисления погрешностей прямых измерений. На входе задается массив констант (коэффициенты Стьюдента), доверительная вероятность по умолчанию 95%, так же задается количество измерений и цена деления прибора. Проблема возникает в процедуре для подсчета случайной погрешности. Если пытаться вывести значение случайной погрешности через процедуру rand(ниже), то почему-то значение зануляется. Ежели тупо в лоб написать формулу в головной программе(test2), то значение вычисляется спокойно. Код программы:
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const p=0.95;
const t:array[1..10] of real=(0,12.7,4.30,3.18,2.78,2.57,2.45,2.36,2.31,2.26);

type TMatrix=array[1..100] of real;


Var
      n,j:integer;
      a:TMatrix;
      s,sr,del,h,Dokr, Dprib,Sum, Drand,tnp,F,test2:real;

procedure matr(n:integer; Var a:TMatrix);
  var
      i:integer;
begin
  for i:=1 to n do
    begin
      write('a','[',i,']= ');
      readln(a[i]);
    end;
end;


procedure summ(n:integer;a:TMatrix; Var s:real);
  var
      i:integer;
begin
  s:=0;
    for i:=1 to n do
      begin
        s:=s+a[i];
      end;
  writeln ('summa= ',s:4:4);
end;

procedure srednee(s:real; Var sr:real);
begin
  sr:=s/n;
  writeln('srednee= ', sr:6:5);
end;


procedure okr(p,h:real; Var Dokr:real);
begin
  Dokr:=(p*h)/2;
  writeln ('pogreshnost` okrugleniya= ',Dokr:6:5);
end;


procedure prib(del:real; Var Dprib: real);
begin
  Dprib:=(2*del)/3;
  writeln('pribornaya= ', Dprib:6:5);
end;


procedure kvrazn(a:TMatrix; sr:real; Var Sum:real);
  var
      i:integer;
begin
  Sum:=0;
    for i:=1 to n do
      begin
        Sum:=Sum+sqr((a[i]-sr));
      end;
  writeln ('test= ',Sum:6:5);
end;


procedure rand(Sum:real; n:integer; Var Drand:real);
begin
  Drand:=t[n]*sqrt(Sum/((n-1)*n));
  writeln ('slychainaya pogr.= ', Drand:6:5);
end;

procedure full(Dokr,Dprib,Drand:real; Var F:real);
begin
  F:=sqrt(sqr(Dokr)+sqr(Dprib)+sqr(Drand));
  writeln ('polnaya pogreshnost`= ',F:6:5);
end;


Begin
  writeln('enter n');
  readln(n);
  writeln ('cena deleniya= ');
  readln(h);
  matr(n,a);
  del:=h/2;
  okr(p,h,Dokr);
  prib(del,Dprib);
  rand(Sum,n,Drand);
  full(Dokr,Dprib,Drand,F);
  writeln(t[n]:4:3);
  test2:=t[n]*sqrt(Sum/((n-1)*n));
  writeln('test2= ', test2:4:3);
  readln;
End.

 Профиль  
                  
 
 Re: Делфи
Сообщение31.01.2015, 04:39 
Аватара пользователя


27/03/14
1091
На всякий случай напишу: я уже разобрался, можете не помогать, спасибо)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group