Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 50

Ошибка.Отсутствует BEGIN основной программы

14.02.2013, 11:37. Показов 2458. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста где у меня ошибка (Отсутствует BEGIN основной программы)
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
program Zadanie3_Massiv;
uses crt;
type matrix=array[1..10,1..10] of integer;
var m: matrix;
      n: integer;
procedure input_matrix (var m: matrix; var n: integer);
  var i,j,a,b,p1,p2: integer;
  begin
    Write ('Введите размер квадратной матрицы n');
    WriteLN (' не менее 2 и не более 10');
    ReadLN (n);
    If (n<2) Or (n>10) Then
    Begin
      Write ('Вы ввели неправильное количество строк меньше 2 или');
      Write (' больше 10, поэтому принят');
      WriteLN (' максимальный размер, т.е. n=10');
      n:=10;
    End;
    Write ('Введите левую а и правую b границы диапазона');
    WriteLN (' значений компонент матрицы');
    Write ('a='); ReadLN (a);
    Write ('b='); ReadLN (b);
    If a>b Then
    Begin
      p1:=a; a:=b; b:=p1;
    End;
    If a=b
    Then
    Begin
      p1:=0; p2:=b;
    End
    Else If b=0
    Then
    Begin
      p1:=a; p2:=0;
    End
    Else
    Begin
      p1:=b-a; p2:=a;
    End;
Randomize;
For j:=1 To n Do
  For i:=1 To n Do
    m[i,j]:=random (p1+1)+p2;
End;
procedure output_matrix (var m: matrix; n: integer);
  var i,j: integer;
  begin
   for i:=1 to n do
   begin
     for j:=1 to n do write (m[i,j]:4,'');
     writeln;
   end;
 end;
function sum_component (var m: matrix ):integer;
  var i,j,s1,s2:integer;
  begin
    S1 := 0;
    S2 := 0;
    for i := 1 to n do
      for j := 1 to n do
        if i<j then S1 := S1 + m[i, j]
    else if i>j then S2 := S2 + m[i, j];
    WriteLn('Сумма элементов, лежащих выше главной диагонали =', S1: 5);
    WriteLn('Сумма элементов, лежащих ниже главной диагонали =', S2: 5);
    WriteLn;
  end;
procedure output_abs(var m :matrix; n,s1,s2:integer);
  var i,j: integer;
  begin
  WriteLN ('Результирующая матрица');
  IF S1=S2 THEN
   for i := 1 to n do
     begin
       for j := 1 to n do
       Write(m[i, j]:3);
       WriteLN
     end;
  if S1>S2 THEN
   for i := 1 to n do
     begin
       for j := 1 to n do
     begin
     if i>j then m[i,j]:=abs(m[i,j]);
     write(m[i,j]:3);
    end;
  WriteLN;
end;
  if S1<S2 THEN
   for i := 1 to n do
     begin
    for j := 1 to n do
     begin
      if i<j then m[i,j]:=Abs(m[i, j]);
    write(m[i,j]:3);
   WriteLN;
  end;
 end;
end;
procedure output_diagonal (var n:integer);
    var i:integer; m: Array [1..10] of integer;
    begin
    Write('Массив:  ');
    For i:=1 To n Do
    BEGIN
    Write (m[i],'  ');
    WriteLN;
    end;
 end;
procedure seacrch_min (var n:integer);
    var i,j,imin,min: integer; m: Array [1..10] of integer;
    begin
    min := m[1];
    imin := 1;
    for i := 1 to n do
      if min > m[i] then
    begin
    min := m[i];
    imin := i;
  end;
    begin
  writeln('минимальный элемент массива=',min);
  writeln('его индекс=',imin);
  END;
 END;
END.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2013, 11:37
Ответы с готовыми решениями:

Ошибка- Встречено 'zap', а ожидалось begin
Помогите, пожалуйста, исправить.Должно появляться окно exe для записи данных о работниках-фамилия, должность, оклад,должно отображаться...

Как в модуле вызвать процедуру из основной программы
Не могу разобраться как в модуле вызвать процедуру из основной программы? Из модуля понятное дело, подключил в библиотеках и все, а тут...

Ошибка BEGIN
Recompiling because of C:\fpc\2.2.4\bin\i386-win32\pascal work\test.pas test.pas(46) Fatal: Syntax error, &quot;BEGIN&quot; expected but &quot;end of...

10
 Аватар для Tsin
1180 / 488 / 188
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
14.02.2013, 11:40
Maks-i, так у тебя описаны процедуры и функции, а самой программы нет. Где у тебя эти функции используются?

К тому же у тебя в конце есть один лишний END.
0
18 / 7 / 2
Регистрация: 12.02.2013
Сообщений: 58
14.02.2013, 11:41
проверь внимательно код... у тебя идет описание переменных, потом процедуры и все...
0
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 50
14.02.2013, 11:53  [ТС]
А так нормально?
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
program Zadanie3_Massiv;
uses crt;
var
m1: array[1..10,1..10] of integer;
m: array[1..10,1..10] of integer;
S1,S2:real;
a,b,p1,p2,min,imin,n,i,j:integer;
begin
 Write ('Введите размер квадратной матрицы n');
 WriteLN (' не менее 2 и не более 10');
 ReadLN (n);
 If (n<2) Or (n>10) Then
 Begin
 Write ('Вы ввели неправильное количество строк меньше 2 или');
 Write (' больше 10, поэтому принят');
 WriteLN (' максимальный размер, т.е. n=10');
 n:=10;
 End;
 Write ('Введите левую а и правую b границы диапазона');
 WriteLN (' значений компонент матрицы');
 Write ('a='); ReadLN (a);
 Write ('b='); ReadLN (b);
 If a>b Then
 Begin
 p1:=a; a:=b; b:=p1;
 End;
 If a=b Then
 Begin
 p1:=0; p2:=b;
 End
 Else If b=0 Then
 Begin
 p1:=a; p2:=0;
 End
 Else
 Begin
 p1:=b-a; p2:=a;
 End;
 Randomize;
 For j:=1 To n Do
 For i:=1 To n Do
 Begin
  m[i,j]:=random (p1+1)+p2;
 End;
 For i:=1 To n Do
 Begin
 For j:=1 To n Do Write (m[i,j]: 4, ' ');
 WriteLN;
end;
S1 := 0;
S2 := 0;
for i := 1 to n do
for j := 1 to n do
if i<j then S1 := S1 + m[i, j]
else if i>j then S2 := S2 + m[i, j];
WriteLn('Сумма элементов, лежащих выше главной диагонали =', S1: 5: 1);
WriteLn('Сумма элементов, лежащих ниже главной диагонали =', S2: 5: 1);
WriteLn;
WriteLN('Результирующая матрица');
m1:=m;
IF S1=S2 THEN
for i := 1 to n do
 begin
  for j := 1 to n do
  Write(m[i, j]:3);
  WriteLN
 end;
if S1>S2 THEN
for i := 1 to n do
 begin
  for j := 1 to n do
   begin
    if i>j then m1[i,j]:=abs(m[i,j]);
    write(m1[i,j]:3);
   end;
  WriteLN;
end;
if S1<S2 THEN
for i := 1 to n do
 begin
  for j := 1 to n do
   begin
    if i<j then m1[i,j]:=Abs(m[i, j]);
    write(m1[i,j]:3);
   end;
  WriteLN;
end;
WriteLN;
 Write('Массив:  ');
  For i:=1 To n Do
   Write (m1[i,i],'  ');
   WriteLN;
      min := m[1, 1];
  imin := 1;
 for i := 1 to n do
 if min > m[i, i] then
  begin
    min := m[i, i];
    imin := i;
  end;
  writeln('минимальный элемент массива=',min);
  writeln('его индекс=',imin);
END.
0
 Аватар для Tsin
1180 / 488 / 188
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
14.02.2013, 12:02
Maks-i, тебе виднее) у меня компилятора нет, я в Notepad++ проверяю. Программа-то работает? И куда подевались все процедуры?
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 50
14.02.2013, 12:20  [ТС]
Tsin в том то и дело, что в таком виде программа работает.А как правильно написать с процедурами - ума не приложу.
0
 Аватар для Tsin
1180 / 488 / 188
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
14.02.2013, 12:44
Maks-i, ну смотри, процедурами ты разбиваешь программу по смысловым шагам. Теперь, после объявления всех процедур, тебе надо написать саму программу, то есть конструкцию BEGIN ... 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
25
26
27
28
29
30
program test;
 
uses crt;
 
type ...;
 
var ...;
 
procedure p1();
begin
...
end;
 
procedure p2();
begin
...
end;
 
function f1();
begin
...
end;
 
BEGIN
 
p1();
p2();
f1();
 
END.
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 50
14.02.2013, 14:54  [ТС]
Короче сделал так:
Pascal
1
2
3
4
5
6
7
8
BEGIN
input_matrix;
output_matrix;
sum_component;
output_abs;
output_diagonal;
seacrch_min;
END.
выдает :неверное количество фактических параметров. Помогите исправить, желательно с описанием.(хочется самому разобратся)
0
 Аватар для Grek!
64 / 64 / 57
Регистрация: 13.04.2010
Сообщений: 150
14.02.2013, 19:26
Цитата Сообщение от Maks-i Посмотреть сообщение
Короче сделал так:
Pascal
1
2
3
4
5
6
7
8
BEGIN
input_matrix;
output_matrix;
sum_component;
output_abs;
output_diagonal;
seacrch_min;
END.
выдает :неверное количество фактических параметров. Помогите исправить, желательно с описанием.(хочется самому разобратся)
Когда вы описываете заголовок процедуры то указываете, что ей надо передать два параметра массив и целое число:
Pascal
1
procedure input_matrix (var m: matrix; var n: integer);
А при использовании в основном блоке ничего ей не передаете:
Pascal
1
2
3
4
5
6
7
8
BEGIN
input_matrix;        {здесь должно быть примерно так: input_matrix(m, n); }
output_matrix;
sum_component;
output_abs;
output_diagonal;
seacrch_min;
END.
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 50
15.02.2013, 12:01  [ТС]
А теперь то что не правильно
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN
input_matrix(m:matrix  n: integer);
  i,j,a,b,p1,p2: integer;
output_matrix( m: matrix; n: integer);
  i,j: integer;
sum_component(var m: matrix ):integer;
  i,j,s1,s2:integer;
output_abs(m :matrix; n,s1,s2:integer);
  i,j: integer;
output_diagonal(n:integer);
    i:integer; m: Array [1..10] of integer;
seacrch_min(n:integer);
    i,j,imin,min: integer; m: Array [1..10] of integer;
END.
0
 Аватар для Grek!
64 / 64 / 57
Регистрация: 13.04.2010
Сообщений: 150
15.02.2013, 13:22
Цитата Сообщение от Maks-i Посмотреть сообщение
А теперь то что не правильно
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN
input_matrix(m:matrix  n: integer);
  i,j,a,b,p1,p2: integer;
output_matrix( m: matrix; n: integer);
  i,j: integer;
sum_component(var m: matrix ):integer;
  i,j,s1,s2:integer;
output_abs(m :matrix; n,s1,s2:integer);
  i,j: integer;
output_diagonal(n:integer);
    i:integer; m: Array [1..10] of integer;
seacrch_min(n:integer);
    i,j,imin,min: integer; m: Array [1..10] of integer;
END.
Когда ты используешь процедуры в основном блоке, при передаче параметров тип указывать не надо. У тебя есть еще одна ошибка: была объявлена глобальная переменная m, далее в параметрах процедур ты указываешь переменную с таким же именем. Имена должны отличаться.
Тебе обязательно что то передавать в подпрограмму? Вот немного переделанный вариант, который работает напрямую с глобальными переменными без передачи параметров в процедуры.

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
program Zadanie3_Massiv;
uses crt;
type matrix=array[1..10,1..10] of integer;
var
m: matrix;
n: integer;
s1,s2:integer;
 
procedure input_matrix;
  var i,j,a,b,p1,p2: integer;
  begin
    Write ('Введите размер квадратной матрицы n');
    WriteLN (' не менее 2 и не более 10');
    ReadLN (n);
    If (n<2) Or (n>10) Then
    Begin
      Write ('Вы ввели неправильное количество строк меньше 2 или');
      Write (' больше 10, поэтому принят');
      WriteLN (' максимальный размер, т.е. n=10');
      n:=10;
    End;
    Write ('Введите левую а и правую b границы диапазона');
    WriteLN (' значений компонент матрицы');
    Write ('a='); ReadLN (a);
    Write ('b='); ReadLN (b);
    If a>b Then
    Begin
      p1:=a; a:=b; b:=p1;
    End;
    If a=b
    Then
    Begin
      p1:=0; p2:=b;
    End
    Else If b=0
    Then
    Begin
      p1:=a; p2:=0;
    End
    Else
    Begin
      p1:=b-a; p2:=a;
    End;
Randomize;
For j:=1 To n Do
  For i:=1 To n Do
    m[i,j]:=random (p1+1)+p2;
End;
 
procedure output_matrix;
  var i,j: integer;
  begin
   for i:=1 to n do
   begin
     for j:=1 to n do write (m[i,j]:4,'');
     writeln;
   end;
 end;
 
procedure sum_component;
  var i,j:integer;
  begin
    S1 := 0;
    S2 := 0;
    for i := 1 to n do
      for j := 1 to n do
        if i<j then S1 := S1 + m[i, j]
    else if i>j then S2 := S2 + m[i, j];
    WriteLn('Сумма элементов, лежащих выше главной диагонали =', S1: 5);
    WriteLn('Сумма элементов, лежащих ниже главной диагонали =', S2: 5);
    WriteLn;
  end;
 
procedure output_abs;
  var i,j: integer;
  begin
  WriteLN ('Результирующая матрица');
  IF S1=S2 THEN
   for i := 1 to n do
     begin
       for j := 1 to n do
       Write(m[i, j]:3);
       WriteLN
     end;
  if S1>S2 THEN
   for i := 1 to n do
     begin
       for j := 1 to n do
     begin
     if i>j then m[i,j]:=abs(m[i,j]);
     write(m[i,j]:3);
     WriteLN;
    end;
end;
  if S1<S2 THEN
   for i := 1 to n do
     begin
    for j := 1 to n do
     begin
      if i<j then m[i,j]:=Abs(m[i, j]);
    write(m[i,j]:3);
   WriteLN;
  end;
 end;
end;
 
procedure output_diagonal;
    var i,j:integer;
    begin
    Write('Массив:  ');
    For i:=1 To n Do
    Write (m[i,j],'  ');
 end;
 
procedure seacrch_min;
    var i,j,iminst, iminsl, min: integer;
    begin
    min := m[1,1];
    iminst := 1;  iminsl := 1;
    for i := 1 to n do
    for j:= 1 to n do
    if min > m[i,j] then
    begin
    min := m[i,j];
    iminst := i;
    iminsl:=j;
  end;
    begin
  writeln;
  writeln('минимальный элемент массива=',min);
  writeln('его индекс=',iminst, ',  ',iminsl);
  END;
 END;
begin
input_matrix;
output_matrix;
sum_component;
output_abs;
output_diagonal;
seacrch_min
END.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2013, 13:22
Помогаю со студенческими работами здесь

Pascal ...ошибка 36: begin expected
uses crt; const maxn=100; var a:arrayof integer; //матрица смежности w:arrayof integer; //таблица кратчайших путей ...

Дан массив строк. Напишите программу, проверяющую правильность вложения операторных скобок begin . end — каждому begin должен соответствовать end
Дан массив строк, представляющий собой фрагмент программы на языке Pascal. Напишите программу, проверяющую правильность вложения...

Записать текст паскаль-программы, разместив ключевые слова begin и end по одному на строку
Ребята помогите пожалуйста . Я студент на практике не могу решить поставленные задачи. 1. Дан текст программы на паскале....

Не получается сделать программу работоспособной. Скорее всего ошибка с Begin и End
Задание: найти индексы минимального элемента матриц (Одного элемента в каждой матрице), рассматривать вариант что их несколько - не нужно....

Вызов подпрограммы из основной программы, с сохранением работоспособности основной программы?(подробно внутри)
Добрый день. Буду благодарен, если кто-нибудь подскажет как такое реализовать. Суть вопроса: В основном консольном приложении...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru