Код С++ Определить количество точек пересечения двух окружностей
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 |
#include <stdlib.h> #include <iostream.h> #include <graphics.h> //Для работы с графическими функциями #include <math.h> //Для работы с математическими функцями /*ФУНКЦИЯ ОПРЕДЕЛЯЮЩАЯ ЧИСЛО ОБЩИХ ТОЧЕК ДВУХ ОКРУЖНОСТЕЙ*/ int Tochek(double &x1,double &y1,double &R1,double &x2,double &y2, double &R2) { double D=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); //Расстояние между центрами окружностей //сущестует 7 ситуаций, в зависимости от которых можно говорить о числе общих точек if (D==0) { if (R1!=R2) return 0; else {cout<<"БЕСКОНЕЧНОЕ МНОЖЕСТВО ОБЩИХ ТОЧЕК";return 8;} } else if (D>R1+R2) {cout<<"ОТДАЛЕНЫ"<<endl; return 0;} else if (D==R1+R2) {cout<<"СОПРИКАСАЮТСЯ"<<endl; return 1;} else if (abs(R1-R2)<D) {cout<<"ПЕРЕСЕКАЮТСЯ"<<endl; return 2;} else if (abs(R1-R2)==D) {cout<<"СОПРИКАСАЮТСЯ"<<endl; return 1;} cout<<"ОДНА В ДРУГОЙ"<<endl; return 0; } /*ФУНКЦИЯ ВВОДА ПАРАМЕТРОВ ДЛЯ ОКРУЖНОСТЕЙ*/ void input(double &x1,double &y1,double &R1,double &x2,double &y2, double &R2) { //переписать способ ввода параметров не должно составлять труда cout<<"ПАРАМЕТРЫ ПЕРВОЙ ОКРУЖНОСТИ : "; cin>>x1>>y1>>R1; cout<<"ПАРАМЕТРЫ ВТОРОЙ ОКРУЖНОСТИ: "; cin>>x2>>y2>>R2; } void main() { system("CLS"); int gdriver=DETECT,gm; initgraph(&gdriver,&gm,""); //Инициализация для работы с графикой double x1,y1,R1,x2,y2,R2; //Точки центра окружностей и длины их радиусов input(x1,y1,R1,x2,y2,R2); //Ввод параметров //Выводим окружности на экран для визуальной наглядности circle(x1,y1,R1); circle(x2,y2,R2); cout<<Tochek(x1,y1,R1,x2,y2,R2)<<endl; //Выводим количество общих точек system("PAUSE"); closegraph(); //Заканчиваем работу в графическом режиме return; } |
Мой порядок написания этой программы происходил так:
Функция main и стандартные строки инициализации и завершения графики.
Определение переменных, обозначающих точки и длины радиусов, определение внутри main
Написание функции input (функция ввода параметров) , в которую в качестве параметров принимаются ссылки. Так как любой хороший программист будет рекомендовать использовать локальные переменные, то поэтому сделано так. (напомню желающим: использование ссылок помогает использовать локальные переменные аналогично глобальным, но только внутри своих функций)
Написание функции возвращающей число точек.
Если пробовать воссоздать этот материал самостоятельно из теории, то это довольно легко, но кто-то может путаться во всех семи вариантах при проверке условий.
Не пишите ничего для начинающих, это просто ужасно.
Вам сюда. Там Я сказал, кто я есть и что я ничего не стою.
http://ci-plus-plus-snachala.ru/?p=121
Не слушайте нытиков, все отлично разобрано, просто надо и самому подумать немного.