public static void Main(string[] args)
        {
            List <string>             puredatas           = ReadDatas();          // verileri okuttuk
            List <RestoranAttiribute> restorans2          = SplitData(puredatas); // her bir elemanı,bir restoranı ve onun ozellıklerının puanlarını tutan liste. Suan restorans2nin icinde 130 restoran nesnesi var
            RestoranAttiribute        restoranAttiribute2 = ConsoleOperations();

            double[] distances = CosinusSimilarity(restorans2, restoranAttiribute2);
            int      k         = GetK();
            bool     isOkey    = LastOperation(restorans2, distances, k);

            while (isOkey == true)
            {
                List <string>             puredatas2          = ReadDatas();           // verileri okuttuk
                List <RestoranAttiribute> restorans3          = SplitData(puredatas2); // her bir elemanı,bir restoranı ve onun ozellıklerının puanlarını tutan liste. Suan restorans2nin icinde 130 restoran nesnesi var
                RestoranAttiribute        restoranAttiribute3 = ConsoleOperations();
                double[] distances2 = CosinusSimilarity(restorans3, restoranAttiribute3);
                int      k2         = GetK();
                bool     isOkey2    = LastOperation(restorans3, distances2, k2);
            }
            // sadece su yanlıs gırdıgınde devam etme sorununu cozmek kaldı
        }
        public static double[] CosinusSimilarity(List <RestoranAttiribute> restorans, RestoranAttiribute restoranAttiribute)
        {
            double[] similarityarray = new double[130]; // En son hesaplanan benzerlik değerlerini barındıracak array.
            double[] productsofAiBi  = new double[130]; // PAY
            double[] squaresproduct  = new double[130]; // PAYDA

            double sumofpay = 0;
            double squareofAi = 0, squareofBi = 0;
            int    counter = 0;

            while (counter < restorans.Count)
            {
                if (restorans[counter].Ortam != -1)
                {
                    sumofpay   += restorans[counter].Ortam * restoranAttiribute.Ortam;
                    squareofAi += restorans[counter].Ortam * restorans[counter].Ortam;
                    squareofBi += restoranAttiribute.Ortam * restoranAttiribute.Ortam;
                }
                if (restorans[counter].Ortam_temizligi != -1)
                {
                    sumofpay   += restorans[counter].Ortam_temizligi * restoranAttiribute.Ortam_temizligi;
                    squareofAi += restorans[counter].Ortam_temizligi * restorans[counter].Ortam_temizligi;
                    squareofBi += restoranAttiribute.Ortam_temizligi * restoranAttiribute.Ortam_temizligi;
                }
                if (restorans[counter].Yemek_kalitesi != -1)
                {
                    sumofpay   += restorans[counter].Yemek_kalitesi * restoranAttiribute.Yemek_kalitesi;
                    squareofAi += restorans[counter].Yemek_kalitesi * restorans[counter].Yemek_kalitesi;
                    squareofBi += restoranAttiribute.Yemek_kalitesi * restoranAttiribute.Yemek_kalitesi;
                }
                if (restorans[counter].Hizmet_kalitesi != -1)
                {
                    sumofpay   += restorans[counter].Hizmet_kalitesi * restoranAttiribute.Hizmet_kalitesi;
                    squareofAi += restorans[counter].Hizmet_kalitesi * restorans[counter].Hizmet_kalitesi;
                    squareofBi += restoranAttiribute.Hizmet_kalitesi * restoranAttiribute.Hizmet_kalitesi;
                }
                if (restorans[counter].Fiyat_uygunlugu != -1)
                {
                    sumofpay   += restorans[counter].Fiyat_uygunlugu * restoranAttiribute.Fiyat_uygunlugu;
                    squareofAi += restorans[counter].Fiyat_uygunlugu * restorans[counter].Fiyat_uygunlugu;
                    squareofBi += restoranAttiribute.Fiyat_uygunlugu * restoranAttiribute.Fiyat_uygunlugu;
                }
                if (restorans[counter].Ulasim_kolaylıgi != -1)
                {
                    sumofpay   += restorans[counter].Ulasim_kolaylıgi * restoranAttiribute.Ulasim_kolaylıgi;
                    squareofAi += restorans[counter].Ulasim_kolaylıgi * restorans[counter].Ulasim_kolaylıgi;
                    squareofBi += restoranAttiribute.Ulasim_kolaylıgi * restoranAttiribute.Ulasim_kolaylıgi;
                }
                if (restorans[counter].Araba_park_olanagi != -1)
                {
                    sumofpay   += restorans[counter].Araba_park_olanagi * restoranAttiribute.Araba_park_olanagi;
                    squareofAi += restorans[counter].Araba_park_olanagi * restorans[counter].Araba_park_olanagi;
                    squareofBi += restoranAttiribute.Araba_park_olanagi * restoranAttiribute.Araba_park_olanagi;
                }
                productsofAiBi[counter] = sumofpay; // Counterıncı restoranın pay degeri
                squaresproduct[counter] = Math.Sqrt(squareofAi) * Math.Sqrt(squareofBi);
                counter++;
                sumofpay   = 0;
                squareofAi = 0;
                squareofBi = 0;
            }
            for (int i = 0; i < restorans.Count; i++)
            {
                similarityarray[i] = productsofAiBi[i] / squaresproduct[i];
            }
            return(similarityarray);
        }
        public static RestoranAttiribute ConsoleOperations()
        {
            int input = 0;

            string[] kriterler = { "Ortam", "Ortam Temizligi", "Yemek Kalitesi", "Hizmet Kalitesi", "Fiyat Uygunlugu", "Uasım Kolayligi", "Araba Park Olanagi" };
            Console.WriteLine("----------Restoran Oneri Sistemine Hosgeldiniz----------");
            Console.WriteLine("Simdi Sirasyla Size Uygun Kriter Puanlarini Gireceksiniz");

            RestoranAttiribute restoranAttiribute = new RestoranAttiribute();

            try
            {
                Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 1, kriterler[0]);
                input = Convert.ToInt16(Console.ReadLine());
                if (input >= 0 && input <= 10)
                {
                    restoranAttiribute.Ortam = input;
                }
                else
                {
                    throw new Exception();
                }
                Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 2, kriterler[1]);
                input = Convert.ToInt16(Console.ReadLine());
                if (input >= 0 && input <= 10)
                {
                    restoranAttiribute.Ortam_temizligi = input;
                }
                else
                {
                    throw new Exception();
                }
                Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 3, kriterler[2]);
                input = Convert.ToInt16(Console.ReadLine());
                if (input >= 0 && input <= 10)
                {
                    restoranAttiribute.Yemek_kalitesi = input;
                }
                else
                {
                    throw new Exception();
                }
                Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 4, kriterler[3]);
                input = Convert.ToInt16(Console.ReadLine());
                if (input >= 0 && input <= 10)
                {
                    restoranAttiribute.Hizmet_kalitesi = input;
                }
                else
                {
                    throw new Exception();
                }
                Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 5, kriterler[4]);
                input = Convert.ToInt16(Console.ReadLine());
                if (input >= 0 && input <= 10)
                {
                    restoranAttiribute.Fiyat_uygunlugu = input;
                }
                else
                {
                    throw new Exception();
                }
                Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 6, kriterler[5]);
                input = Convert.ToInt16(Console.ReadLine());
                if (input >= 0 && input <= 10)
                {
                    restoranAttiribute.Ulasim_kolaylıgi = input;
                }
                else
                {
                    throw new Exception();
                }
                Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 7, kriterler[6]);
                input = Convert.ToInt16(Console.ReadLine());
                if (input >= 0 && input <= 10)
                {
                    restoranAttiribute.Araba_park_olanagi = input;
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Hatali giris yaptiniz !! Lutfen 0-10 arasi sayisal bir deger girerek tekrar bastan baslayin.");
            }

            return(restoranAttiribute);
        }