Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Kurt3021
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 7
1

Исправьте ошибки. и как добавить цикл к процедуре ввода массивов?

13.12.2013, 13:36. Просмотров 246. Ответов 0
Метки нет (Все метки)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
program one;
uses crt;
label finish;    //метка
type mass=array [1..99] of real;
mass2=array [1..99,1..99] of real;
{Текст процедуры ввода массивов}
procedure vvod(an,da:real; k:integer; var ma:mass);
var
i:integer;
a:real;
begin
a:=an;
for i:=1 to k do
   begin
   ma[i]:=a;
   a:=a+da;
   end;
end;
{Текст подпрограммы-функции}
function F(x,c,d,e:real):real;
begin
F:=1/sqrt(c*x*x+d*x+e)
end;
{Текст процедуры нахождения значения интегрального выражения методом Симпсона}
procedure simpson(ag,bg,eps:real; c,d,e,km:integer; var int:real; var err:integer);
var
k,int1,y1,yn,s4,s2,h,del,x:real;
i,j:integer;
begin
int1:=0;
y1:=F(ag,c,d,e);
yn:=F(bg,c,d,e);
k:=2;
Err:=1;
for j:=1 to km do
   begin
   int:=0;
   h:=(bg-ag)/k;
   s4:=0;
   s2:=0;
   i:=1;
   x:=ag+h;
      repeat
      if odd(i) then s4:=s4+F(x,c,d,e)     //проверка на нечетность
      else s2:=s2+F(x,c,d,e);
      int:=h*(y1+yn+4*s4+2*s2)/3;
      inc(i);
      x:=x+h;
      until i>=k;
   del:=abs(int1-int);   //модуль
   if del<eps then
      begin
      err:=err-1;
      exit
      end
   else
      begin
      int1:=int;
      k:=k*2;
      end;
   end;
end;
{Текст процедуры табулирования}
procedure tab(a,b,x:real; var er,er1:integer; var yp:real);
begin
er:=0;
er1:=0;
if b<0 then er1:=1 else 
if sqrt(b)=-a then er:=1 else yp:=(sin(8*x)/cos(8*x)-a*a*a+b)/(sqrt(b)+a);
end;
{Текст процедуры вывода данных}
procedure vivod (ma,mx:mass; y,erk:mass2; k,n:integer; b:real);  //вывод
var i,j:integer;
begin
writeln;
writeln('Результаты выполнения программы');
writeln ('Значение интеграла:   ',b:7:3);
for i:=1 to k do
   begin
   writeln ('Значение параметра:   ',ma[i]:7:3);
   writeln;
   for j:=1 to n do
   if erk[i,j]=1 then writeln ('Значение аргумента:   ',mx[j]:7:3,'     Ошибка')
   else writeln ('Значение аргумента:   ',mx[j]:7:3,'     Значение функции:   ',y[i,j]:7:3);
   writeln;
   end;
end;
procedure trap(ag,bg,eps:real; c,d,e,km:integer; var inttr:real; var err:integer);
var
int1,y1,yn,h,del,x:real;
i,k:integer;
begin
inttr:=0;
y1:=F(x,c,d,e);
yn:=F(x,c,d,e);
k:=2;
repeat
   int1:=0;
   h:=abs(bg-ag)/k;     //длина интервала
   i:=1;
   x:=ag+h;
      repeat
      int1:=int1+F(x,c,d,e);
      inc(i);
      x:=x+h;
      until i>=k;
   int1:=h*(y1/2+yn/2+int1);
   del:=abs(int1-inttr);
   inttr:=int1;
   k:=k*2;
until del<eps;
end;
var
xn,dx,an,ak,da,ag,bg,eps,b,int,a,x,yp,k1,inttr:real;
n,c,d,e,km,err,k,i,j,er,er1:integer;
ma,mx:mass;
y,erk:mass2;
begin {Начало главной программы}
clrscr; {Чистка экрана}
writeln('Введите xn,dx,n,an,ak,da,ag,bg,c,d,e,eps,km');
readln (xn,dx,n,an,ak,da,ag,bg,c,d,e,eps,km);
k1:=(ak-an)/da+1;
k:=trunc(k1);
vvod(an,da,k,ma); {Вызов подпрограммы ввода массивов}
vvod(xn,dx,n,mx); {Вызов подпрограммы ввода массивов}
simpson(ag,bg,eps,c,d,e,km,int,err); {Вызов процедуры нахождения значения интегрального выражения}
if err=1 then
   begin
   writeln('Интеграл не вычислен');
   goto finish;  //конец
   end;
b:=int;
for i:=1 to k do
   begin
   a:=ma[i];
   for j:=1 to n do
      begin
      x:=mx[j];
      tab(a,b,x,er,er1,yp); {Вызов процедуры табулирования}
      if (er=1) or (er1=1) then erk[i,j]:=1 else {Формирование массива с ошибками}
         begin
         erk[i,j]:=0;
         y[i,j]:=yp;
         end;
      end;
   end;
finish: vivod(ma,mx,y,erk,k,n,b); {Вызов подпрограммы вывода данных}
trap(ag,bg,eps,c,d,e,km,inttr,err);
writeln(inttr:7:3);
readln;
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 13:36
Ответы с готовыми решениями:

Исправьте ошибки
я вот вложил две програмки bulat77 и крутоо!!bulat77 вот её надо...

Исправьте ошибки
Все та же задача. Нужно составить программу которая решит данный пример....

Исправьте, пожалуйста, ошибки
Нужно вычислить A,B,C. d ввести с клавиатуры. известно, что d&gt;0, при x=...,...

Ошибки в написании, исправьте
uses crt; const r:set of char=; var s,st,a:string; ...

Исправьте ошибки в коде
var mas:array of real; k,n,m,q,w,s,a,b:real; i:byte; begin writeln...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 13:36

Пожалуйста, исправьте ошибки в программе
var n:integer; a:array of string; //Переменная типа string, который будет...

Исправьте синтаксические ошибки в фрагменте программы
a) Var I, k:real; S:real; Begin K=81; S:=4 For i=1 to k S=s/2 End б) Var...

Обьясните и исправьте ошибки во фрагменте программы
Заранее спасибо Вложение удалено.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru