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

Пересечение двух окружностей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Манипуляторы http://www.cyberforum.ru/cpp-beginners/thread861513.html
Ребята, проблема с манипуляторами.. Вместо того чтобы были пустые места, программа выдает нули(( void view(HANDLE hrFile) { Miami_Heat Club; int num = 0; DWORD dwCount; cout<<"--------------------------------------------------------------------"<<endl; cout<<"|"<<setw(7)<<"Name"<<setw(4)<<"|"<<setw(8)<<"Surname"<<setw(2)<<"|"<<"Pos"<<"|"<<setw(2)<<" Nat ...
C++ Удаление слов из текста Добрый день! есть задачка: Определить самое короткое слово в каждом предложении. Удалить эти слова из текста.Для обработки строк следует использовать функции стандартной библиотеки <cstring>.Примечание: следует использовать строки, представленные как массив символов. Строки, созданные с помощью классов (таких, как например, string из библиотеки STL) использовать запрещается. У меня получился... http://www.cyberforum.ru/cpp-beginners/thread861510.html
C++ ввод пути к файлу с консоли
подскажите пожалуйста, вот как отрыть файл для работы с ним я знаю, но покрайней мере я делаю так FILE *f; f=fopen("input.txt","r"); а можно как что бы указывать путь к файлу с консоли, что нибуть такое FILE *f; string bs; cin >> bs; f=fopen("bs","r"); ну или вопще как такое реализовать, подскажите пожалуйста
C++ Среднее геометрическое С++
Вычислить среднее геометрическое для каждого элемента одномерного массива по следующему правилу : {b}_{i}=\sqrt{a(i)*a(2)*...*a(i)} \sqrt{a(i)*a(2)*...*a(i)} Использовать функцию вычисления среднего геометрического одномерного массива.
C++ Двуязычие приложения http://www.cyberforum.ru/cpp-beginners/thread861473.html
Есть собственно С++ код работает все в консоли Не пойму как сделать что бы пользователь мог выбрать на каком языке будет отображаться текст программы на русском или на английском.. Выбор между ними, как создавать код, какие файлы применять!
C++ Показ скрытого сообщения Добрый день. Есть 2 класса 1-главный 2-второстепенный Когда перед пользователем появляется консоль в консоле можно зайти в меню 1 класса или во 2 класс. Если пользователь сразу из главного меню 1 и 2 класса зайдет во 2 класс то там ничего не будет Если пользователь зайдет в 1 класс и сделает такое действие "Нажмите клавишу "Y" чтобы удалить файл", после нажатия "Y" будет произведено некое... подробнее

Показать сообщение отдельно
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 09:18  [ТС]     Пересечение двух окружностей
Somebody, на 1 WA больше
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
#include <iostream>
#include <set>
#include <vector>
#include <limits>
#include <stdio.h>
#include <string>
#include <queue>
#include <time.h>
 
using namespace std;
 
double eps = 1e-18;
 
bool comp(long double a, long double b){
    return (abs(a-b) < eps);
} 
 
void circle_line(long double a, long double b, long double c, long double r, long double x1, long double y1){
    long double x0 = -a*c/(a*a+b*b);
    long double y0 = -b*c/(a*a+b*b);
    if (c*c > r*r*(a*a+b*b)+eps){
        printf("There are no points!!!\n");
    }else if (comp(c*c, r*r*(a*a+b*b))) {
        printf("There are only 1 of them....\n");
        printf("%.12lf %.12lf\n", x0 + x1, y0 + y1);
    } else {
        printf("There are only 2 of them....\n");
        long double d = r*r - c*c/(a*a+b*b);
        long double mult = sqrt (d / (a*a+b*b));
        long double ax = x0 + b * mult;
        long double bx = x0 - b * mult;
        long double ay = y0 - a * mult;
        long double by = y0 + a * mult;
        if (ax > bx || (comp(ax, bx) && ay > by)) {
            swap(ax, bx);
            swap(ay, by);
        }
        printf("%.12lf %.12lf\n%.12lf %.12lf\n", ax + x1, ay + y1, bx + x1, by + y1);
    }
}
 
void circle_circle (long double x1, long double y1, long double r1, long double x2, long double y2, long double r2){
    if (comp(x1, x2) && comp(y1, y2)) {
        if (!comp(r1, r2)){
            printf("There are no points!!!\n");
        } else {
            printf("I can't count them - too many points :(\n");
        }
        return;
    }
    x2 -= x1;
    y2 -= y1;
    circle_line(- 2.0 * x2, - 2.0 * y2, x2*x2 + y2*y2 + r1*r1 - r2*r2, r1, x1, y1);
}
 
int main() {
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int t;
    cin >> t;
    while (t > 0) {
        long double x1, y1, r1, x2, y2, r2;
        scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &r1, &x2, &y2, &r2);
        circle_circle(x1, y1, r1, x2, y2, r2);
        printf("\n");
        t--;
    }
    return 0;
}
Добавлено через 2 минуты
Somebody, а вот если ставлю %.15lf везде то по-прежнему 12 тестов, (на %.12lf было 11)

Добавлено через 18 часов 30 минут
Help
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru