#include <cmath>
#include <iomanip>
#include <iostream>

int main() {
    double a1, b1, c1, a2, b2, c2;
    const double EPS = 1e-9;
    std::cout << "Введите a1 b1 c1 a2 b2 c2: ";
    if (!(std::cin >> a1 >> b1 >> c1 >> a2 >> b2 >> c2)) {
        std::cout << "Ошибка ввода.\n";
        return 0;
    }

    bool firstZero = std::fabs(a1) < EPS && std::fabs(b1) < EPS;
    bool secondZero = std::fabs(a2) < EPS && std::fabs(b2) < EPS;
    if ((firstZero && std::fabs(c1) >= EPS) ||
        (secondZero && std::fabs(c2) >= EPS)) {
        std::cout << "Одна из прямых не существует.\n";
    } else if (firstZero && secondZero) {
        std::cout << "Оба уравнения задают всю плоскость.\n";
    } else if (firstZero || secondZero) {
        std::cout << "Общие точки образуют одну прямую.\n";
    } else {
        double d = a1 * b2 - a2 * b1;
        if (std::fabs(d) >= EPS) {
            double x = (c1 * b2 - c2 * b1) / d;
            double y = (a1 * c2 - a2 * c1) / d;
            std::cout << std::setprecision(10)
                      << "Точка пересечения: (" << x << "; " << y << ").\n";
        } else if (std::fabs(a1 * c2 - a2 * c1) < EPS &&
                   std::fabs(b1 * c2 - b2 * c1) < EPS) {
            std::cout << "Прямые совпадают.\n";
        } else {
            std::cout << "Прямые параллельны.\n";
        }
    }
    return 0;
}
