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

Простая геометрия - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод вычисления произведения http://www.cyberforum.ru/cpp-beginners/thread898493.html
Есть цикл, в котором при помощи cout выводятся номера элементов массива, как вывести вычисления произведений?#include <iostream> using namespace std; int main() { int a; int res = 1; for (int i = 0; i < 10000; i+=3) { res *= a;
C++ удалить из текста слова которые содержат цифры Нужно написать программу, в которой пользователь вводит текст, а из него удаляются слова которые содержат цифры. Например: дано: "ма2ма мила раму7 дома"; а выйти должно :"мила дома". Но для решения нельзя использовать библиотеку string.h Только через char. И размер массива char (даной стрроки) не должен быть константой и нельзя его вводить с клавиатуры. Также под переменную char (которая содержит... http://www.cyberforum.ru/cpp-beginners/thread898492.html
Эквивалентность формул. По таблице истинности C++
Помогите написать программу доказывающую эквивалентность формул по таблице истинности
Перевод секунд в часы,минуты и секунды C++
Тока начинаю изучать С++ по Лафоре, дошел до функций и не получается построить простенькую функцию. Нужно составить две, одна которая принимает структурную переменную time и выдает число секунд, а вторая принимает число секунд и выдает структурную переменную типа time. С первой я разобрался, а вот адекватно построить вторую чет не получается.Компилятор выдает что в ходе построения произошла...
C++ STL. Создать объект-контейнер stack и заполнить его данными типа double http://www.cyberforum.ru/cpp-beginners/thread898482.html
Задание: 1. Создать объект-контейнер и заполнить его данными, тип которых определяется вариантом задания. 2. Посмотреть контейнер. 3. Изменить контейнер, удалив из него одни элементы и заменив другими. 4. Посмотреть контейнер, используя для доступа к его элементам итераторы. 5. Создать второй контейнер этого же класса и заполнить его данными того же типа, что и первый контейнер. 6. Изменить...
C++ программы написанные на Code blocks не открываются на visual studio что делать? подробнее

Показать сообщение отдельно
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
02.09.2013, 15:45  [ТС]
Решил. Была потеря точности. Прошла на CXX (MINGW C++) Вот с таким кодом.
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
#include <iostream>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#include <string>
#include <set>
#include <map>
#include <bitset>
#include <limits>
#include <ctime>
#include <deque>
#include <iterator>
#include <sstream>
#include <stdio.h>
 
using namespace std;
 
long double A, B, C;
long double eps = 1e-8;
 
long double det (long double a, long double b, long double c, long double d) {
    return a * d - c * b;
}
 
vector <long double> sx, sy;
 
void side(long double x, long double y) {
    if (A * x + B * y + C < eps) sx.push_back(x), sy.push_back(y);
}
 
long double px, py;
 
bool intersect(long double x1, long double y1, long double x2, long double y2) {
    long double A2 = y1 - y2;
    long double B2 = x2 - x1;
    long double C2 = - (A2 * x1 + B2 * y1);
    long double zn = det (A, B, A2, B2);
    if (fabs(zn) < eps || 
        (fabs (det (A, B, A2, B2)) < eps &&
         fabs (det (A, C, A2, C2)) < eps &&
         fabs (det (B, C, B2, C2)) < eps)) 
        return false;
    px = - det (C, B, C2, B2) / zn;
    py = - det (A, C, A2, C2) / zn;
    return true;
}
 
long double arr(const vector <long double> & x, const vector <long double> & y) {
    if (x.size() < 4)
        return 0.0;
    long double ans = 0;
    for (int i = 0; i < x.size() - 1; ++i) 
        ans += (x[i+1] - x[i]) * (y[i+1] + y[i]);
    return fabs(ans) / 2.0;
}
 
void scan_line_coords(){
    long double x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    A = y1 - y2;
    B = x2 - x1;
    C = - (A * x1 + B * y1);
}
 
int main() {
    int n;
    cin >> n;
    vector <long double> x(n+1), y(n+1);
    for (int i = 0; i < n; ++i)
        cin >> x[i] >> y[i];
    x[n] = x[0], y[n] = y[0];
    scan_line_coords();
    double arr1 = arr(x, y);
    for (int i = 0; i < n; ++i) {
        side(x[i], y[i]);
        if (intersect(x[i], y[i], x[i+1], y[i+1]))
            side(px, py);
        side(x[i+1], y[i+1]);
    }
    if (sx.size() > 0)
        sx.push_back(sx[0]), sy.push_back(sy[0]);
    double arr2 = arr(sx, sy);
    arr1 -= arr2;
    if (arr1 < arr2)
        swap(arr1, arr2);
    printf("%.15lf %.15lf", arr1, arr2);
    return 0; 
 }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru