/*
Veidoja: Viviāna
Grupa: 110
Praktiskais darbs 7.
Izmantotais Compiler: www.onlinegdb.com
*/
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        NoliktavasUzdevums();
        AttalumaUzdevums();
        List<double> izdevumi = ievadietizdevumus();

        Console.Write("ievadieto minimalo izdevumu slieksni: ");
        double slieksnis = Convert.ToDouble(Console.ReadLine());

        List<double> filtretie = filtretizdevumus(izdevumi, slieksnis);

        double diapazons = aprekinatmainibu(filtretie);

        Console.WriteLine("izdevumu diapazons ir: " + diapazons);
    }

    //1 uzd
    static List<double> ievadietizdevumus()
    {
        List<double> saraksts = new List<double>();

        Console.WriteLine("ievadiet izdevumus (tuksa rinda vai 'gals' lai beigtu):");

        while (true)
        {
            Console.Write("ievade: ");
            string ievade = Console.ReadLine();

            if (ievade == "" || ievade.ToLower() == "gals")
                break;

            if (double.TryParse(ievade, out double summa))
            {
                saraksts.Add(summa);
            }
            else
            {
                Console.WriteLine("neder!ievadiet skaitli");
            }
        }

        return saraksts;
    }

    static List<double> filtretizdevumus(List<double> izdevumi, double slieksnis)
    {
        List<double> rezultats = new List<double>();

        foreach (double x in izdevumi)
        {
            if (x >= slieksnis)
                rezultats.Add(x);
        }

        return rezultats;
    }

    static double aprekinatmainibu(List<double> saraksts)
    {
        if (saraksts.Count == 0)
            return 0;

        double min = saraksts[0];
        double max = saraksts[0];

        foreach (double x in saraksts)
        {
            if (x < min) min = x;
            if (x > max) max = x;
        }

        return max - min;
    }

    //2 uzd
    static void NoliktavasUzdevums()
    {
        string[,] noliktava =
        {
            { "A", "B", "", "", "M" },
            { "V", "", "X", "L", "S" },
            { "K", "", "", "", "Z" },
        };

        Console.Write("Ievadi meklējamo preces kodu: ");
        string kods = Console.ReadLine();

        string rezultats = AtklatPreci(noliktava, kods);
        Console.WriteLine(rezultats);

        int tuksie = AprekinatNeaizpilditas(noliktava);
        Console.WriteLine($"Kopā tukšo plauktu: {tuksie}");
    }

    static string AtklatPreci(string[,] masivs, string kods)
    {
        for (int i = 0; i < masivs.GetLength(0); i++)
        {
            for (int j = 0; j < masivs.GetLength(1); j++)
            {
                if (masivs[i, j] == kods)
                {
                    return $"Prece atrasta: Eja {i + 1}, Plaukts {j + 1}";
                }
            }
        }
        return "Kļūda: Prece netika atrasta!";
    }

    static int AprekinatNeaizpilditas(string[,] masivs)
    {
        int skaits = 0;

        for (int i = 0; i < masivs.GetLength(0); i++)
        {
            for (int j = 0; j < masivs.GetLength(1); j++)
            {
                if (string.IsNullOrEmpty(masivs[i, j]))
                {
                    skaits++;
                }
            }
        }

        return skaits;
    }

    //3 uzd
    static void AttalumaUzdevums()
    {
        Console.Write("Ievadi x1: ");
        double x1 = Convert.ToDouble(Console.ReadLine());

        Console.Write("Ievadi y1: ");
        double y1 = Convert.ToDouble(Console.ReadLine());

        Console.Write("Ievadi x2: ");
        double x2 = Convert.ToDouble(Console.ReadLine());

        Console.Write("Ievadi y2: ");
        double y2 = Convert.ToDouble(Console.ReadLine());

        double attalums = AprekinatPlaknesAttalumu(x1, y1, x2, y2);
        Console.WriteLine("Attālums starp punktiem: " + attalums);
    }

    static double AprekinatPlaknesAttalumu(double x1, double y1, double x2, double y2)
    {
        return Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
    }
}