C/C++

СРОЧНО Напишите пожалуйста программу на Си

Написал такую,но не уверен в ней
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float A, B, s, p, g;

system("chcp 1251");
system("cls");
printf("Введите A: ");
scanf("%f", &A);
printf("Введите B: ");
scanf("%f", &B);
double alpha, sin_a,cos_a, pi = 3.1415926, c, h;
printf("Введите угол: ");
scanf("%lf",&alpha);
alpha = alpha*pi/180;
sin_a = sin(alpha);
cos_a = cos(alpha);
g = (A-B)/2;
c = g/cos_a;
p = A+B+2*c;
h = c*sin_a;
s = ((A+B)/2)*h;
printf("p=%f\n",p);
printf("s=%f\n",s);
getchar();
return 0;
}#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float A, B, s, p, g;

system("chcp 1251");
system("cls");
printf("Введите A: ");
scanf("%f", &A);
printf("Введите B: ");
scanf("%f", &B);
double alpha, sin_a,cos_a, pi = 3.1415926, c, h;
printf("Введите угол: ");
scanf("%lf",&alpha);
alpha = alpha*pi/180;
sin_a = sin(alpha);
cos_a = cos(alpha);
g = (A-B)/2;
c = g/cos_a;
p = A+B+2*c;
h = c*sin_a;
s = ((A+B)/2)*h;
printf("p=%f\n",p);
printf("s=%f\n",s);
getchar();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double input(const char* msg) {
double value;
printf(msg);
scanf_s("%lf", &value);
return value;
}
void swap(double* a, double* b) {
double t = *a;
*a = *b;
*b = t;
}
double height(double a, double b, double alpha) {
if (a > b) swap(&a, &b);
return (b - a) * tan(alpha);
}
double side(double a, double b, double h) {
double c;
if (a > b) swap(&a, &b);
c = b - a;
return sqrt(pow(a, 2) + pow(c, 2));
}
double perimeter(double a, double b, double alpha) {
double c = height(a, b, alpha);
double d = side(a, b, c);
return a + b + c + d;
}
double area(double a, double b, double alpha) {
double h = height(a, b, alpha);
return (a + b) / 2.0 * h;
}
int main(void) {
double a, b, alpha, p, s;
system("chcp 1251 > nul");
a = input("Введите A: ");
b = input("Введите B: ");
alpha = input("Введите угол: ");
p = perimeter(a, b, alpha);
printf("Периметр: %.2lf\n", p);
s = area(a, b, alpha);
printf("Площадь: %.3lf\n", s);
system("pause > nul");
return 0;
}
Владимир Хозяинов
Владимир Хозяинов
76 190
Лучший ответ
Диман Крайнов warning format string is not a string
literal (potentially insecure)
[-Wformat-security]
printf(msg);
^~~
main.c:6:8: note: treat the string as an argument
to avoid this
printf(msg);
^
"%s",
main.c:7:1: warning: implicit declaration of
function 'scanf_s' is invalid in C99
[-Wimplicit-function-declaration]
scanf_s("%lf", &value);
Диман Крайнов Все, разобрался, спасибо огромное)))
1. Ты не понял, что трапеция прямоугольная - одна из боковых сторон вертикальна.
2. Ты не понял, что угол уже в радианах - переводить из градусов в радианы не надо.
3. Нигде не сказано, что A > B - нужен модуль разности.

double A, B, c, h, p, s;
scanf("%lf%lf%lf", &A, &B, &alpha);
c = fabs(A - B) / cos(alpha);
h = c * sin(alpha);
p = A + B + c + h;
s = (A + B) * h / 2.0;
printf("%lf %lf", p, s);