Не компилируется программа - PascalABC.NET
Формулировка задачи:
не работает программа в чем причина?
Листинг программы
- program OTC;
- uses Crt;
- const
- c=2.2E-7;
- r=9.1E3;
- tr=5E-3;
- n=50;
- otr=100;
- var
- st,t:real;
- k,npp:word;
- f:text;
- function integral(vid:byte;verx,niz:real;n:word;Time:real):real;
- var
- d,y,S,tau:real;
- begin
- d:=(verx-niz)/n;
- S:=0;
- for k:=0 to n do
- begin
- tau:=niz+k*d;
- case vid of
- 1: y:=(1-exp((-1)*(6*tau/tr)))*((1+sqrt(5))*exp((-1)*((sqrt(5)+3)*(Time-tau)/ (2*r*c))-(1-sqrt(5))*exp((-1)*(3-sqrt(5))*(Time-tau)/(2*r*c)))/(2*sqrt(5)*r*c));
- 2: y:=(1-exp(-3))*exp((-1)*(6*tau/tr-3)*(6*tau/tr-3))*((1+sqrt(5))*exp((-1)*
- ((sqrt(5)+3)*(Time-tau)/(2*r*c))-(1-sqrt(5))*exp((-1)*(3-sqrt(5))*(Time-tau)/
- (2*r*c)))/(2*sqrt(5)*r*c));
- end;
- if k<>0 then
- begin
- if(k mod 2)=0 then
- begin
- if k<>n then y:=2*y
- end
- else
- y:=4*y;
- end;
- S:=S+y; end;
- integral:=d*S/3; end; begin ClrScr; Assign(f,'OTC.doc');
- Rewrite(f); st:=tr/n; t:=0;
- npp:=0;
- writeln(f,' N/n Время,mc Uвых,B');
- while t <(tr/2) do
- begin
- npp:=npp+1;
- writeln(f,npp:5,(1000*t):9:2,integral(1,t,0,otr,t):20:10);
- t:=t+st;
- end;
- while t<=3*tr+st do
- begin
- npp:=npp+1;
- writeln(f,npp:5,(1000*t):9:2,
- integral(1,tr/2,0,otr,t)+integral(2,t,tr/2,otr,t):10:8);
- t:=t+st;
- end;
- Close(f); end.
Решение задачи: «Не компилируется программа»
textual
Листинг программы
- program OTC;
- uses
- Crt;
- const
- c = 2.2E-7;
- r = 9.1E3;
- tr = 5E-3;
- n = 50;
- otr = 100;
- var
- st, t: real;
- npp: word;
- f: text;
- function integral(vid: byte; verx, niz: real; n: word; Time: real): real;
- var
- d, y, S, tau: real;
- k :integer;
- begin
- d := (verx - niz) / n;
- S := 0;
- for k := 0 to n do
- begin
- tau := niz + k * d;
- case vid of
- 1: y := (1 - exp((-1) * (6 * tau / tr))) * ((1 + sqrt(5)) * exp((-1) * ((sqrt(5) + 3) * (Time - tau) / (2 * r * c)) - (1 - sqrt(5)) * exp((-1) * (3 - sqrt(5)) * (Time - tau) / (2 * r * c))) / (2 * sqrt(5) * r * c));
- 2:
- y := (1 - exp(-3)) * exp((-1) * (6 * tau / tr - 3) * (6 * tau / tr - 3)) * ((1 + sqrt(5)) * exp((-1) *
- ((sqrt(5) + 3) * (Time - tau) / (2 * r * c)) - (1 - sqrt(5)) * exp((-1) * (3 - sqrt(5)) * (Time - tau) /
- (2 * r * c))) / (2 * sqrt(5) * r * c));
- end;
- if k <> 0 then
- begin
- if(k mod 2) = 0 then
- begin
- if k <> n then y := 2 * y
- end
- else
- y := 4 * y;
- end;
- S := S + y; end;
- integral := d * S / 3;
- end;
- begin
- ClrScr; Assign(f, 'OTC.doc');
- Rewrite(f); st := tr / n; t := 0;
- npp := 0;
- writeln(f, ' N/n Время,mc Uвых,B');
- while t < (tr / 2) do
- begin
- npp := npp + 1;
- writeln(f, npp:5, (1000 * t):9:2, integral(1, t, 0, otr, t):20:10);
- t := t + st;
- end;
- while t <= 3 * tr + st do
- begin
- npp := npp + 1;
- writeln(f, npp:5, (1000 * t):9:2,
- integral(1, tr / 2, 0, otr, t) + integral(2, t, tr / 2, otr, t):10:8);
- t := t + st;
- end;
- Close(f);
- end.
Объяснение кода листинга программы
Список элементов кода:
- Объявление переменных и констант:
- c = 2.2E-7 (константа, значение 2.2 * 10^-7)
- r = 9.1E3 (константа, значение 9.1 * 10^3)
- tr = 5E-3 (константа, значение 5 * 10^-3)
- n = 50 (переменная, значение 50)
- otr = 100 (переменная, значение 100)
- st, t (переменные, значение tr / n и 0 соответственно)
- npp (переменная, используется для нумерации строк в файле)
- f (переменная, используется для записи в файл)
- vid (переменная, используется в функции integral, значение 1 или 2)
- verx, niz (переменные, используются в функции integral, значение t и 0 соответственно)
- niz (переменная, используется в функции integral, значение t)
- S (переменная, используется в функции integral, значение 0)
- tau (переменная, используется в функции integral, значение tau)
- k (переменная, используется в цикле функции integral, значение от 0 до n)
- d (переменная, используется в функции integral, значение (verx - niz) / n)
- y (переменная, используется в функции integral, значение вычисляется в процессе)
- tau (переменная, используется в функции integral, значение tau)
- Time (переменная, используется в функции integral, значение время)
- integral (функция, принимает vid, verx, niz, n, Time и возвращает значение интеграла)
- Запись заголовка и основной части программы:
- program OTC;
- uses Crt;
- const c, r, tr, n, otr;
- var st, t, npp, f;
- function integral(vid: byte; verx, niz: real; n: word; Time: real): real;
- var d, y, S, tau: real;
- k: integer;
- begin
- ClrScr; Assign(f, 'OTC.doc');
- Rewrite(f); st := tr / n; t := 0;
- npp := 0;
- writeln(f, ' N/n Время,mc Uвых,B');
- while t < (tr / 2) do
- begin
- npp := npp + 1;
- writeln(f, npp:5, (1000 * t):9:2, integral(1, t, 0, otr, t):20:10);
- t := t + st;
- end;
- while t <= 3 * tr + st do
- begin
- npp := npp + 1;
- writeln(f, npp:5, (1000 * t):9:2, integral(1, tr / 2, 0, otr, t) + integral(2, t, tr / 2, otr, t):10:8);
- t := t + st;
- end;
- Close(f);
- end.
- Вывод списка элементов кода:
- Не компилируется программа
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д