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

Перевод из Паскаль в C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Спроектировать базу данных, содержащую сведения о машинах http://www.cyberforum.ru/cpp-beginners/thread1495199.html
Спроектировать базу данных, содержащую сведения о машинах: марка, цвет, где выпущена, когда выпущена, наличие в продаже, стоимость. Получить ответы на следующие запросы: а) выбрать все машины, которые есть в продаже; б) вывести марки всех машин, которые выпущены в Германии и выпущенные не позднее 1994.
C++ Найти в строке символы, встречающиеся ровно k раз Помогите решить задачу с использованием множества: в данной строке те символы, которые встречаются ровно k раз. http://www.cyberforum.ru/cpp-beginners/thread1495197.html
Вычислить значения выражений. Процедуры C++
а) round (sin(0.2)) in б) 100 in в) ( + ) * ( – ) г) 6 in ( * ) д) (* ) = ( + ) е) * – )), 2..100] * -
Рекурсивно определить количество арабских цифр в строке C++
Описать рекурсивную подпрограмму, определяющую количество арабских цифр в данной строке.
C++ Составить схему алгоритма и программу решения задачи http://www.cyberforum.ru/cpp-beginners/thread1495192.html
Ввести массив, состоящий из 8 элементов (восемь двузначных чисел) целого типа. Получить новый массив, состоящий из цифр, находящихся в младших разрядах элементов исходного массива.
C++ Вычисление суммы n членов ряда cos(nx)/n Составить блок-схему алгоритма и программу вычисления суммы n членов ряда согласно условию задачи. cos⁡(x)+cos⁡(2x)/2+cos⁡(3x)/3+⋯. подробнее

Показать сообщение отдельно
Cuellius
181 / 89 / 64
Регистрация: 23.06.2015
Сообщений: 237
Завершенные тесты: 3
08.07.2015, 15:13
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <string>
 
const int nmax = 100;
const double e = 0.01;
 
struct Point
{
    double x, y;
};
 
struct Okruz
{
    Point o;
    double r;
};
 
double Random()
{
    return double(rand() % 1000) / 1000.0;
}
 
template<class T>
inline T Sqr(T a)
{
    return a * a;
}
 
void Tochki(Point *t, int &n)
{
    int i;
l_read_n:
    std::cout << "Количество точек от 3 дo " << nmax << " n = ";
    std::cin >> n;
    if(n < 3 || n > nmax) goto l_read_n;
    for (int i = 1; i <= n; i++)
    {
        t[i].x = 20 * Random() - 9;
        t[i].y = 20 * Random() - 9;
    }
    std::cout << "X:" << std::endl;
    for (int i = 1; i <= n; i++)
    {
        std::cout << std::setw(8) << std::fixed << std::setprecision(2) << t[i].x;
    }
    std::cout << std::endl;
    std::cout << "Y:" << std::endl;
    for (int i = 1; i <= n; i++)
    {
        std::cout << std::setw(8) << std::fixed << std::setprecision(2) << t[i].y;
    }
    std::cout << std::endl;
}
 
void Okr(Point t1, Point t2, Point t3, Okruz &ok)
{
    double k0 = Sqr(t1.x) - Sqr(t2.x) + Sqr(t1.y) - Sqr(t2.y);
    double k1 = 2 * (t1.y - t2.y);
    double k2 = 2 * (t1.x - t2.x);
    
    double m0 = Sqr(t1.x) - Sqr(t3.x) + Sqr(t1.y) - Sqr(t3.y);
    double m1 = 2 * (t1.y - t3.y);
    double m2 = 2 * (t1.x - t3.x);
    
    double a = k2 * m0 - k0 * m2;
    double b = k2 * m1 - k1 * m2;
    if (b == 0) return;
    
    double y = a / b, x;
    ok.o.y = y;
    
    if (std::abs(m2) > e) x = (m0 - y * m1) / m2;
    else
    {
        
        if (std::abs(k2) > e) x = (k0 - y * k1) / k2;
        else return;
    }
    ok.o.x = x;
    ok.r = std::sqrt(Sqr(t1.x - x) + Sqr(t1.y - y));
}
 
bool Prin(Point a, Okruz ok)
{
    return (std::abs((Sqr(a.x - ok.o.x) + Sqr(a.y - ok.o.y))- Sqr(ok.r)) < e);
}
 
int main()
{
        setlocale(LC_ALL, "Russian");
    system("cls");
    srand((unsigned)time(NULL));
    
    Point t[nmax + 1];
    int n;
    Tochki(t, n);
    
    int mx = 0, kol;
    double mxr = 0, mxx = 0, mxy = 0;
    Okruz ok;
    for (int i = 1; i <= n - 2; i++)
    {
        for (int j = i + 1; j <= n - 1; j++)
        {
            for (int k = j + 1; k <= n; k++)
            {
                Okr(t[i], t[j], t[k], ok);
                kol = 0;
                for (int l = 1; l <= n; l++)
                {
                    if (Prin(t[l], ok)) kol++;
                }
                
                if (kol > mx) 
                {
                    mx = kol;
                    mxr = ok.r;
                    mxx = ok.o.x;
                    mxy = ok.o.y;
                }
            }
        }
    }
    
    if (mx == 0) std::cout << "Все окружности проходят только через три точки";
    else
    {
        std::cout << "Окружность: координаты центра x0 = " << std::fixed << std::setprecision(2) << 
          mxx << " Y0 = " << std::fixed << std::setprecision(2) << mxy << " R= " << std::fixed << std::setprecision(2) << mxr << std::endl;
        std::cout << "Точек на окружности = " << mx << std::endl;
    }
    
    std::cin.get();
    std::cin.get();
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru