|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2018, 09:07 | #1 |
Регистрация: 02.10.2018
Сообщений: 9
|
Проверка на выпуклость многоугольника - C (СИ).Помогите разобраться с кодом,можно ли было как то полегче?
#include <stdio.h>
#include <conio.h> #include <windows.h> #include <math.h> #define size 100 struct koordinati { double x, y; }; koordinati vector_koord(koordinati a, koordinati b); int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); koordinati mas[size]; koordinati vec1, vec2; int vershini, i; printf("Введите количество вершин: "); vershini = getche() - 48; putchar('\n'); double vect_dob,znak,post_znak; int perevir; perevir = 1; for (i = 0; i < vershini; i++){ printf("%d - а точка\n", i+1); printf("x = "); scanf("%lf", &mas[i].x); printf("y = "); scanf("%lf", &mas[i].y); putchar('\n'); } vec1 = vector_koord (mas[vershini-1],mas[0]); vec2 = vector_koord (mas[0],mas[1]); vect_dob = vec1.x * vec2.y - vec2.x * vec1.y; znak = vect_dob/fabs(vect_dob); post_znak = znak; vec1 = vec2; for (i = 1; i < vershini - 1; i++){ vec2 = vector_koord (mas[i], mas[i+1]); vect_dob = vec1.x * vec2.y - vec2.x * vec1.y; znak = vect_dob / fabs (vect_dob); if (znak != post_znak) { printf ("Точка %d создает впуклость\n", i + 1); perevir = 0; } vec1 = vec2; } i--; vec1 = vec2; vec2 = vector_koord (mas[i], mas[0]); vect_dob = vec1.x * vec2.y - vec2.x * vec1.y; znak = vect_dob / fabs (vect_dob); if (znak != post_znak) { printf ("Точка %d создает впуклость!\n", i + 2); perevir = 0; } printf ("%d-угольник ",vershini); if (perevir) printf("выпуклый\n"); else printf("впуклый\n"); getch(); } koordinati vector_koord (koordinati a, koordinati b){ koordinati dod; dod.x = b.x - a.x; dod.y = b.y - a.y; return dod; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите разобраться с кодом | sarsen | PHP | 2 | 11.11.2017 09:17 |
Помогите разобраться с кодом! | Astiya | Помощь студентам | 3 | 29.03.2015 15:33 |
Требуется определить выпуклость многоугольника по координатам на Си | Gerold_103 | Помощь студентам | 0 | 03.10.2012 16:13 |
Как можно собрать Builder чтобы можно было бы заменять большие части кода? | cargo29 | Общие вопросы Delphi | 17 | 18.02.2011 20:47 |