Форум программистов, компьютерный форум, киберфорум
Наши страницы

Вычисление площади методом Монте-Карло - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как окрасить в цвет фигуру, траекторию, область http://www.cyberforum.ru/cpp-beginners/thread694650.html
Как мне передать все значения моих точек в одно поле, которому в последствие мы зададим цвет, учитывая способы рисования моей траектории и фигуры?
C++ Разработать битовое поле, описывающее состояния элементов прибора Задание: Разработать битовое поле, описывающее состояния элементов прибора. Ввести с консоли число в 16-ричной системе счисления, преобразовать его в битовое поле за счёт использования объединения.... http://www.cyberforum.ru/cpp-beginners/thread694649.html
Создание двумерного динамического массива C++
Нужно разработать консольное приложение в Visual Studio (использую 2010), которое вводит c клавиатуры двумерный массив целых чисел. Вот сам код. #include "stdafx.h" #include <iostream> using...
C++ Сделать блок схему
помогите пожалуйста (надо блок схему) Получить действительную матрицу a i,j=1,...n, первая строка которой задается формулой aij=2j+3(j=1...n) вторая строка задается формулой a2j=j-3/2+1/j(j=1,...n),...
C++ Матрица из StringGrid: найти количество положительных элементов http://www.cyberforum.ru/cpp-beginners/thread694625.html
Ввести матрицу в StringGrid 6x3 и вывести количество ее положительных элементов.
C++ Найти в тексте заданное слово и добавить новое перед ним У меня есть прога. Суть ее в том что она из текстового файла читает информацию и обрабатывает ее(в строке по одному слову), она когда находит слово "паскаль", перед ним вставляет слово "язык" (на... подробнее

Показать сообщение отдельно
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
19.11.2012, 23:20  [ТС]
Цитата Сообщение от Nick Alte Посмотреть сообщение
По поводу случайных чисел: функция rand возвращает целые значения в диапазоне от 0 до достаточно большого числа, определённого константой RAND_MAX. Преобразовать такое число в вещественное в заданном диапазоне (основная цель RandFloat) несложно.

Проверка принадлежности InsideFigure - функция, возвращающая значение bool и проверяющая соблюдение описанных выше условий.
Как правильно это сделать я не совсем понимаю??????? Вот, что то сделал, но это бред:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<cstdio> 
#include<cmath>
#include<ctime>
#include<iomanip>
#include<cstdlib> 
#include<iostream> 
using namespace std;
template <class T>
bool InsideFigure(const char * sMsg, T &val);
static float RandFloat(double b0, double b1)
{
    float t =  (rand()%((int)(b1/100000)-(int)(b0/100000)+1)+(int)(b0/100000));
    return t / 100000;
}
 int main() {
    double a = 0;
    cin >> a;   // В дальнейшем нам может понадобиться проверка введённого значения, но сейчас предположим, оно заведомо корректно.
    const double b0 = a/2, b1 = a*2; // Диапазон (одинаковый по осям x и y)
    const double S0 = (b1 - b0)*(b1 - b0);  // Площадь квадрата, в который вписана фигура
    const int N = 100000;  // Общее количество точек
    int n = 0;   // Количество точек внутри фигуры
    double RandFloat(b0, b1);
    srand ( time(NULL) );
    for(int i=0; i < N; ++i)
        double RandFloat(b1 - b0) =  (rand() % ((b1 - b0) * 1000))/1000;
        double InsideFigure;
        if(InsideFigure(RandFloat(b0, b1), RandFloat(b0, b1)))  // Проверяем пару координат на принадлежность фигуре
            ++n;  // Увеличиваем счётчик
    cout << "Monte-Carlo area: " << (S0 * n) / N << endl;
    cout << "Exact area: " << (1.875 - 2*log(2))*a*a << endl;
    cin.get();
    return 0;
 }
    template <class T>
bool InsideFigure(const char * sMsg, T &val)
{
    bool bInsideFigure = true;
    cout<<sMsg;
    if(!(cin>>val))
        bInsideFigure = false;
    if(!bInput)
    {
        cin.sync();
        cin.clear();
    }
    return bInsideFigure;
}
Подскажите пожалуйста как правильно записать условия для RandFloat и InsideFigure????? Заранее огромное спасибо.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru