Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2010, 16:00   #1
klepsburger
 
Аватар для klepsburger
 
Регистрация: 21.10.2010
Сообщений: 7
По умолчанию Pascal. Область истинности.



Задано N точек на плоскости. Записать логическое выражение, соответствующее заданной области истинности. Составить программу для:
• подсчета количества точек, попавших в заданную область.
• формирования массива из координат точек, попавших в заданную область.

Впринципе, практически всё сделал, только не понимаю: как указать то, что область - это не полное кольцо, а только то, что по правую сторону от прямой, рассположенной под углом 45 градусов к оси ОХ???...

Код:
uses crt;
var k,n,i:integer;
x,y:real;
begin
  clrscr;
  write('Vvedite kolli4estvo to4ek:=');
  readln(n);
  k:=0;
  for i:=1 to n do
    begin
      write('Vvedite x[i]:=');
      readln(x);
      write('Vvedite y[i]:=');
      readln(y);
        if (x*x+y*y<=3) and (x*x+y*y>=2) and {тут условие угла которое я не знаю как указать} then
          k:=k+1;
    end;
  writeln('Kolli4estvo to4ek popavshih v oblast:=',k:2);
  readln;
end.
Ещё не доконца понял, как вывести все точки, попавшие в виде массива, но думаю разберусь... Просто пока на области истинности зациклился

Последний раз редактировалось klepsburger; 21.10.2010 в 16:05.
klepsburger вне форума Ответить с цитированием
Старый 21.10.2010, 16:18   #2
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

(ArcTan(y / x) <= Pi * 0.75) and (ArcTan(y / x) >= -Pi / 4)
WhiteSpirit вне форума Ответить с цитированием
Старый 21.10.2010, 16:36   #3
klepsburger
 
Аватар для klepsburger
 
Регистрация: 21.10.2010
Сообщений: 7
По умолчанию

Код:
uses crt;
var k,n,i:integer;
x,y:real;
begin
  clrscr;
  write('Vvedite kolli4estvo to4ek:=');
  readln(n);
  k:=0;
  for i:=1 to n do
    begin
      write('Vvedite x[i]:=');
      readln(x);
      write('Vvedite y[i]:=');
      readln(y);
        if (x*x+y*y<=3) and (x*x+y*y>=2) and (ArcTan(y/x)<=Pi*0.75) and (ArcTan(y/x)>=-Pi/4) then
          k:=k+1;
    end;
  writeln('Kolli4estvo to4ek popavshih v oblast:=',k:2);
  readln;
end.

и всё равно если проверить считает не правильно: я задавал 2 точки с координатами A(2,5;0) B(1;1). очевидно что В не должна попадать в область, и колличество точек в ответе должно быть равным 1, но выдаёт 2... А если ввести х и у = 0 то вообще происходит деление на 0 и вылетает...
klepsburger вне форума Ответить с цитированием
Старый 21.10.2010, 17:01   #4
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

Так надо брать квадратные корни от суммы квадратов x и y
А чтобы избавиться от деления на нуль, вместо y / x можно написать y / (x - 0.00001 * Sign(x))

Последний раз редактировалось WhiteSpirit; 21.10.2010 в 17:05.
WhiteSpirit вне форума Ответить с цитированием
Старый 21.10.2010, 17:39   #5
klepsburger
 
Аватар для klepsburger
 
Регистрация: 21.10.2010
Сообщений: 7
По умолчанию

спасибо большое)
klepsburger вне форума Ответить с цитированием
Старый 21.10.2010, 17:47   #6
klepsburger
 
Аватар для klepsburger
 
Регистрация: 21.10.2010
Сообщений: 7
По умолчанию

спасибо большое
klepsburger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблицы истинности логических формул. povezlo Microsoft Office Excel 7 23.12.2010 10:12
попадает ли точка в область pascal evklid Помощь студентам 11 04.10.2010 15:46
Таблицы истинности PAVEL315 Помощь студентам 1 28.02.2010 19:24
Таблица истинности ket01 Помощь студентам 1 31.01.2010 11:27
не работает проверка истинности strateg66 Помощь студентам 7 07.10.2009 13:38