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

Определить окружность, проходящую через k (k>=3) точек каждого из двух непересекающихся множеств - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка с функцией http://www.cyberforum.ru/cpp-beginners/thread621063.html
Выполняю пример из книги, раздел про функции. Одно из условий здачи написать функцию для ввода массива. У меня подчеркивет в main() функцию vvod() и пишет "для агрегатного объекта требуется инициализация с использованием {...}". #include <iostream> const int size = 10; int vvod(); int main() {using namespace std; int mas = vvod(); }
C++ Не выполняется действия в функциях В программе осуществляется ввод целых чисел ( при вводе 0 происходит остановка дальнейшего ввода чисел в массив ), затем последовательность и сумма чисел массива выводятся на экран. #include <iostream> #include <locale> using namespace std; int summ(int intArray, int sizeArray); void Display(int intArray, int sizeArray); http://www.cyberforum.ru/cpp-beginners/thread621052.html
Сформировать файл из действительных чисел. Найти расположенные в порядке убывания их модулей C++
В этой программе представлен алгоритм решения: Сформировать файл из действительных чисел. Найти наибольшее из значений модулей компонентов с четными номерами. А мне нужно так: Сформировать файл из действительных чисел. Найти расположенные в порядке убывания их модулей. Возможна она с ошибкой, помогите мне исправить. #include "stdafx.h" #include "iostream" #include "conio.h" #include...
C++ Обратная формула
Задача есть формула: a=(a1+7)%10; Как будет обратная формула для получения a1 ? задача 3.46 Дейтела все сделал а тут затык. Помогите. Спасибо.
C++ Массивы. Ошибка в программе http://www.cyberforum.ru/cpp-beginners/thread621030.html
Помогите, пожалуйста, решить задачу! Почему не проверяется условие с массивом. Что не так? Весь текстовый файл у меня забит словами "Clean". #include <fstream> #include <iostream> using namespace std; void main() { const int number = 10; char mass ;
C++ Подсчет частоты встречи слов от 1 до 10 букв Подсчет частоты встречи слов от 1 до 10 букв(включительно) в текстовых файлах русского алфавита. Нужно подсчитать и сделать в stringird некую статистику: длина слова, количество встреченных слов в тексте, частоты появления (в % от общего количества слов в тексте) подробнее

Показать сообщение отдельно
HarryPhomin
1 / 1 / 0
Регистрация: 05.07.2012
Сообщений: 34
10.07.2012, 00:26  [ТС]     Определить окружность, проходящую через k (k>=3) точек каждого из двух непересекающихся множеств
Puporev, Да ничего и так много мне помогли надо и самому головой поработать)

Добавлено через 6 часов 53 минуты
Все ура, написал задачу проверил для всех случаев, вроде работает без сбоев!
Кому надо текст может быть поможет вот, только данные я вводил из файла задавая сначала координаты иксовые потом игриковые так для каждого множества.

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
142
143
144
145
146
147
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
 
/*
 * 
 */
int main(int argc, char** argv) {
    int n1, k, i, j, n2, sum=0;
    float a, x1, x2, x3, y1, y2, y3;
    printf("BBedite kolichestvo tochek n1 и n2, a tak zhe kol-vo tochek okruzhnosti :  ");
    scanf("%d%d%d", &n1, &n2, &k);
    printf("\n");
    float arrX[n1], arrY[n1];/*Объявляю массивы первых и вторых координат 1 го множества*/
    float novX[n2], novY[n2];/*Объявляю массивы первых и вторых координат 2 го множества*/
    
    FILE *fl;
    fl=fopen("text.txt", "r");
    /*----------------------------------*/
    printf("1 mnozhestvo:\n\n");/*Сканирую из файла и одновременно вывожу все иксовые координаты первого множества*/
    for(i=1; i<=n1; i++){
        fscanf(fl, "%f", &arrX[i]);
        printf("%d X koordinaty %f \n", i, arrX[i]);
        sum++;
    }
        printf("\n");
   /*-----------------------------------*/ 
        for(i=1; i<=n1; i++){/*Сканирую из файла и одновременно вывожу все игриковые координаты первого множества*/
        fscanf(fl, "%f", &arrY[i]);
        printf("%d Y koordinaty %f \n", i, arrY[i]);
    }
        printf("\n\n\n\n\n");   
                
    /*----------------------------------*/
        printf("2 mnozhestvo:\n\n");/*Сканирую из файла и одновременно вывожу все иксовые координаты второго множества*/
        for(i=1; i<=n2; i++){
        
        fscanf(fl, "%f", &novX[i]);
        printf("%d X koordinaty %f \n", i, novX[i]);
    }
    printf("\n");
    
    /*----------------------------------*/
    
    for(i=1; i<=n2; i++){/*Сканирую из файла и одновременно вывожу все игриковые координаты второго множества*/
        
        fscanf(fl, "%f", &novY[i]);
        printf("%d Y koordinaty %f \n", i, novY[i]);
    }
    printf("\n");
    /*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
    if(sum<3){
        printf("cherez dannye tochki nelzya provesti pryamuyu");/*если через эти точки первого множества нельзя провести окружность то выводим сообщение и выходим из проги*/
        return;
    }
    /*//////////////////////////////////////////////----------------------------------/////////////////////////////////////*/
    for(i=1; i<=n1; i++){      /*проверяю 1 множество,  можно ли построить в нем окружность по данным точкам*/    
        a=arrX[i] * arrY[i+1] + arrX[i+1] * arrY[i+2] + arrY[i] * arrX[i+2] - arrX[i+2] * arrY[i+1] - arrX[i] * arrY[i+2] - arrX[i+1] * arrY[i];
        printf("%f\n", a);
        if(a!=0){
        x1=arrX[i];
        x2=arrX[i+1];
        x3=arrX[i+2];
        y1=arrY[i];
        y2=arrY[i+1];
        y3=arrY[i+2];
        printf("cherez eti tochki mozhno provesti okruzhnostj %f\n\n", a);
        break;
        }
        else{
            continue;
        }
    }
    if(a==0){
        printf("cherez dannye tochki nelzya provesti pryamuyu\n");/*если через эти точки первого множества нельзя провести окружность то выводим сообщение и выходим из проги*/
        return;
    }
        printf("%f %f\n", x1, y1);/*если можно то выводим сообщение и выводим координаты точек по которым строим окружность тройку точек*/
        printf("%f %f\n", x2, y2);
        printf("%f %f\n", x3, y3);
    /*//////////////////////////////////////////////----------------------------------/////////////////////////////////////*/ 
        float aa[2], bb[2];/*задаю массивы середин сторон вписанного в окружность треугольника вершинами которого являются точки из прошлого пункта*/
        aa[1]=(x1+x2)/2;/*считаю координаты сeредин двух сторон*/
        aa[2]=(x2+x3)/2;
        bb[1]=(y1+y2)/2;
        bb[2]=(y2+y3)/2;
        printf("\n\n%f %f\n", aa[1], bb[1]);
        printf("%f %f\n", aa[2], bb[2]);
      /*//////////////////////////////////////////////----------------------------------/////////////////////////////////////*/
        float x, y, l, ll, o, oo;/*пользуясь геометрической интерприятацией нахожу координаты центра */
        l=x2-x1;
        ll=x3-x2;
        o=y2-y1;
        oo=y3-y2;
        printf("\n\n%f", l);
        printf("\n\n%f", ll);
        printf("\n\n%f", o);
        printf("\n\n%f", oo);
        x=(-o*(ll*aa[2] + oo*bb[2]) + oo*(l*aa[1] + o*bb[1])) / (l*oo - o*ll);
        y=(-ll*(l*aa[1] + o*bb[1]) + l*(ll*aa[2] + oo*bb[2])) / (l*oo - o*ll);
        printf("\n\n%f  %f", x, y);
     /*//////////////////////////////////////////////----------------------------------/////////////////////////////////////*/
        float R;/*нахожу радиус*/
        R=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
        printf("\n\n%f", R);
    /*//////////////////////////////////////////////----------------------------------/////////////////////////////////////*/
        j=0;/*проверяю сколько точек из первого множества удовлетворяют условию, если больше нашего заданного к, то я присваиваю к это количество*/
        float ruv;
        
        for(i=1;i<=n1;i++){
            ruv=sqrt((x-arrX[i])*(x-arrX[i]) + (y-arrY[i])*(y-arrY[i]));
            if(ruv!=R){
                continue;
             }   
            else{  
                j++;
                ruv=0;
            }
        }
        if(j>=k){
            k=j;
        }
        
     /*//////////////////////////////////////////////----------------------------------/////////////////////////////////////*/
        j=0;/*проверяю скока точек из второго множества удовлетворяют условию, если меньше к то выводим сообщение что такой окружности нет, если больше или равно то такая окружность есть */
        float rast=0;
        
        for(i=1;i<=n2;i++){
            rast=sqrt((x-novX[i])*(x-novX[i]) + (y-novY[i])*(y-novY[i]));
            if(rast!=R){
                continue;
             }   
            else{  
                j++;
                rast=0;
            }
        }
        if(j>=k){
            printf("\n\ntakaya okrujnostj sushestvuet ee radius raven %f,\n a koordinaty centra (%f,%f)\n", R, x, y);
        }
        else{
            printf("\npo zadannym tochkam nelza postroitj takuyu okruzhnostj\n");
        }
       
    return (EXIT_SUCCESS);
}
 
Текущее время: 16:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru