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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2013, 03:13   #1
Ильдар_
Новичок
Джуниор
 
Регистрация: 21.12.2013
Сообщений: 3
По умолчанию Задача на расчет попадания количества точек в заданную область.

Здравствуйте!
Большая просьба помочь в написании программы. Сам пытался,не получилось.Пожалуйста очень надо экзамен на носу надо сдать)

Задача:
Нужно чтобы программа выдавал количество точек попавших в заштрихованную область.
Изображения
Тип файла: jpg IMG_7864.jpg (95.4 Кб, 140 просмотров)
Ильдар_ вне форума Ответить с цитированием
Старый 21.12.2013, 04:44   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Делается так:
1) генерируется пара случайных чисел X,Y - координаты точки,
2) проверяется - попала точка или нет. Если попала - счетчик прибавляется.
3) переход к 1 нужное число раз.

.. Сам пытался,не получилось
Ну так покажи? По крайней мере из того, что получилось можно будет получить ответы на вопросы:
-В которую область? В кружок, или треугольник, или все вместе?
- Непонятны ограничения координат X,Y - то есть область возможных значений. Могут например, координаты быть X=500, Y=-100 ?

Последний раз редактировалось type_Oleg; 21.12.2013 в 04:48.
type_Oleg вне форума Ответить с цитированием
Старый 22.12.2013, 02:47   #3
Ильдар_
Новичок
Джуниор
 
Регистрация: 21.12.2013
Сообщений: 3
По умолчанию

Можете пожалуйста написать сам код) суть как делать я в принципе понимаю, записать не могу)Только начал программировать в делфи.
Заранее большое спасибо).

1)область круг и треугольник вместе(это как бы одна фигура)
2)ограничения координат это прямоугольник описанный вокруг фигуры(то есть (-1,-1); (-1;2); (2;2); (2;-1).

Процесс такой:В заданный прямоугольник должны рандомно выбрасываться точки,и нужно программно посчитать количество точек попавших в заштрихованную область.

Вот то что я смог сделать:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var n,m,i,R:Integer;x,y:Real;
SA,SR,SP:Real;A,B,C,D:Real;
Xs,Ys:array[1..4]of integer;
begin
n:=StrToInt(Edit1.Text);
for i:=1 to n do
begin
//A
Xs[1]:=-1;
Ys[1]:=-1;
//B
Xs[2]:=-1;
Ys[2]:=2;
//C
Xs[3]:=2;
Ys[3]:=2;
//D
Xs[4]:=2;
Ys[4]:=-1;

 Randomize;
R:=Random(3);

X:=Xs[R];
Y:=Ys[R];
end
end;

end.

Последний раз редактировалось Stilet; 22.12.2013 в 09:42.
Ильдар_ вне форума Ответить с цитированием
Старый 22.12.2013, 03:36   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var n,i,kol:Integer;
   x,y:Double;
begin
 Randomize;
 kol:=0;
 n:=StrToIntDef(Edit1.Text,0);
 if n<1 then Exit;   // если что-то не то ввели
 for i:=1 to n do
  begin
   x:=-1+3*Random;  // Random без параметров зозвращает дробное число от 0 до 1
   y:=-1+3*Random;
   if (y>0)and(x>0)
    then                // если в 1-м квадранте - проверка на треуг.
      if y<(2-x) then Inc(kol) else Continue
    else                //  если не в 1-м квадранте - проверка на круг
      if (x*x+y*y)<1 then Inc(kol);
  end;
 Edit2.Text:=IntToStr(kol);
end;
Проверял, дает результаты близкие к вероятности 0,484, как и должно быть.

Последний раз редактировалось type_Oleg; 22.12.2013 в 03:39.
type_Oleg вне форума Ответить с цитированием
Старый 23.12.2013, 02:21   #5
Ильдар_
Новичок
Джуниор
 
Регистрация: 21.12.2013
Сообщений: 3
По умолчанию

огромное спасибо )))!!все работает)немного непонятно как)один маленьких вопрос:что означает ko1 ?
Ильдар_ вне форума Ответить с цитированием
Старый 23.12.2013, 02:28   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,342
По умолчанию

Не ko1, а kol (кстати, поэтому стараются не использовать символы, похожие в написании). Это как раз количество попаданий.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
случайное попадание точек в заданную область в Pascal DeadKeLeVRa Помощь студентам 1 07.06.2013 14:59
Исследования попадания точки в заданную область uHkBu3uTop Помощь студентам 2 19.01.2012 12:35
Алгоритм проверки попадания точки в заданную (заштрихованную) область. ming_ruport Помощь студентам 1 14.10.2011 01:51
Алгоритм проверки попадания точки в заданную (заштрихованную) область ming_ruport Помощь студентам 5 11.10.2011 09:32
определение количества точек,попадающих в заданную область 13xxx Паскаль, Turbo Pascal, PascalABC.NET 0 20.12.2010 23:14