Другие языки программирования и технологии

исправте пожалуйста прогу по паскалю: пишет unexpected end of file

constn=10;typematr=array[0..n,0..n] of integer;function max(a:matr):integer;vari, j, MaxN, N: Integer;beginfor i:=1 to n do beginfor j:=1 to n doif ((i+j <=2*i) and (i+j <= n+1)) or((i+j >=2*i) and (i+j >= n+1)) then Write('0') else Write(' ');WriteLn;end;MaxN := -MaxInt;for i:=1 to n dofor j:=1 to n doif (((i+j <=2*i) and (i+j <= n+1)) or((i+j >=2*i) and (i+j >= n+1))) and(MaxN < A[i,j]) then MaxN := A[i,j];Max := MaxN;writeln ('maximalnoe chislo',maxn);end
Доброго времени суток.

И правильно пишет. Программа должна заканчиваться словом end. (с точкой) . Это раз. А во-вторых вы структуру нарушили. У вас вообще нет программы. Программы с функциями пишутся так.

program Имя_программы;

Описание глобальных типов, констант и переменных

function Имя_Функции (Параметры функции) : ТипФункции;
var Локальные переменные функции
begin
Тело функции
end;

begin
Тело программы
end.

Сравните это со своим результатом. Короче, вот рабочий пример.

program _Tst;
uses Crt;

const n = 10;

type Matr = array[1..n, 1..n] of Integer;

function Max(A: Matr): Integer;
var
i, j, MaxN : Integer;

begin
MaxN := -MaxInt; {сначала присвоим заведомо малое число}
for i:=1 to n do {цикл по строкам}
for j:=1 to n do {цикл по столбцам}
if (((i+j <=2*i) and (i+j <= n+1)) or
((i+j >=2*i) and (i+j >= n+1))) and
(MaxN < A[i,j]) then MaxN := A[i,j]; {находим максимальный элеменгт в указанной области}
Max := MaxN; {возвращаем результат}
end;

function Test(A: Matr; k: Integer): Boolean;
var
i, j, SumD, SumCol : Integer;
begin
{считаем сумму элементов побочной диагонали}
SumD := 0;
for i:=1 to n do
for j:=1 to n do
if (i+j = n+1) then SumD := SumD + A[i,j];

{считаем сумму столбца k}
SumCol := 0;
for i:=1 to n do SumCol := SumCol + A[i,k];

Test := SumCol > SumD;
end;

var
A : Matr;
i, j, S : Integer;

begin
{начало программы}
ClrScr;
Randomize;

{заполнение матрицы слчайными числами и вывод ее на экран}
for i:=1 to n do begin
for j:=1 to n do begin
A[i,j] := Random(10); {присвоили значение}
Write(A[i,j]:4); {и напечатали}
end;
WriteLn;
end;
WriteLn;

{рисуем на экране зону поиска максимума}
for i:=1 to n do begin
for j:=1 to n do
if ((i+j <=2*i) and (i+j <= n+1)) or
((i+j >=2*i) and (i+j >= n+1)) then Write('0') else Write(' ');
WriteLn;
end;

{находим и выводим максимум на экран}
WriteLn('maximalnoe chislo', Max(A));

{проверяем 5 столбец}
if Test(A,4) then WriteLn('SumCol > SumD')
else WriteLn('SumCol < SumD');

ReadLn;
end.

Внимательнее надо быть.

Удачи!

ЗЫ Я вот подумал, что вопрос мог не поместиться из-за количества символов. Тогда обвинение в нарушении структуры снимается. :-) Но все равно, такая ошибка возникает тогда, когда программа не заканчивается точкой.
Найман Найман
Найман Найман
59 612
Лучший ответ
Просто поставь точку в конце программы и она заработает.
Nur ____
Nur ____
2 291