Встречено '.', а ожидалось ';' - PascalABC.NET (25440)
Формулировка задачи:
На 169 строке возникает ошибка "Встречено '.', а ожидалось ';'". Помогите, пожалуйста, решить ее.
Решение задачи: «Встречено '.', а ожидалось ';'»
textual
Листинг программы
Program Maximum_potok; Uses Crt,GraphABC; Label Home; Const M = 19; R = 200; Type Met = Record S: Char; U: 0..M; D: Integer; End; Metka = Array[1..M] Of Met; Dmas = Array[1..M,1..M] Of Integer; Mas = Array[1..M] Of Integer; Var Ch: Char; P: Metka; N, I,J, Nac, Kon: Integer; F,C: Dmas; S,Q: Mas; Procedure Dlina; Begin GotoXY(7,7); Write('Введите число вершин графа: '); Readln(N); If N>M Then Halt; Clrscr; Begin For I:=1 To N Do For J:=1 To N Do Begin Write('Введите вес дуги [',I,',',J,']:= '); Readln(C[I,J]) End End; Clrscr; Writeln('Матрица пропускных способностей дуг'); Writeln; Write(' '); TextColor(Green); For I:=1 To N Do Write(' ',Chr(64+I),' '); Writeln; For I:=1 To N Do Begin TextColor(Green); Write(' ',Chr(64+I),' '); TextColor(White); For J:=1 To N Do Write(C[I,J]:3,' '); Writeln End; Readln; Clrscr; Writeln; Write('Введите номер вершины, являющейся истоком данной сети: '); Readln(Nac); Writeln; Write('Введите номер вершины, являющейся стоком данной сети: '); Readln(Kon); Readln End; Procedure Potok; Label M; Var A,X,D: Integer; Begin For I:=1 To N Do For J:=1 To N Do F[I,J] := 0; M: For J:=1 To N Do Begin S[J] := 0; Q[J] := 0; P[J].S := '.'; P[J].U := 0; P[J].D := 0; End; S[Nac] := 1; P[Nac].S := '+'; P[Nac].U := Nac; P[Nac].D := 100; Repeat A := 0; For J:=1 To N Do Begin If (S[J]=1) And (Q[J]=0) Then Begin For I:=1 To N Do If (C[J,I]>0) And (C[J,I]<100) Then Begin If (S[I]=0) And (F[J,I]<C[J,I]) Then Begin S[I] := 1; P[I].S := '+'; P[I].U := J; If P[J].D<C[J,I]-F[J,I] Then P[I].D := P[J].D Else P[I].D := C[J,I]-F[J,I]; A := 1 End End Else If (C[I,J]>0) And (C[I,J]<100) Then Begin If (S[I]=0) And (F[I,J]>0) Then Begin S[I] := 1; P[I].S := '-'; P[I].U := J; If P[J].D<F[I,J] Then P[I].D := P[J].D Else P[I].D := F[I,J]; A := 1 End; End; Q[J] := 1 End End; If S[Kon]=1 Then Begin X := Kon; D := P[Kon].D; While X<>Nac Do Begin If P[X].S='+' Then F[P[X].U,X] := F[P[X].U,X]+D Else If P[X].S='-' Then F[X,P[X].U] := F[X,P[X].U]-D; X := P[X].U End; Goto M; End Until A=0; Readln; Clrscr; Writeln; Writeln('Матрица максимального потока'); Writeln; Write(' '); TextColor(Green); For I:=1 To N Do Write(' ',Chr(64+I),' '); Writeln; For I:=1 To N Do Begin TextColor(Green); Write(' ',Chr(64+I),' '); TextColor(White); For J:=1 To N Do Write(F[I,J]:3,' '); Writeln End; Readln; Begin Home: ClrScr; TextBackGround(Black); TextColor(White); Dlina; Potok; Clrscr; GotoXY(12,14); Writeln('Выйти из программы поиска максимального потока в графе'); GotoXY(15,16); Writeln('Если "Да", то нажмите "Esc", иначе нажмите "Enter"'); Ch := Readkey; If Ch=#27 Then Halt Else Goto Home End.
Объяснение кода листинга программы
В данном коде реализована задача поиска максимального потока в графе.
- В начале программы объявляются переменные и типы данных:
Met
- тип записи, содержащий информацию о вершине графа (символ, количество вершин и пропускная способность дуги).Metka
- массив экземпляров типаMet
, представляющий вершины графа.Dmas
- двумерный массив, содержащий матрицу пропускных способностей дуг графа.Mas
- одномерный массив, используемый для хранения промежуточных значений при вычислении максимального потока.Ch
- переменная для чтения символа из пользовательского ввода.P
- указатель на вершину графа.N, I, J, Nac, Kon
- целочисленные переменные для хранения номеров вершин и других параметров.C, F, S, Q
- массивы для хранения промежуточных значений при вычислении максимального потока.
- Далее следуют процедуры
Dlina
иPotok
.Dlina
запрашивает у пользователя ввод количества вершин графа и сохраняет это значение в переменнойN
. Если количество вершин превышает максимально допустимое значение, программа выдает сообщение об ошибке и завершается.Potok
- основная процедура, реализующая алгоритм поиска максимального потока в графе. Она использует алгоритм Форда-Фалкерсона. Процедура состоит из цикла, который продолжается до тех пор, пока в графе есть вершины, из которых можно сделать поток. В начале каждой итерации выбирается вершина, из которой можно сделать максимальный поток, и этот поток добавляется к общему потоку. Затем ищется следующая вершина, из которой можно сделать поток, и так далее.
- В основной части программы после вывода сообщения о вводе данных пользователю вызываются процедуры
Dlina
иPotok
. После завершения работы программы выводится сообщение с предложением нажатьEsc
для выхода из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д