Форум программистов, компьютерный форум CyberForum.ru

Описать переменную круг, в которой содержатся все дан* ные для построения круга в декартовой системе координат - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дан массив A(N). Сформулировать массив B(M), элементами которого являются большие из двух рядом стоящих в массиве A чисел http://www.cyberforum.ru/cpp-beginners/thread993595.html
Нужен код программы. Помогите даме пожалуйста.
C++ Информационная система учета рабочего времени Информационная система учета рабочего времени. Система учета рабочего времени позволяет руководителям выдавать задания и отслеживать ход их выполнения, а исполнителям вести учет рабочего времени, затраченного на выполнение каждого задания. http://www.cyberforum.ru/cpp-beginners/thread993588.html
C++ Иерархия классов для будущей игры
Здравствуйте. До этого писал простенькие игрушки вроде карточных игр, но захотелось написать что то более сложное: аркаду типу марио или рпгшку. Ну для этого уже нужно более продуманую архитектуру. Вот просидел 2 дня с карандашом и листиком, но надумал какое то неефективное и не гибкое решение. В игровом цикле будет связанный список с обьектами, которые полиморфно будут обрабатыватся в главном...
C++ Структуры. Решение кода программы
Пожалуйста, помогите написать код к программе. -Задача- В столовой предлагаются N комплексных обедов из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый дешевый и самый дорогой обед? Сколько калорий включает в себя самое калорийное блюдо? -Мое предположение, как нужно решить задачу на С++ В консоли программа должна выводить следующие строки, а пользователь с...
C++ На что программа?точнее какие у нее условия? http://www.cyberforum.ru/cpp-beginners/thread993561.html
#include <iostream> #include <cmath> using namespace std; float fun (float x) {return sqrt(x)+x;} int main () { setlocale (LC_ALL,"Russian"); float a,b=13, c=21,d;cout<<"a="; cin>>a;
C++ Задача коммивояжёра Написать программу для решения задачи коммивояжёра с помощью алгоритма Литтла. Интерфейс должен позволять вводить количество городов (вершин графа) и значения элементов матрицы расстояний между городами (матрицы смежности). Буду признателен если поможете, алгоритм решения мне ясен а вот на язык я перевести не смогу. подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
31.10.2013, 15:56     Описать переменную круг, в которой содержатся все дан* ные для построения круга в декартовой системе координат
Вот решение пункта а. Сейчас и остальное быстренько набрасаем...
Кликните здесь для просмотра всего текста
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include<iostream>
#include<cmath>
/**
 *  /Структура вектор
 */
struct vect
{
    float x0;
    float y0;
    vect(): x0(0), y0(0)
    {}
    vect(float x, float y): x0(x), y0(y)
    {}
};
 
/**
 *  /Структура круг
 */
struct krise
{
    vect center;
    float Radius;
    krise(): center(), Radius(0)
    {}
    krise(float x, float y, float R): center(x , y), Radius(R)
    {}
};
 
/**
 *  /Перегрузим операции, что бы легче было работать (аля ООП)
 */
vect operator+ (vect v1, vect v2)
{
    return vect(v1.x0 + v2.x0, v1.y0 + v2.y0);
}
vect operator- (vect v1, vect v2)
{
    return vect(v1.x0 - v2.x0, v1.y0 - v2.y0);
}
vect operator/ (vect v1, int number)
{
    return vect(v1.x0 / number, v1.y0 / number);
}
vect operator* (vect v1, float number)
{
    return vect(v1.x0 * number, v1.y0 * number);
}
 
/**
 *  /Вычисление модуля вектора
 */
float AbsVector(const vect v);
 
/**
 *  /Функция возвращает огибающий круг
 */
krise Find(const krise&, const krise&);
 
int main(int argc, char* argv[])
{
    system("chcp 1251>0");
 
    krise kris1(0, 0, 2);
    krise kris2(1, 0, 2);
    krise kr;
    kr = Find (kris1, kris2);
 
    std::cout << kr.Radius << std::endl;
    return 0;
}
krise Find(const krise& kr1, const krise& kr2)
{
    /**
    *  /Если один круг лежит внутри другого возвращаем внешний круг
    */
    if((kr1.Radius + AbsVector(kr1.center - kr2.center)) < kr2.Radius)
        return kr2;
    else if ((kr2.Radius + AbsVector(kr1.center - kr2.center)) < kr1.Radius)
        return kr1;
    /**
    *  /Ищем огибающий круг. Знание линейной алгебры поможет вам понять код
    */
    krise temp;
    temp.Radius = (kr1.Radius + kr2.Radius + AbsVector(kr1.center - kr2.center)) / 2;
    temp.center = (kr1.center + kr2.center) / 2 + vect((kr1.center.x0 - kr2.center.x0) / AbsVector(kr1.center - kr2.center), (kr1.center.y0 - kr2.center.y0) / AbsVector(kr1.center - kr2.center)) * (kr2.Radius - kr1.Radius);
    return temp;
}
float AbsVector(const vect v)
{
    return sqrt(pow(v.x0, 2) + pow(v.y0, 2));
}
 
Текущее время: 18:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru