Прокомментировать код - C (СИ) (75820)
Формулировка задачи:
Не могли бы вы пояснить каждую строку в задаче:
#include <conio.h>
#include <stdio.h>
#include <math.h>
double square1(double a, double b, double c);
double side(double x1,double y1,double x2,double y2);
double per(double a,double b,double c);
main()
{
double x1,x2,x3;
double y1,y2,y3;
double a,b,c;
double s,p;
x1=2;x2=0;x3=4;
y1=0;y2=2;y3=2;
a=side(x1,x2,y1,y2);
b=side(x2,x3,y2,y3);
c=side(x3,x1,y3,y1);
s=square1(a,b,c);
p=per(a,b,c);
printf("perimetr: \n");
printf("%6.2f \n",p);
printf("square: \n");
printf("%6.2f \n",s);
getch();
}
/*вычисление расстояния между двумя точками*/
double side(double x1,double y1,double x2,double y2)
{
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
/*вычисление площади треугольника по трем сторонам*/
double square1(double a, double b, double c)
{
double p,s;
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
/*вычисление периметра*/
double per(double a,double b,double c)
{
return (a+b+c);
}Решение задачи: «Прокомментировать код»
textual
Листинг программы
// подключаемые библиотеки
#include <conio.h>
#include <stdio.h>
#include <math.h>
//
// Заголовки функций
double square1(double a, double b, double c);
double side(double x1,double y1,double x2,double y2);
double per(double a,double b,double c);
//
main() // Главная функция программы
{
double x1,x2,x3; // Создание вещественных переменных x1,x2,x3
double y1,y2,y3; // Создание вещественных переменных y1,y2,y3
double a,b,c; // Создание вещественных переменных a,b,c
double s,p; // Создание вещественных переменных s,p
x1=2;x2=0;x3=4; // Начальные значения переменных
y1=0;y2=2;y3=2; // Начальные значения переменных
a=side(x1,x2,y1,y2); // Вызов функции side и присвоение результата переменной a
b=side(x2,x3,y2,y3); // Вызов функции side и присвоение результата переменной b
c=side(x3,x1,y3,y1); // Вызов функции side и присвоение результата переменной c
s=square1(a,b,c); // Вызов функции square1 и присвоение результата переменной s
p=per(a,b,c); // Вызов функции per и присвоение результата переменной p
printf("perimetr: \n"); // Вывод на экран поясняющего сообщения
printf("%6.2f \n",p); // Вывод на экран значения переменной p, c точностью 6 знаков до запятой и 2 знака после
printf("square: \n"); // Вывод на экран поясняющего сообщения
printf("%6.2f \n",s); // Вывод на экран значения переменной s, c точностью 6 знаков до запятой и 2 знака после
getch(); // Ожидание ввода любого символа на экран (это необязательно)
}
/*вычисление расстояния между двумя точками*/
double side(double x1,double y1,double x2,double y2) // Функция и передаваемые в нее значения
{
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); // Возвращает результат вычислений типа double
}
/*вычисление площади треугольника по трем сторонам*/
double square1(double a, double b, double c)
{
double p,s; // Cоздание вещественных переменных p, s
p=(a+b+c)/2; // Вычисление полупериметра
s=sqrt(p*(p-a)*(p-b)*(p-c)); // Вычисление площади треугольника
return s; // Возвращает площадь типа double
}
/*вычисление периметра*/
double per(double a,double b,double c)
{
return (a+b+c); // Возвращает результат вычислений типа double
}
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки:
для работы с клавиатурой и для работы с выводом на экран, а также для выполнения математических операций. - Затем определяются функции square1(double a, double b, double c), side(double x1,double y1,double x2,double y2) и per(double a,double b,double c).
- В функции main() создаются переменные x1,x2,x3,y1,y2,y3,a,b,c,s,p типа double.
- Затем этим переменным присваиваются начальные значения.
- Вызывается функция side(x1,x2,y1,y2), результат которой присваивается переменной a.
- Аналогично вызывается функция side(x2,x3,y2,y3) и результат присваивается переменной b.
- И наконец, вызывается функция side(x3,x1,y3,y1) и результат присваивается переменной c.
- Вычисляется площадь треугольника по формуле Герона, используя функцию square1(a,b,c). Результат присваивается переменной s.
- Вычисляется периметр треугольника по формуле сумма длин всех сторон, используя функцию per(a,b,c). Результат присваивается переменной p.
- Выводится на экран поясняющее сообщение
perimetr:и значение переменной p с точностью до 6 знаков до запятой и 2 знаков после. - Выводится на экран поясняющее сообщение
square:и значение переменной s с точностью до 6 знаков до запятой и 2 знаков после. - Программа ожидает ввода любого символа на экран с помощью функции getch().
- Функция side(double x1,double y1,double x2,double y2) вычисляет расстояние между двумя точками в векторном пространстве по формуле Евклида: sqrt((x2-x1)(x2-x1)+(y2-y1)(y2-y1)).
- Функция square1(double a, double b, double c) вычисляет площадь треугольника по формуле Герона: s=sqrt(p(p-a)(p-b)*(p-c)), где p=(a+b+c)/2 - полупериметр треугольника.
- Функция per(double a,double b,double c) вычисляет периметр треугольника по формуле сумма длин всех сторон: p=a+b+c.