package homework;
import java.util.Scanner;

/**
 *
 * @author Михаил Николов
 */
public class Hw16112010_2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double[][] c = new double[3][4]; // c == coefficients

        System.out.println("Програма за решаване на система от три линейни уравнения с три неизвестни.");
        System.out.println("|a1*x1 + a2*x2 + a3*x3 = d1");
        System.out.println("|b1*x1 + b2*x2 + b3*x3 = d2");
        System.out.println("|c1*x1 + c2*x2 + c3*x3 = d3");


        // Въвеждане на коефициентите
        String c_show = ""; // c_show == coefficients_show
        for(int i=0; i<3; i++) {
            for(int j=0; j<4; j++) {
                // Именуване на коефициентите
                switch(i) {
                    case 0:
                        switch(j) {
                            case 0: c_show = "a1"; break;
                            case 1: c_show = "a2"; break;
                            case 2: c_show = "a3"; break;
                            case 3: c_show = "d1"; break;
                        } break;
                    case 1:
                        switch(j) {
                            case 0: c_show = "b1"; break;
                            case 1: c_show = "b2"; break;
                            case 2: c_show = "b3"; break;
                            case 3: c_show = "d1"; break;
                        } break;
                    case 2:
                        switch(j) {
                            case 0: c_show = "c1"; break;
                            case 1: c_show = "c2"; break;
                            case 2: c_show = "c3"; break;
                            case 3: c_show = "d1"; break;
                        }
                }

                System.out.print(c_show + " = ");
                c[i][j] = input.nextDouble();
            }
        }

        // Изчисления
        double delete = c[0][0]*c[1][1]*c[2][2] + c[0][1]*c[1][2]*c[2][0] + c[0][2]*c[1][0]*c[2][1] - c[0][2]*c[1][1]*c[2][0] - c[0][0]*c[1][2]*c[2][1] - c[0][1]*c[1][0]*c[2][2];
        double calc1 = c[0][3]*c[1][1]*c[2][2] + c[0][1]*c[1][2]*c[2][3] + c[0][2]*c[2][1]*c[1][3] - c[0][2]*c[1][1]*c[2][3] - c[1][2]*c[2][1]*c[0][3] - c[0][1]*c[2][2]*c[1][3];
        double calc2 = c[0][0]*c[2][2]*c[1][3] + c[1][2]*c[2][0]*c[0][3] + c[0][2]*c[1][0]*c[2][3] - c[0][2]*c[2][0]*c[1][3] - c[0][0]*c[1][2]*c[2][3] - c[1][0]*c[2][2]*c[0][3];
        double calc3 = c[0][0]*c[1][1]*c[2][3] + c[0][1]*c[2][0]*c[1][3] + c[1][0]*c[2][1]*c[0][3] - c[1][1]*c[2][0]*c[0][3] - c[0][0]*c[2][1]*c[1][3] - c[0][1]*c[1][0]*c[2][3];

        // Резултати
        if (delete != 0) {
            double x1 = calc1/delete;
            double x2 = calc2/delete;
            double x3 = calc3/delete;

            System.out.println("\nРезултати:\nх1=" + x1);
            System.out.println("x2=" + x2);
            System.out.println("x3=" + x3);
        }
        else if ((calc1 == 0) || (calc2 == 0) || (calc1 == 0)) {
            System.out.println("\nИма безброй много корени.");
        }
        else {
            System.out.println("\nНяма реални корени.");
        }
    }
}