Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на типовой расчет.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
deada11
Всем доброго времени суток... Помогите пожалуйста с задачкой.
Задача такая:
Если все заданные точки плоскости принадлежат первой четверти, определить координаты точки, наиболее удаленной от начала координат, иначе определить координаты точек, не попавших в первую четверть.

решение простое... только когда написал код, возникли некоторые проблемы...
вот код:
program TYPEMATCH;
TYPE matr = array [1..10,1..2] of real;
vec = array [1..10] of real;
VAR a:matr;
m,k,n,i:integer;
b:vec;
xmax, ymax:real;
inp, out: text;
PROCEDURE FirstQuarter (var a:matr; n:integer; var k:integer);
Var i:integer;
Begin
k:=0;
for i:=1 to n do
if (a[i,1]>0) and (a[i,2]>0) then
k:=k+1;
end;
PROCEDURE MostLongDistant (var a:matr; n:integer; var xmax, ymax: real);
Var i:integer;
CDist, MDist: real;
Begin
xmax:=a[1,1];
ymax:=a[1,2];
MDist:=sqrt(sqr(xmax)+sqr(ymax));
for i:=2 to n do
begin
CDist:=sqrt(sqr(a[i,1])+sqr(a[i,2]));
if MDist<Cdist then
begin
MDist:=CDist;
xmax:=a[i,1];
ymax:=a[i,2];
end;
end;
end;
PROCEDURE OutOfFirstQuarter (var a:matr; n:integer; var b:vec; m: integer);
Var i:integer;
Begin
m:=0;
for i:=1 to n do
if (a[i,1]<=0) or (a[i,2]<=0) then
begin
m:=m+1;
b[m,1]:=a[i,1];
b[m,2]:=a[i,2];
end;
end;
BEGIN
assign (inp,'c:\input.pas');
assign (out,'c:\output.pas');
reset(inp);
rewrite(out);
for i:=1 to 10 do
begin
readln (inp,n);
for i:=1 to n do
begin
readln (inp,a[i,1]);
readln (inp,a[i,2]);
end;
FirstQuarter (a,n,k);
if k=n then
begin
MostLongDistant (a,n,xmax,ymax);
writeln(out, xmax:8:4, ymax:8:4);
end
else
begin
OutOfFirstQuarter (a,n,b,m);
for i:=1 to m do
writeln (out, b[m,1], b[m,1]);
end;
close (inp);
close(out);
END.



посмотрите пожалуйста... думаю что ошибок тут хватает...
и еще.. если не трудно... это блочная структура программы... переведите ее в модульную. очень прошу.
Заранее спасибо.
volvo
Цитата
думаю что ошибок тут хватает...
На F9 нажимать сам не пробовал? Компилятор тебе подробно все расскажет, какие ошибки и где... Исправляешь все синтаксические ошибки, потом возвращаешься сюда...

(кроме того, что найдет компилятор TP, есть еще:

   for i:=1 to 10 do
begin
readln (inp,n);
for i:=1 to n do { <--- Это - ошибка, вложенный цикл по той же переменной,
но компилятором Турбо Паскаля она не ловится }

)
deada11
хм... там есть строка:
begin
m:=m+1;
b[m,1]:=a[i,1];
b[m,2]:=a[i,2];
end;

на которой он ругается Invalid qualifier. это что?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.