IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Массивы или Множества, какой тип использовать
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Андрей

Репутация: -  1  +


Есть такая задача: Дано множество А из 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.



Но у меня возникает вопрос если в задаче написано множество то какой тип использовать массив или множество, как будет правильней ? С множествами я пока еще не сделал ни одной задачи, так что мало пока в нем понимаю, поэтому использовал массив.

Сообщение отредактировано: kent -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

Продолжай использовать массив: в данном контексте под "множеством" имеется в виду "набор", и никакого отношения к типу Set Of ... языка Паскаль это не имеет...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Андрей

Репутация: -  1  +


Теперь понятно, а то у меня ещё задач семь подобного типа...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.04.2025 12:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name