это не стандарт C, это POSIX.

ужно сделать эту программу, которая берет два треугольника и сравнивает их.

В основном все работает отлично, кроме той части, где пользователь вводит исходные данные. Моя главная проблема заключается в том, что одно из условий заключается в том, что пользователь может ввести либо длины трех сторон треугольников, либо координаты X, Y трех вершин.

Мне нужно, чтобы это работало так:
Этот ввод означает, что пользователь использовал длины сторон:

{ 5 , 5 , 5 }

Этот ввод означает, что пользователь использовал координаты X, Y вершин:

{ [ 1 ; 1 ] , [ 3 ; 1 ] , [ 2 ; 2 ] }

Вот мой код, как я пытался его решить, но по какой-то причине, если пользователь вводит с помощью вершины первое условие, которое проверяет, не является ли оно длиной сторон, все портит.

#include <stdio.h>

int main() {
    double a, b, c, A[2], B[2], C[2];
    char s;

    if(scanf(" { [ %lf ; %lf  ] , [ %lf ; %lf  ] , [ %lf ; %lf  ] }%c", 
            &A[0], &A[1], &B[0], &B[1], &C[0], &C[1], &s) != 7 && s != '\n') {
        s = ' ';

        if(scanf(" { %lf , %lf , %lf }%c", &a, &b, &c, &s) != 4 && s != '\n') {
            printf("error\n");
            return 1;
        }

    }

    // rest of the code...

    printf("success\n");
    return 0;
}

Если я поменяю местами эти два условия, то он переключится, и он будет работать, только если пользователь вводит вершины ...

Можно ли как-нибудь просто так заставить работать?

Ответы на вопрос(2)

Ваш ответ на вопрос