Граждонин_ВАСЯ Г Граждонин_ВАСЯ Регистрация 27 Май 2013 Сообщения 85 Репутация 0 Спасибо 0 Монет 0 29 Сен 2016 #1 Разработать программу, которая считывает с клавиатуры данные треугольника и отображает площадь каждого треугольника. struct punct { int x,y;} struct triunghi { int a,b,c;} Вообщем я сделал программу, но проблема в том что я нашел что надо вот как то так писать. S=0.5*fabs(Ax*By+Ay*Cx+Bx*Cy-By*Cx-Cy*Ax-Ay*Bx); Ну это не работает. Как по другому сделать, кто нибудь знает? Вот программа: #include #include struct punct{ int x,y; }punct; struct triunghi{ int a,b,c; }triunghi; int main(void) { int i,n,a[10],p,s; float aria; printf("Introdu numarul de triunghiuri: "); scanf("%d",&n); printf(" Introdu datele triunghiului: "); for(i=0;i<n;i++) { printf(" Triunghi [%d]",i+1); printf(" Lungimea laturilor a,b si c: "); scanf("%d%d%d",&triunghi.a,&triunghi.b,&triunghi.c); printf(" Introdu x,y: "); scanf("%d%d",&punct.x,&punct.y); p=(triunghi.a+triunghi.b+triunghi.c)/2; aria=sqrt(p*(p-triunghi.a)*(p-triunghi.b)*(p-triunghi.c)); printf("Aria triunghiului [%d] este = %f ",i+1,aria); }}
Разработать программу, которая считывает с клавиатуры данные треугольника и отображает площадь каждого треугольника. struct punct { int x,y;} struct triunghi { int a,b,c;} Вообщем я сделал программу, но проблема в том что я нашел что надо вот как то так писать. S=0.5*fabs(Ax*By+Ay*Cx+Bx*Cy-By*Cx-Cy*Ax-Ay*Bx); Ну это не работает. Как по другому сделать, кто нибудь знает? Вот программа: #include #include struct punct{ int x,y; }punct; struct triunghi{ int a,b,c; }triunghi; int main(void) { int i,n,a[10],p,s; float aria; printf("Introdu numarul de triunghiuri: "); scanf("%d",&n); printf(" Introdu datele triunghiului: "); for(i=0;i<n;i++) { printf(" Triunghi [%d]",i+1); printf(" Lungimea laturilor a,b si c: "); scanf("%d%d%d",&triunghi.a,&triunghi.b,&triunghi.c); printf(" Introdu x,y: "); scanf("%d%d",&punct.x,&punct.y); p=(triunghi.a+triunghi.b+triunghi.c)/2; aria=sqrt(p*(p-triunghi.a)*(p-triunghi.b)*(p-triunghi.c)); printf("Aria triunghiului [%d] este = %f ",i+1,aria); }}
Alexander73 A Alexander73 Регистрация 15 Дек 2013 Сообщения 71 Репутация 1 Спасибо 1 Монет 0 29 Сен 2016 #2 Какие именно "данные треугольника" должна считывать программа, и что за переменная punct? Позитивный голос 0
леха21 Л леха21 Регистрация 17 Ноя 2013 Сообщения 71 Репутация 0 Спасибо 0 Монет 0 29 Сен 2016 #3 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <stdbool.h> #include <locale.h> typedef struct { double a, b, c; } Triangle; _Bool exist(double a, double b, double c); double area(Triangle t); Triangle create(); void result(Triangle t); void pause(); int main(void) { Triangle t = create(); result(t); pause(); return 0; } void result(Triangle t) { double ar = area(t); printf("Треугольник со сторонами: %.2f, %.2f, %.2f Имеет площадь: %.4f ", t.a, t.b, t.c, ar); } _Bool exist(double a, double b, double c) { double mx = (a > b) ? (a > c) ? a : c : (b > c) ? b : c; return a + b + c - mx > mx; } double area(Triangle t) { double p = (t.a + t.b + t.c) / 2; return sqrt(p * (p - t.a) * (p - t.b) * (p - t.c)); } Triangle create() { Triangle t; double a, b, c; _Bool good = true; setlocale(LC_CTYPE, "Russian"); do { if (!good) printf("Треугольник со стронами %.2f, %.2f, %.2f не существует! ", a, b, c); printf("Введите a: "); scanf_s("%lf", &a); printf("Введите b: "); scanf_s("%lf", &b); printf("Введите c: "); scanf_s("%lf", &c); good = exist(a, b, c); } while (!good); t.a = a; t.b = b; t.c = c; return t; } void pause() { fflush(stdin); getchar(); } Позитивный голос 0
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <stdbool.h> #include <locale.h> typedef struct { double a, b, c; } Triangle; _Bool exist(double a, double b, double c); double area(Triangle t); Triangle create(); void result(Triangle t); void pause(); int main(void) { Triangle t = create(); result(t); pause(); return 0; } void result(Triangle t) { double ar = area(t); printf("Треугольник со сторонами: %.2f, %.2f, %.2f Имеет площадь: %.4f ", t.a, t.b, t.c, ar); } _Bool exist(double a, double b, double c) { double mx = (a > b) ? (a > c) ? a : c : (b > c) ? b : c; return a + b + c - mx > mx; } double area(Triangle t) { double p = (t.a + t.b + t.c) / 2; return sqrt(p * (p - t.a) * (p - t.b) * (p - t.c)); } Triangle create() { Triangle t; double a, b, c; _Bool good = true; setlocale(LC_CTYPE, "Russian"); do { if (!good) printf("Треугольник со стронами %.2f, %.2f, %.2f не существует! ", a, b, c); printf("Введите a: "); scanf_s("%lf", &a); printf("Введите b: "); scanf_s("%lf", &b); printf("Введите c: "); scanf_s("%lf", &c); good = exist(a, b, c); } while (!good); t.a = a; t.b = b; t.c = c; return t; } void pause() { fflush(stdin); getchar(); }