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

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

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

> Массивы или Множества, какой тип использовать
kent
сообщение 22.07.2005 9:43
Сообщение #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 - 22.07.2005 10:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 19.06.2025 21:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"