Во-первых, тут есть синтаксическая ошибка: в конце первой строки отсутствует точка с запятой. Во-вторых, неверно определены диапазоны дат: нет названия города до 1703 года (на самом деле города тогда еще не было, но что-то все равно надо сообщить), не определен 1914 год, когда город был переименован в Петроград и 1924 год, когда город был переименован в Ленинград. И в-третьих, хоть это и не ошибка, но недочет программы: будут выполняться все три оператора if, даже если в первом из них искомая дата будет найдена.
Ниже предлагается исправленный вариант программы.
program name; uses crt; var a:integer; begin ClrScr; Readln(a); if a<1703 then Writeln('Город не существовал') else if (a>=1703) and (a<1914) or (a>=1991) then Writeln ('Санкт-Петербург') else if (a>=1914) and (a<1924) then Writeln ('Петроград') else Writeln ('Ленинград'); ReadKey end.
Const nmax=100; var a,b:array[1..nmax] of integer; i,j,n1,n2,s:integer; p:boolean; begin randomize; repeat write('Размер массива A = '); readln(n1); until n1 in [1..nmax]; writeln; writeln('Массив A: '); for i:=1 to n1 do begin a[i]:=random(15); write(a[i],' '); end; writeln; writeln; repeat write('Размер массива B = '); readln(n2); until n2 in [1..nmax]; writeln; writeln('Массив B: '); for i:=1 to n2 do begin b[i]:=random(15); write(b[i], ' '); end; s:=0; for i:=1 to n1 do begin p:=false; j:=1; while (j<=n2) and not p do if b[j]=a[i] then p:=true else inc(j); if p then inc(s,a[i]); end; writeln; writeln; writeln('Сумма = ',s); end.
Ниже предлагается исправленный вариант программы.
program name;
uses crt;
var a:integer;
begin
ClrScr;
Readln(a);
if a<1703 then Writeln('Город не существовал')
else
if (a>=1703) and (a<1914) or (a>=1991) then Writeln ('Санкт-Петербург')
else
if (a>=1914) and (a<1924) then Writeln ('Петроград')
else Writeln ('Ленинград');
ReadKey
end.