Перевести программу с Pascal - C (СИ) (77334)
Формулировка задачи:
uses crt; type Tochka=record x,y:real; end; const nmax=20; var a:array[1..nmax+1] of Tochka; t:Tochka; n,i:integer; s,s1:real; begin repeat write('Kolichestvo vershin ot 4 do ',nmax,' n='); readln(n); until n in [4..nmax]; writeln('Vvedite koordinaty vipuklogo ',n,'-ugolnika:'); for i:=1 to n do begin writeln('Tochka ',i); write(' x=');readln(a[i].x); write(' y=');readln(a[i].y); end; a[n+1]:=a[1]; t.x:=(a[1].x+a[3].x)/2; t.y:=(a[1].y+a[3].y)/2; s:=0; for i:=1 to n do begin s1:=abs((t.x-a[i].x)*(a[i+1].y-a[i].y)-(a[i+1].x-a[i].x)*(a[i+1].y-t.y))/2; s:=s+s1; end; write('S=',s:0:4); end.
Решение задачи: «Перевести программу с Pascal»
textual
Листинг программы
#include <stdio.h> #include <math.h> #define NMAX 20 struct Tochka { double x; double y; }; int main(void) { struct Tochka a[NMAX+1]; struct Tochka t; int n, i; float s, s1; do { printf("Kolichestvo vershin ot 4 do %d : ", NMAX); scanf("%d", &n); } while((4<n) && (n>NMAX)); printf("Vvedite koordinaty vipuklogo %d-ugolnika.\n", n); for(i=1; i<=n; i++) { printf("Tochka %d\n", i); printf(" x = "); scanf("%lf", &a[i-1].x); printf(" y = "); scanf("%lf", &a[i-1].y); } a[n] = a[0]; t.x = (a[0].x + a[2].x)/2; t.y = (a[0].y + a[2].y)/2; s = 0; for(i=0; i<n; i++) { s1 = fabs((t.x-a[i].x)*(a[i+1].y-a[i].y)-(a[i+1].x-a[i].x)*(a[i+1].y-t.y))/2; s = s + s1; } printf("S = %0.4lf\n", s); return 0; }
Объяснение кода листинга программы
- Объявление переменных и структурных типов.
- Ввод количества вершин от 4 до NMAX.
- Ввод координат узлов многоугольника.
- Копирование координат первого узла в последний для обеспечения замыкания многоугольника.
- Вычисление центра тяжести многоугольника.
- Инициализация суммы площадей равной нулю.
- Вычисление площади каждого треугольника, используя формулу Герона.
- Вычисление площади всего многоугольника, суммируя площади всех треугольников.
- Вывод площади многоугольника.
- Возврат 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д