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

uses crt;
var a : array [1..1000] of Integer;
    N,i : Integer;
    min,max : Integer;
    sec_min,sec_max : Integer;
    a1_min,a1_max : Integer;
    a1_sec_min,a1_sec_max : Integer;
    a2_min,a2_max : Integer;
    a2_sec_min,a2_sec_max : Integer;
    a3_min,a3_max : Integer;
    a3_sec_min,a3_sec_max : Integer;
    a4_min,a4_max : Integer;
    a4_sec_min,a4_sec_max : Integer;
begin
     {$R+}
     Clrscr;
     Write('Input N:');
     ReadLn(N);
     Write('Input set N:');
     for i := 1 to N do
        Read(a[i]);
     min := Maxint; sec_min := Maxint;
     max := -32768; sec_max := -32768;
     for i := 1 to N do begin
       if (a[i] > 0) then begin
        if (a[i] < min ) then begin
          sec_min := min;
          min :=a[i];
        end
        else if (a[i] < sec_min) and (a[i] <> min) then
          sec_min := a[i];
        if (a[i] > max) then begin
          sec_max := max;
          max := a[i];
        end
        else if (a[i] > sec_max) and (a[i] <> max) then
          sec_max := a[i];
        a1_min := min; a1_max := max;
        a1_sec_min := sec_min; a1_sec_max := sec_max;
        a2_min := min; a2_max := max;
        a4_sec_min := min; a4_sec_max := max;
       end;
     end;
       min := Maxint; sec_min := Maxint;
       max := -32768; sec_max := -32768;
     for i := 1 to N do begin
       if (a[i] < 0) then begin
         if (a[i] < min ) then begin
          sec_min := min;
          min :=a[i];
         end
         else if (a[i] < sec_min) and (a[i] <> min) then
           sec_min := a[i];
        if (a[i] > max) then begin
          sec_max := max;
          max := a[i];
        end
        else if (a[i] > sec_max) and (a[i] <> max) then
          sec_max := a[i];
       a3_min := max; a3_max := min;
       a3_sec_min := sec_max; a3_sec_max := sec_min;
       a2_sec_min := max; a2_sec_max := min;
       a4_min := max; a4_max := min;
       end;
     end;
     if (a2_min = 0) or (a2_sec_min = 0) then begin
       a2_min := 0; a2_sec_min := 0;
     end;
     if (a2_max = 0) or (a4_sec_max = 0) then begin
       a2_max := 0; a2_sec_max := 0;
     end;
     if (a4_min = 0) or (a4_sec_min = 0) then begin
       a4_min := 0; a4_sec_min := 0;
     end;
     if (a4_max = 0) or (a4_sec_max = 0) then begin
       a4_max := 0; a4_sec_max := 0;
     end;
     WriteLn;
     WriteLn('--------------------------');
     WriteLn('Nearest points info:');
     WriteLn('I quarter nearest:',' (',a1_min,',',a1_sec_min,')');
     WriteLn('II quarter nearest:',' (',a2_min,',',a2_sec_min,')');
     WriteLn('III quarter nearest:',' (',a3_min,',',a3_sec_min,')');
     WriteLn('IV quarter nearest:',' (',a4_min,',',a4_sec_min,')');
     WriteLn('***************************');
     WriteLn('Farthest points info:');
     WriteLn('I quarter farthest:',' (',a1_max,',',a1_sec_max,')');
     WriteLn('II quarter farthest:',' (',a2_max,',',a2_sec_max,')');
     WriteLn('III quarter farthest:',' (',a3_max,',',a3_sec_max,')');
     WriteLn('IV quarter farthest:',' (',a4_max,',',a4_sec_max,')');
     WriteLn('----------------------------');
     Readkey;
end.



Но у меня возникает вопрос если в задаче написано множество то какой тип использовать массив или множество, как будет правильней ? С множествами я пока еще не сделал ни одной задачи, так что мало пока в нем понимаю, поэтому использовал массив.
volvo
Цитата(kent @ 22.07.05 9:43)
если в задаче написано множество то какой тип использовать массив или множество, как будет правильней ?

Продолжай использовать массив: в данном контексте под "множеством" имеется в виду "набор", и никакого отношения к типу Set Of ... языка Паскаль это не имеет...
kent
Теперь понятно, а то у меня ещё задач семь подобного типа...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.