Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на типовой расчет.
Форум «Всё о Паскале» > 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. это что?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.