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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2017, 14:30   #1
users1
Пользователь
 
Регистрация: 12.01.2017
Сообщений: 19
По умолчанию Исправьте ошибку пожалуйста в function Pascal

Не понимаю что компилятору не нравится в предпоследней строке
Код
program p2;

var
Arr_X, Arr_Y:array [1..3] of real;
S: real;

function Square(determ:real): real;
begin
//вычисление по формуле
S := 0.5*abs(determ);
Square := S;

end;

function determ(var Arr_X, Arr_Y: array of real):real;
begin
determ:=(Arr_X[1]-Arr_X[3])*(Arr_Y[2]-Arr_Y[3])-(Arr_X[2]-Arr_X[3])*(Arr_Y[1]-Arr_Y[3]);
end;

begin
for var i := 1 to 3 do
begin
writeln('Введите координаты x(', i , ')');
readln(Arr_X[i]);
writeln('Введите координаты y(', i , ')');
readln(Arr_Y[i]);
end;

writeln('Площадь вашего 3-угольника = ', Square(determ(Arr_X, Arr_Y)) );
end.

Последний раз редактировалось users1; 21.02.2017 в 14:41.
users1 вне форума Ответить с цитированием
Старый 21.02.2017, 14:32   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вроде бы "кол-во открывающихся скобок должно равняться кол-ву закрывающихся"...
Считай у себя в последней строчке.
ura_111 вне форума Ответить с цитированием
Старый 21.02.2017, 14:56   #3
users1
Пользователь
 
Регистрация: 12.01.2017
Сообщений: 19
По умолчанию

ura_111
это не то
users1 вне форума Ответить с цитированием
Старый 21.02.2017, 15:16   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Не понимаю что компилятору не нравится в предпоследней строке
он обычно об этом говорит сам.
чтобы проанализировать сложную строчку(много вложенных функций), а некорректная строка именно такова, надо(можно) превратить ее в несколько более простых строчек с использованием дополнительных переменных.

Код:
dtm:=Determ(....);
q:=square(dtm);
writeln(..., q);
и наконец понять КАКАЯ из частей и почему ему не нравится.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.02.2017 в 15:22.
evg_m вне форума Ответить с цитированием
Старый 21.02.2017, 16:23   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, обязательно нужно указывать, какой именно у Вас Паскаль.
судя по строчке:
Цитата:
Код:
for var i := 1 to 3 do
у Вас PascalABC.NET.
(в стандартном Паскале так переменные определять нельзя, а в этом монстре - можно).

во-вторых, Вам же ясно и чётко, по русски выдаётся причина ошибки компиляции:
Program1.pas(29) : Неправильный тип параметров подпрограммы

потому что массивы Arr_X, Arr_Y имеют тип array [1..3] of real
а в процедуре переменные описаны как array of real
(кстати, в другом Паскале такой подход мог сработать - см. "Открытые массивы" = Open Arrays, но не в Pascal ABC.NET!!!)

да и не нужен здесь открытый тип.
у Вас массивы одного типа, вот его и надо использовать, предварительно описав:
Код:
type PointArray = array [1..3] of real;
var
  Arr_X, Arr_Y : PointArray;
  S: real;

.....

function determ(var Arr_X, Arr_Y: PointArray):real;
begin
   determ:=(Arr_X[1]-Arr_X[3])*(Arr_Y[2]-Arr_Y[3])-(Arr_X[2]-Arr_X[3])*(Arr_Y[1]-Arr_Y[3]);
end;

.....
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправьте ошибку пожалуйста AdelinaMango Общие вопросы C/C++ 1 10.04.2014 20:47
Исправьте ошибку Rammstalex Паскаль, Turbo Pascal, PascalABC.NET 3 11.12.2013 20:49
Исправьте ошибку!! Krivaia_soplea Паскаль, Turbo Pascal, PascalABC.NET 5 07.11.2012 20:15
Исправьте ошибку kipapsih Помощь студентам 0 07.01.2011 20:19
Исправьте ошибку пожалуйста Алиса_1515 Помощь студентам 1 03.12.2009 19:12