Создать структуру circle (круг). Описать для неё следующие функции:
1Ввод с клавиатуры.
2Присваивание (установка) значений.
3Печать структуры.
4Длина окружности.
5Площадь круга.
6Проверка пересечения 2 кругов (вложены, пересекаются, касаются в одной точке, не пересекаются).
Проверить выполнение всех функций.
C/C++
Программирование на C
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define PI 3.1415926535897932
typedef struct {
double x;
double y;
double radius;
} Circle;
double real(const char* msg) {
double value;
printf(msg);
scanf_s("%lf", &value);
return value;
}
Circle input() {
Circle c;
c.x = real("Введите координату X: ");
c.y = real("Введите координату Y: ");
c.radius = real("Введите радиус окружности: ");
system("cls");
return c;
}
void print(Circle* pc) {
printf("Координата X: %.2lf\nКоордината Y: %.2lf\nРадиус: %.2lf\n", pc->x, pc->y, pc->radius);
}
double area_circle(Circle* pc) {
return PI * pow(pc->radius, 2);
}
double length_circle(Circle* pc) {
return PI * pc->radius * 2;
}
void intersection(Circle* pa, Circle* pb) {
double sr = pa->radius + pb->radius;
double len = sqrt(pow(pa->x - pb->x, 2) + pow(pa->y - pb->y, 2));
double diff = len - sr;
double mn = pa->radius < pb->radius? pa->radius : pb->radius;
double mx = pa->radius > pb->radius? pa->radius : pb->radius;
if (fabs(diff) < 1e-12) puts("касаются в одной точке");
else if (diff > 0) puts("не пересекаются");
else if (diff < 0 && diff + mn <= mx) puts("вложены");
else puts("пересекаются");
}
int main(void) {
Circle a, b;
const char* len_fmt;
const char* area_fmt;
system("chcp 1251 > nul");
a = input();
b = input();
len_fmt = "Длина окружности: %.2lf\n";
area_fmt = "Площадь круга: %.2lf\n";
print(&a);
printf(len_fmt, length_circle(&a));
printf(area_fmt, area_circle(&a));
puts("");
print(&b);
printf(len_fmt, length_circle(&b));
printf(area_fmt, area_circle(&b));
printf("\nОкружности ");
intersection(&a, &b);
system("pause > nul");
return 0;
}
#include <stdio.h>
#include <math.h>
#define PI 3.1415926535897932
typedef struct {
double x;
double y;
double radius;
} Circle;
double real(const char* msg) {
double value;
printf(msg);
scanf_s("%lf", &value);
return value;
}
Circle input() {
Circle c;
c.x = real("Введите координату X: ");
c.y = real("Введите координату Y: ");
c.radius = real("Введите радиус окружности: ");
system("cls");
return c;
}
void print(Circle* pc) {
printf("Координата X: %.2lf\nКоордината Y: %.2lf\nРадиус: %.2lf\n", pc->x, pc->y, pc->radius);
}
double area_circle(Circle* pc) {
return PI * pow(pc->radius, 2);
}
double length_circle(Circle* pc) {
return PI * pc->radius * 2;
}
void intersection(Circle* pa, Circle* pb) {
double sr = pa->radius + pb->radius;
double len = sqrt(pow(pa->x - pb->x, 2) + pow(pa->y - pb->y, 2));
double diff = len - sr;
double mn = pa->radius < pb->radius? pa->radius : pb->radius;
double mx = pa->radius > pb->radius? pa->radius : pb->radius;
if (fabs(diff) < 1e-12) puts("касаются в одной точке");
else if (diff > 0) puts("не пересекаются");
else if (diff < 0 && diff + mn <= mx) puts("вложены");
else puts("пересекаются");
}
int main(void) {
Circle a, b;
const char* len_fmt;
const char* area_fmt;
system("chcp 1251 > nul");
a = input();
b = input();
len_fmt = "Длина окружности: %.2lf\n";
area_fmt = "Площадь круга: %.2lf\n";
print(&a);
printf(len_fmt, length_circle(&a));
printf(area_fmt, area_circle(&a));
puts("");
print(&b);
printf(len_fmt, length_circle(&b));
printf(area_fmt, area_circle(&b));
printf("\nОкружности ");
intersection(&a, &b);
system("pause > nul");
return 0;
}
Похожие вопросы
- Программирование на C++
- Программирование на C++
- Помоги написать лабу по программированию на c++
- Помогите решить задачу по программированию на C++
- Программирование на C. Помогите бездарю
- На каком языке программирования написан C (Си)?
- Программирование на c++
- Программирование на C++
- Помогите с программированием на C++
- Задание по программированию язык C/СИ