Другие языки программирования и технологии
нужна программа в СИ, которая будет тестировать подобность двух треугольников. помогииите пожалуйста
помогииите пожалуйста
// Можно и без цикла!
#include <stdio.h>
#include <locale.h>
#include <math.h>
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
struct Triangle {
double party1;
double party2;
double party3;
};
int exists(struct Triangle);
void similarity(struct Triangle, struct Triangle);
void main() {
struct Triangle first, second;
setlocale(LC_CTYPE, "Russian_Russia.1251");
while (1) {
printf("Введите стороны первого треугольника: ");
scanf_s("%Lf%Lf%Lf", &first.party1, &first.party2, &first.party3);
printf("Введите стороны второго треугольника: ");
scanf_s("%Lf%Lf%Lf", &second.party1, &second.party2, &second.party3);
if (exists(first) && exists(second)) similarity(first, second);
else printf("\aХотя бы один из двух треугольников не существует! \n");
}
}
int exists(struct Triangle t) {
int ex = 1;
double mx = max(max(t.party1, t.party2), t.party3);
if (t.party1 + t.party2 + t.party3 - mx <= mx) ex = 0;
return ex;
}
void similarity(struct Triangle f, struct Triangle s) {
double eps = 1e-12;
double mx1 = max(max(f.party1, f.party2), f.party3);
double mx2 = max(max(s.party1, s.party2), s.party3);
double mn1 = min(min(f.party1, f.party2), f.party3);
double mn2 = min(min(s.party1, s.party2), s.party3);
double md1 = f.party1 + f.party2 + f.party3 - mx1 - mn1;
double md2 = s.party1 + s.party2 + s.party3 - mx2 - mn2;
if (fabs(mx1 / mx2 - md1 / md2) < eps && fabs(md1 / md2 - mn1 / mn2) < eps) printf("Треугольники подобны. \n");
else printf("Треугольники не подобны. \n");
}
#include <stdio.h>
#include <locale.h>
#include <math.h>
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
struct Triangle {
double party1;
double party2;
double party3;
};
int exists(struct Triangle);
void similarity(struct Triangle, struct Triangle);
void main() {
struct Triangle first, second;
setlocale(LC_CTYPE, "Russian_Russia.1251");
while (1) {
printf("Введите стороны первого треугольника: ");
scanf_s("%Lf%Lf%Lf", &first.party1, &first.party2, &first.party3);
printf("Введите стороны второго треугольника: ");
scanf_s("%Lf%Lf%Lf", &second.party1, &second.party2, &second.party3);
if (exists(first) && exists(second)) similarity(first, second);
else printf("\aХотя бы один из двух треугольников не существует! \n");
}
}
int exists(struct Triangle t) {
int ex = 1;
double mx = max(max(t.party1, t.party2), t.party3);
if (t.party1 + t.party2 + t.party3 - mx <= mx) ex = 0;
return ex;
}
void similarity(struct Triangle f, struct Triangle s) {
double eps = 1e-12;
double mx1 = max(max(f.party1, f.party2), f.party3);
double mx2 = max(max(s.party1, s.party2), s.party3);
double mn1 = min(min(f.party1, f.party2), f.party3);
double mn2 = min(min(s.party1, s.party2), s.party3);
double md1 = f.party1 + f.party2 + f.party3 - mx1 - mn1;
double md2 = s.party1 + s.party2 + s.party3 - mx2 - mn2;
if (fabs(mx1 / mx2 - md1 / md2) < eps && fabs(md1 / md2 - mn1 / mn2) < eps) printf("Треугольники подобны. \n");
else printf("Треугольники не подобны. \n");
}
А в чем у вас проблема? Что не получается?
Похожие вопросы
- Нужна программа на Си Которая из трех рандомных чисел, выбирает два наименьших числа
- Нужно написать программу на СИ++, которая переводит с паскаля на СИ++
- Помогите пожалуйста составить программу на СИ++. Заранее всем БЛАГОДАРЕН!
- Нужна помощь)) Есть условие задачи для создания программы на СИ++
- Помогите написать пару программ на СИ
- Программа на Си
- Помогите с программой на си! Программа в описании
- Требуется помощь с программа на СИ
- Помогите исправить ошибку в программе на Си
- Написать программу на Си