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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2010, 22:34   #1
Маришка_Курносова
Пользователь
 
Регистрация: 01.07.2010
Сообщений: 24
Печаль Си/Си++ Нахождение площади методом Монте-Карло

На плоскости заданы несколько произвольных кругов ( с различными случаями пересечения и наложения). Методом Монте-Карло найти площадь фигуры, полученной объединением кругов.


Даже не знаю что об этом сказать, не понимаю в задаче абсолютно ничего.
Буду благодарна за подсказки к решению или готовые варианты ответов, даже если не на Си. Заранее спасибо. Ребят, если можно, поскорее, пожалуйста.
Маришка_Курносова вне форума Ответить с цитированием
Старый 01.07.2010, 23:13   #2
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

http://schoolkam.narod.ru/info/monte.htm
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 01.07.2010, 23:35   #3
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <ctime>
#include <math.h>

using namespace std;

class Point
{
public:
	int x;
	int y;
}

class Circle
{
public:
	Point cen;
	int rad;
}

int main(void)
{
	ifstream inf("input.txt");
	int count;
	inf >> count;
	Circle * mas = new Circle[count];
	for (int i = 0; i < count; i++)
	{
		inf >> mas[i].cen;
		inf >> mas[i].rad;
	}

	int maxx, minx, maxy, miny;

	maxx = mas[0].cen.x + mas[0].rad;
	minx = mas[0].cen.x - mas[0].rad;
	maxy = mas[0].cen.y + mas[0].rad;
	miny = mas[0].cen.y - mas[0].rad;
	for (int i = 1; i < count; i++)
	{
		int z = mas[i].cen.x + mas[i].rad;
		if (maxx < z)
			maxx = z;
		z = mas[i].cen.x - mas[i].rad;
		if (minx > z)
			minx = z;
		z = mas[i].cen.y + mas[i].rad;
		if (maxy < z)
			maxy = z;
		z = mas[i].cen.y - mas[i].rad;
		if (miny > z)
			miny = z;
	}

	srand(time(NULL));

	int positives = 100000;

	int sum = 0;
	for (int i = 0; i < positives; i++)
	{
		double xx = rand();
		double yy = rand();
		xx = xx/RAND_MAX*(maxx-minx) + minx;
		yy = yy/RAND_MAX*(maxy-miny) + miny;
		bool t = false;
		for (int j = 0; j < count; j++)
		{
			double len = (xx-mas[i].cen.x)*(xx-mas[i].cen.x) + (yy-mas[i].cen.y)*(yy-mas[i].cen.y);
			len = sqrt(len);
			if (len < mas[i].rad)
				t = true;
		}
		if (t)
			sum++;
	}

	double s = (maxx-minx)*(maxy-miny)*((double)(sum)/(double)(positives));

	cout >> s;

	system("pause");

	return 0;
}
mMAg вне форума Ответить с цитированием
Старый 11.11.2012, 16:17   #4
dando
 
Регистрация: 29.10.2012
Сообщений: 3
По умолчанию

Ошибки при компиляции:
1 IntelliSense: no operator "<<" matches these operands c:\users\администратор\documents\vi sual studio 2010\projects\c++\console\p1921\mon te-carlo\monte-carlo\monte-carlo.cpp 31 7 Monte-Carlo
2 IntelliSense: no operator ">>" matches these operands c:\users\администратор\documents\vi sual studio 2010\projects\c++\console\p1921\mon te-carlo\monte-carlo\monte-carlo.cpp 82 7 Monte-Carlo
dando вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск площади фигуры методом Монте - Карло ChertYaGa Паскаль, Turbo Pascal, PascalABC.NET 12 10.02.2017 20:10
Кратные интегралы методом Монте-Карло (php) TERAB1T Помощь студентам 1 24.05.2010 11:45
методом монте-карло Uskoff Microsoft Office Excel 1 15.01.2010 14:27
Найти интеграл методом Монте-карло ___LORD___ Общие вопросы C/C++ 2 13.05.2009 21:24
Помогите с методом Монте-Карло!!! Byanka Помощь студентам 2 09.02.2009 20:18