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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.07.2015, 19:15   #1
qoTIuHr
 
Регистрация: 13.07.2015
Сообщений: 6
По умолчанию [РЕШЕНО]: Turbo Pascal. Ошибка 36: Begin expected.

Помогите пожалуйста. Программа должна вызывать процедуру, подпрограмму на выбор пользователя. Не понимаю в чем ошибка.
Ошибка 36:Begin expected. Выскакивает в самом начале после "var n:Byte", перед "1,2,3:integer."
Заранее спасибо.

Код:
Program Programm;
uses crt;
var n:Byte; 1,2,3:integer;

begin
 write('Enter');
 ReadKey;

begin
 repeat
 ClrScr;
 Writeln('Program 1 - 1');
 Writeln('Program 2 - 2');
 Writeln('Program 3 - 3');
 writeln('Exit - 0');
 writeln('Select program: ');
 Readln(n);
 Case n of
 1:zadanie1;
 2:zadanie2;
 3:zadanie3;
 end;
 until n <> 0;
 end;


{**************************ПРОЦЕДУРА №1**********************************}

procedure zadanie1 (N,H,k,j,p,i,o:integer; e,s,z,x,c,d:real);
begin
 clrscr;
 Write('Summa ryada: ','N(k*N+k+2*i)/2*k'); writeln;
 write('Vvedite chislo integer: ');
 Read(N);
 write('Vvedite chislo real: ');
 Read(x);
 
begin
 i:=1;
 k:=N*(N+2*i);
 c:=N*((k*N)+(2*i)+k)/2*k;
 write('OTBET=',c);
 
begin
 writeln;
 Write('Proizvedenie ryada: ','1/(j+h)*(Pi*h)'); writeln;
 write('Vvedite chislo integer: ');
 Read(H);
 write('Vvedite chislo real: ');
 Read(z);
 
begin
 j:=1;
 for o:= 0 to N do
 repeat
 p:=(H+j)*o until true;
 e:=j/(H+j)*p;
 write('OTBET=',e);
 
begin
 s:=c*e;
 writeln;
 writeln('Uravnenie resheno');
 writeln('OTBET=',s);
 writeln('Enter');
 readln;
 end;
 end;
 end;
 end;
 end;



{**************************ПРОЦЕДУРА №2**********************************}

procedure zadanie2(p,q,eps,d,h,x,x1,x2:real);
begin
 clrscr;
 writeln('vvedite koeffic p,q uravn:');
 write('p=');readln(p);
 write('q=');readln(q);
 write('Vvedite tochnost` opredel kornya eps=');{type 0.0001}
 readln(eps);
 d:=p*p-4*q;{Disq}
 if d<0 then
 

begin
 writeln('Uravnen ne imeet resheneeya!');
 readln;
 exit;
 end
 else if d = 0 then
 

begin
 writeln('x1=x2=',-p/2:0:5);
 readln;
 exit;
 end
 else
 

begin
 x:=-p/2;x2:=-p/2;h:=eps/10;
 repeat
 x1:=x1-h;
 x2:=x2+h;
 until (abs(x1*x2-q)<=eps);
 end;
 writeln('x1=',x1:0:5,' x2=',x2:0:5);
 writeln('proverka po formule:');
 writeln('x1=',(-p-sqrt(d))/2:0:5,' x2=',(-p+sqrt(d))/2:0:5);
 writeln('Enter');
 readln;
 end;



{**************************ПРОЦЕДУРА №3**********************************}

procedure zadanie3 (t,x,y,z:integer);
 begin

 x:=1;
 y:=2;
 z:=3;

 while (x=y) or (y=z) or (x=z) do
 begin
 t:=0;
 end;

 while (x<>y) or (y<>z) or (x<>z) do
 begin
 t:=1;
 end;
 write('Enter');
 readln;
 end.
Решение:
http://www.programmersforum.ru/showp...25&postcount=7

Последний раз редактировалось Вадим Мошев; 15.05.2018 в 19:58.
qoTIuHr вне форума
Старый 17.07.2015, 19:35   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Код:
1,2,3:integer;
Это что? Оно не нужно. Там только переменные объявляются
eoln вне форума
Старый 17.07.2015, 19:55   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

И зачем в процедуре zadanie1 4 штуки begin ? Это не ошибка , так как для каждого там есть end, но они там на фиг не нужны. Это все равно что писать вместо
a+b+c+d
вот так
(a)+(b+c)+d

И вот эта конструкция:
Код:
 repeat
 p:=(H+j)*o until true;
Вы понимаете, что это ровно то же самое, что просто вот так
Код:
 p:=(H+j)*o;
?
Кстати, переменная j у вас никак не изменится. Будет только 1.
type_Oleg вне форума
Старый 18.07.2015, 12:21   #4
qoTIuHr
 
Регистрация: 13.07.2015
Сообщений: 6
По умолчанию

Спасибо большое, надеюсь заработает.
qoTIuHr вне форума
Старый 20.07.2015, 19:34   #5
qoTIuHr
 
Регистрация: 13.07.2015
Сообщений: 6
По умолчанию

Теперь выдает такое: "Unknown identifier". На том же месте, не понимаю чему он хочет, чтобы я определил тип. Цифрам ставил тип, не помогло. После "Case n of", после "1:" и перед названием процедуры "zadanie1".

Readln(n);
Case n of
1:zadanie1;
2:zadanie2;
3:zadanie3;

Код:
Program Programm;
uses crt;
var n:Byte; 1,2,3:integer;

begin
 write('Enter');
 ReadKey;

begin
 repeat
 ClrScr;
 Writeln('Program 1 - 1');
 Writeln('Program 2 - 2');
 Writeln('Program 3 - 3');
 writeln('Exit - 0');
 writeln('Select program: ');
 Readln(n);
 Case n of
 1:zadanie1;
 2:zadanie2;
 3:zadanie3;
 end;
 until n <> 0;
 end;


{**************************ПРОЦЕДУРА №1**********************************}

procedure zadanie1 (N,H,k,j,p,i,o:integer; e,s,z,x,c,d:real);
begin
 clrscr;
 Write('Summa ryada: ','N(k*N+k+2*i)/2*k'); writeln;
 write('Vvedite chislo integer: ');
 Read(N);
 write('Vvedite chislo real: ');
 Read(x);
 
begin
 i:=1;
 k:=N*(N+2*i);
 c:=N*((k*N)+(2*i)+k)/2*k;
 write('OTBET=',c);
 
begin
 writeln;
 Write('Proizvedenie ryada: ','1/(j+h)*(Pi*h)'); writeln;
 write('Vvedite chislo integer: ');
 Read(H);
 write('Vvedite chislo real: ');
 Read(z);
 
begin
 j:=1;
 for o:= 0 to N do
 repeat
 p:=(H+j)*o until true;
 e:=j/(H+j)*p;
 write('OTBET=',e);
 
begin
 s:=c*e;
 writeln;
 writeln('Uravnenie resheno');
 writeln('OTBET=',s);
 writeln('Enter');
 readln;
 end;
 end;
 end;
 end;
 end;



{**************************ПРОЦЕДУРА №2**********************************}

procedure zadanie2(p,q,eps,d,h,x,x1,x2:real);
begin
 clrscr;
 writeln('vvedite koeffic p,q uravn:');
 write('p=');readln(p);
 write('q=');readln(q);
 write('Vvedite tochnost` opredel kornya eps=');{type 0.0001}
 readln(eps);
 d:=p*p-4*q;{Disq}
 if d<0 then
 

begin
 writeln('Uravnen ne imeet resheneeya!');
 readln;
 exit;
 end
 else if d = 0 then
 

begin
 writeln('x1=x2=',-p/2:0:5);
 readln;
 exit;
 end
 else
 

begin
 x:=-p/2;x2:=-p/2;h:=eps/10;
 repeat
 x1:=x1-h;
 x2:=x2+h;
 until (abs(x1*x2-q)<=eps);
 end;
 writeln('x1=',x1:0:5,' x2=',x2:0:5);
 writeln('proverka po formule:');
 writeln('x1=',(-p-sqrt(d))/2:0:5,' x2=',(-p+sqrt(d))/2:0:5);
 writeln('Enter');
 readln;
 end;



{**************************ПРОЦЕДУРА №3**********************************}

procedure zadanie3 (t,x,y,z:integer);
 begin

 x:=1;
 y:=2;
 z:=3;

 while (x=y) or (y=z) or (x=z) do
 begin
 t:=0;
 end;

 while (x<>y) or (y<>z) or (x<>z) do
 begin
 t:=1;
 end;
 write('Enter');
 readln;
 end.
qoTIuHr вне форума
Старый 20.07.2015, 19:39   #6
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Автор, тебе же ответили чёрным по монитору.
Убери вот эту ахинею со своего кода
1,2,3:integer;
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума
Старый 21.07.2015, 02:09   #7
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
Автор, тебе же ответили чёрным по монитору.
Убери вот эту ахинею со своего кода
1,2,3:integer;
Да там не только в этом проблема

Например:
Код:
Case n of
 1:zadanie1;
 2:zadanie2;
 3:zadanie3;
 end;
А функции описаны как:
Код:
procedure zadanie1 (N,H,k,j,p,i,o:integer; e,s,z,x,c,d:real);
procedure zadanie2(p,q,eps,d,h,x,x1,x2:real);
procedure zadanie3 (t,x,y,z:integer);

Подправил, теперь никаких ошибок выдавать не будет:
Код:
{**************************ПРОЦЕДУРА №1**********************************}
procedure zadanie1;
var N,H,k,j,p,i,o:integer;
    e,s,z,x,c,d:real;
begin
 clrscr;
 Write('Summa ryada: ','N(k*N+k+2*i)/2*k'); writeln;
 write('Vvedite chislo integer: ');
 Readln(N);
 write('Vvedite chislo real: ');
 Readln(x);

 i:=1;
 k:=N*(N+2*i);
 c:=N*((k*N)+(2*i)+k)/2*k;
 write('OTBET=',c);

 writeln;
 Write('Proizvedenie ryada: ','1/(j+h)*(Pi*h)'); writeln;
 write('Vvedite chislo integer: ');
 Readln(H);
 write('Vvedite chislo real: ');
 Readln(z);

 j:=1;
 for o:= 0 to N do
 repeat
 p:=(H+j)*o until true;
 e:=j/(H+j)*p;
 write('OTBET=',e);

 s:=c*e;
 writeln;
 writeln('Uravnenie resheno');
 writeln('OTBET=',s);
 writeln('Enter');
 readln;
end;


{**************************ПРОЦЕДУРА №2**********************************}
procedure zadanie2;
var p,q,eps,d,h,x,x1,x2:real;
begin
 clrscr;
 writeln('vvedite koeffic p,q uravn:');
 write('p=');readln(p);
 write('q=');readln(q);
 write('Vvedite tochnost` opredel kornya eps=');{type 0.0001}
 readln(eps);
 d:=p*p-4*q;{Disq}
 if d<0 then
 begin
  writeln('Uravnen ne imeet resheneeya!');
  readln;
  exit;
 end
 else if d = 0 then
  begin
   writeln('x1=x2=',-p/2:0:5);
   readln;
   exit;
  end
  else
  begin
   x:=-p/2;x2:=-p/2;h:=eps/10;
   repeat
    x1:=x1-h;
    x2:=x2+h;
   until (abs(x1*x2-q)<=eps);
  end;
 writeln('x1=',x1:0:5,' x2=',x2:0:5);
 writeln('proverka po formule:');
 writeln('x1=',(-p-sqrt(d))/2:0:5,' x2=',(-p+sqrt(d))/2:0:5);
 writeln('Enter');
 readln;
end;

{**************************ПРОЦЕДУРА №3**********************************}
procedure zadanie3;
var t,x,y,z:integer;
begin
 x:=1;
 y:=2;
 z:=3;

 while (x=y) or (y=z) or (x=z) do
 begin
  t:=0;
 end;

 while (x<>y) or (y<>z) or (x<>z) do
 begin
  t:=1;
 end;
 write('Enter');
 readln;
end;


var n:Byte;
begin
 repeat
  ClrScr;
  Writeln('Program 1 - 1');
  Writeln('Program 2 - 2');
  Writeln('Program 3 - 3');
  writeln('Exit - 0');
  writeln('Select program: ');
  Readln(n);
  Case n of
  1: zadanie1;
  2: zadanie2;
  3: zadanie3;
  end;
 until n = 0;
end.
Код в самих функциях zadanie1, zadanie2, zadanie3 я не изменял, т.е:
Код:
repeat
 p:=(H+j)*o until true;
осталось.

И самое главное, не советую в меню выбора выбирать пункт 3, то программа повиснет
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума
Старый 24.07.2015, 01:10   #8
qoTIuHr
 
Регистрация: 13.07.2015
Сообщений: 6
По умолчанию

СПАСИБО ОГРОМНОЕ. Вы очень сильно мне помогли. Все работает. Буду изучать эти ошибки, чтобы больше их не допускать. Сделал вам отзыв.

Тему можно закрывать. Помощь была очень важна для меня.

Последний раз редактировалось Вадим Мошев; 11.09.2015 в 10:55.
qoTIuHr вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему возникает ошибка? - BEGIN expected but END found Женя32 Общие вопросы Delphi 4 01.12.2013 18:20
procedure TForm1.Timer1Timer(Sender: TObject); var h:hwnd; begin //if f1 if getasynckeystate($20)<>0 then begin if FindWin Kazik Помощь студентам 2 18.11.2012 20:44
BEGIN expected but END found lypyotr Помощь студентам 4 09.11.2011 15:43
Ошибка в задаче на turbo pascal SkuLLL Помощь студентам 1 14.11.2010 20:56
Ошибка BEGIN nemq Помощь студентам 6 01.01.2010 11:33