Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
zeligena
0 / 0 / 2
Регистрация: 04.12.2010
Сообщений: 18
#1

Модули и метод простой итерации - ошибка при компиляции - Turbo Pascal

15.02.2011, 21:08. Просмотров 833. Ответов 2
Метки нет (Все метки)

Здравствуйте.
В программе по теме модульного программирования выходит ошибка при компиляции второго модуля "error3: unknown indentifier". не знаю, как исправить.
помогите пожалуйста
(задание - методом простой итерации с помощью процедурного типа уточнить корни уравнений ln(x)-x+1.8 и exp(x)-x*x*x. В первом модуле описать процедурный тип и относящуюся к нему подпрограмму, а во втором - основную подпрограмму)
Заранее благодарна

модули
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
unit mod1;
interface
implementation
  type
    fun=function(m:real):real;
    {$F+}
    function uravnenie1(x:real):real;
      begin uravnenie1:=ln(x)-x+1.8; end;
    function uravnenie2(x:real):real;
      begin Uravnenie2:=exp(x)-x*x*x; end;
    {$f-}
end.
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
unit mod2;
interface
uses mod1;
type fun=function(m:real):real;
   function uravnenie1(x:real):real;
   function uravnenie2(x:real):real;
   function iterazia(f:fun; a,b:real):real;
   const eps=0.0001;
  var x,y,z:real;
implementation
  begin
    y:=f(a); [B]{в этой строке выходит ошибка}[/B]
    repeat
      x:=(a+b)/2;
      z:=f(b);
      if y*z<0 then b:=x
               else begin
                      a:=x;
                      y:=z;
                    end;
    until (b-a)<=eps;
    x:=(a+b)/2;
    Iterazia:=x;
  end.
основная программа
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program modul;
uses mod1,mod2;
 var a,b,iks:real;
 begin
   Writeln ('введите интервал для первого уравнения ln(x)-x+1.8');
   readln(a,b);
   writeln('корень уравнения ln(x)-x+1.8 =');
   Iks:=iterazia(uravnenie1,a,b);
   writeln(Iks:7:5);
   Writeln ('введите интервал для второго уравнения exp(x)-x*x*x');
   readln(a,b);
   writeln('корень уравнения exp(x)-x*x*x =');
   Iks:=iterazia(uravnenie2,a,b)
   writeln(Iks:7:2);
   writeln('для выхода нажмите ENTER');
   readln;
 end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2011, 21:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Модули и метод простой итерации - ошибка при компиляции (Turbo Pascal):

Вычислить корни уравнения, используя метод простой итерации, метод Ньютона
2 1) Вычислить корни уравнения 2*(e^x)-5*x-2 с точностью 0.000001, используя...

Метод простой итерации
В общем проблема следующая, нужно написать задачу на решение системы методом...

Метод простой итерации, решение системы.
Люди добры, есть две системы, записанные в матричном виде. Нужно решить методом...

Метод простой итерации
пожалуйста помогите! нужно уточнить корни методом простой итерации не могу...

Метод простой итерации
Ребят помогите составить программу на языке Паскаль. Нужно сначала проверить...

Задача на метод простой итерации
решить методом простой итерации с точностью E=0.001 систему уравнений ...

2
Puporev
Модератор
54147 / 41780 / 28886
Регистрация: 18.05.2008
Сообщений: 98,328
16.02.2011, 09:46 #2
zeligena, Если тип описан в первом модуле, его больше нигде описывать не нужно, ни в других модулях, ни в основной программе.

Добавлено через 16 минут
Еще есть неточности...
{F+}{F-} не обязательно...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
unit mod1;
interface
type fun=function(m:real):real;
function uravnenie1(x:real):real;
function uravnenie2(x:real):real;
implementation
function uravnenie1(x:real):real;
begin
uravnenie1:=ln(x)-x+1.8;
end;
function uravnenie2(x:real):real;
begin
Uravnenie2:=exp(x)-x*x*x;
end;
end.
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
unit mod2;
interface
uses mod1;
function iterazia(f:fun;a,b:real):real;
const eps=0.0001;
var x,y,z:real;
implementation
function iterazia(f:fun;a,b:real):real;
begin
y:=f(a);
repeat
x:=(a+b)/2;
z:=f(b);
if y*z<0 then b:=x
else
 begin
  a:=x;
  y:=z;
 end;
until (b-a)<=eps;
x:=(a+b)/2;
Iterazia:=x;
end;
end.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program modul;
uses crt,mod1,mod2;
var a,b,iks:real;
begin
clrscr;
Writeln ('введите интервал для первого уравнения ln(x)-x+1.8');
readln(a,b);
writeln('корень уравнения ln(x)-x+1.8 =');
Iks:=iterazia(uravnenie1,a,b);
writeln(Iks:7:5);
Writeln ('введите интервал для второго уравнения exp(x)-x*x*x');
readln(a,b);
writeln('корень уравнения exp(x)-x*x*x =');
Iks:=iterazia(uravnenie2,a,b);
writeln(Iks:7:2);
writeln('для выхода нажмите ENTER');
readln;
end.
1
zeligena
0 / 0 / 2
Регистрация: 04.12.2010
Сообщений: 18
16.02.2011, 16:47  [ТС] #3
Большое спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2011, 16:47
Привет! Вот еще темы с решениями:

Метод простой итерации - найти ошибки в коде
Program zadacha1; type matriza= array of real; Var b,prob,x,x1: array of...

Метод итерации и метод Ньютона (метод касательных)
Помогите решить методом итерации и методом Ньютона выражение привиденное ниже:...

Решения СЛАУ методом простой итерации
Код решения СЛАУ методом простой итерации. Program Metod_Prostoy_Iteracii ;...

Нахождение корня методом простой итерации
Доброе время суток всем. Помогите разобраться пожалуйста! Мне нужно получить...


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

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

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