Точка внутри треугольника - C (СИ)
Формулировка задачи:
Привет всем. Дана задача(изображение). Вот мой код.
Система проверки пишет "Неправильный формат вывода". В чем проблема? И проверьте, если не трудно, правильно ли я написал прогу? Результат вроде верный.
#include <stdio.h> int main() { int x1,y1,x2,y2,x3,y3; int a,b; FILE *c; FILE *d; c = fopen("trian.dat", "w"); scanf("%d %d\n%d %d\n%d %d\n%d %d", &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); fclose(c); d = fopen("trian.dat", "r"); fscanf(c,"%d %d\n%d %d\n%d %d\n%d %d", &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); if((a-x1)*(y1-y2)-(b-y1)*(x1-x2) >= 0 && (a-x2)*(y2-y3)-(b-y2)*(x2-x3) >= 0 && (a-x3)*(y3-y1)-(b-y3)*(x3-x1) >= 0) printf("YES"); else printf("NO"); fclose(d); return 0; }
Решение задачи: «Точка внутри треугольника»
textual
Листинг программы
#include <stdio.h> int main() { int x1,y1,x2,y2,x3,y3; int a,b; FILE *c; FILE *d; //c = fopen("trian.dat", "w"); scanf("%d %d\n%d %d\n%d %d\n%d %d", &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); //fclose(c); //d = fopen("trian.dat", "r"); //fscanf(c,"%d %d\n%d %d\n%d %d\n%d %d", &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); if((a-x1)*(y1-y2)-(b-y1)*(x1-x2) >= 0 && (a-x2)*(y2-y3)-(b-y2)*(x2-x3) >= 0 && (a-x3)*(y3-y1)-(b-y3)*(x3-x1) >= 0) printf("YES\n"); else printf("NO\n"); scanf("%d %d\n%d %d\n%d %d\n%d %d", &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); if((a-x1)*(y1-y2)-(b-y1)*(x1-x2) >= 0 && (a-x2)*(y2-y3)-(b-y2)*(x2-x3) >= 0 && (a-x3)*(y3-y1)-(b-y3)*(x3-x1) >= 0) printf("YES\n"); else printf("NO\n"); return 0; }
Объяснение кода листинга программы
- Объявление переменных: int x1,y1,x2,y2,x3,y3; int a,b; FILE c; FILE d;
- Запись данных в файл
trian.dat
(если файл существует, иначе создание нового файла): //c = fopen(trian.dat
,w
); scanf(%d %d\n%d %d\n%d %d\n%d %d
, &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); //fclose(c); - Чтение данных из файла
trian.dat
: //d = fopen(trian.dat
,r
); //fscanf(c,%d %d\n%d %d\n%d %d\n%d %d
, &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); - Проверка условия:
if((a-x1)(y1-y2)-(b-y1)(x1-x2) >= 0 && (a-x2)(y2-y3)-(b-y2)(x2-x3) >= 0 && (a-x3)(y3-y1)-(b-y3)(x3-x1) >= 0)
printf(
YES\n
); else printf(NO\n
); - Чтение данных из файла
trian.dat
еще раз: scanf(%d %d\n%d %d\n%d %d\n%d %d
, &x1, &y1, &x2, &y2, &x3, &y3, &a, &b); - Проверка условия еще раз:
if((a-x1)(y1-y2)-(b-y1)(x1-x2) >= 0 && (a-x2)(y2-y3)-(b-y2)(x2-x3) >= 0 && (a-x3)(y3-y1)-(b-y3)(x3-x1) >= 0)
printf(
YES\n
); else printf(NO\n
); - Завершение программы: return 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д