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

Объяснение кода листинга программы

  1. Объявление переменных: int x1,y1,x2,y2,x3,y3; int a,b; FILE c; FILE d;
  2. Запись данных в файл 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);
  3. Чтение данных из файла 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);
  4. Проверка условия: 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);
  5. Чтение данных из файла trian.dat еще раз: scanf(%d %d\n%d %d\n%d %d\n%d %d, &x1, &y1, &x2, &y2, &x3, &y3, &a, &b);
  6. Проверка условия еще раз: 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);
  7. Завершение программы: return 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы