Точка внутри треугольника - 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;