using System;
using System.Diagnostics.Metrics;
using System.Xml.Serialization;
 
namespace Лабораторна_робота_5
{
    internal class Program
    {
        static void Main(string[] args)
        {
 
            int val = 1;
            do
            {
                Console.WriteLine("Choose the variant:{1-task5},{2-task25},{3-task38}");
                Console.WriteLine("If you want to stop function press 0");
                int choise = int.Parse(Console.ReadLine());
 
 
                switch (choise)
 
                {
 
                    // Вибір функції
                    case 1:
                        Block_1();
                        break;
                    case 2:
                        Block_2();
                        break;
                    case 3:
                        Block_3();
                        break;
 
                    case 0:
                        val = 0;
                        break;
 
                    default:
                        Console.WriteLine("Невірний вибір. Спробуйте ще раз.");
                        break;
                }
            } while (val != 0);
        }
 
        static void Block_1()
        {
          int check = 1;
            do
 
            {
                Console.WriteLine("Choose the type of cycle {1-for}, {2-while}, {3-do_while}");
                Console.WriteLine("If you want to stop block press 0");
                int choise = int.Parse(Console.ReadLine()); // Вибираємо серед варіантів 
 
                int counter = 0;
                int index = 1;
 
 
                switch (choise)
                {
                    case 1:
                        Console.Write("Введіть діапазон чисел: ");
                        int n = int.Parse(Console.ReadLine());
 
                        for (int i = 1; i <= n; i++)
                        {
                            Console.Write($"Введіть число {i}: ");
                            int x = int.Parse(Console.ReadLine());
                            if (i % 2 != 0)
                                counter += x;
                        }
                        Console.WriteLine(counter);
 
                        break;
 
                    case 2:
                        Console.Write("Введіть діапазон чисел: ");
                        int k = int.Parse(Console.ReadLine());
                        while (index <= k)
                        {
                            Console.Write($"Введіть число {index}: ");
                            int x = int.Parse(Console.ReadLine());
                            if (index % 2 != 0)
                                counter += x;
                            index++;
                        }
                        Console.WriteLine(counter);
 
                        break;
 
                    case 3:
                        Console.Write("Введіть діапазон чисел: ");
                        int f = int.Parse(Console.ReadLine());
                        do
                        {
                            Console.Write($"Введіть число {index}: ");
                            int x = int.Parse(Console.ReadLine());
                            if (index % 2 != 0)
                                counter += x;
 
                            index++;
                        } while (index <= f);
                        Console.WriteLine(counter);
                        break;
 
                    case 0:
                        check = 0;
                        break;
 
                    default:
                        Console.WriteLine("Невірний вибір. Спробуйте ще раз.");
                        break;
 
                }
 
 
            } while (check != 0);
        }
 
        static void Block_2()
        {
            int check = 1;
                Console.Write("Введіть перше число: ");
            int x = int.Parse(Console.ReadLine());
            do
            {
                Console.WriteLine("Choose the type of cycle {1-for}, {2-while}, {3-do_while}");
                Console.WriteLine("If you want to stop block press 0");
                int choise = int.Parse(Console.ReadLine());
 
 
                int min = x;
                int index = 1;
                int val = 2;
                int j = 1;
 
                switch (choise)
                {
                    case 1:
                        for (int i = 2; i <= val; i++, val++)
                        {
                            Console.WriteLine($"Min = {min}, index = {index}");
                            Console.Write("Введіть число: ");
                            x = int.Parse(Console.ReadLine());
 
                            if (x == 0)
                                break;
 
                            if (x < min)
                            {
                                min = x;
                                index = i;
                            }
                        }
                        Console.WriteLine($"Індекс найменшого числа: {index}");
                        break;
 
                    case 2:
                        while (x != 0)
                        {
                            if (min > x)
                            {
                                index = j;
                                min = x;
                            }
 
                            Console.Write("Введіть число: ");
                            x = int.Parse(Console.ReadLine());
                            j++;
                        }
                        Console.WriteLine($"Індекс найменшого числа: {index}");
                        break;
 
                    case 3:
                        do
                        {
                            if (min > x)
                            {
                                index = j;
                                min = x;
                            }
                            Console.Write("Введіть число: ");
                            x = int.Parse(Console.ReadLine());
                            j++;
                        } while (x != 0);
                        Console.WriteLine($"Індекс найменшого числа: {index}");
                        break;
 
                    case 0:
                        check = 0;
                        break;
 
                    default:
                        Console.WriteLine("Невірний вибір. Спробуйте ще раз.");
                        break;
 
                }
            } while (check != 0);
        }
        static void Block_3()
 
 
        {
            int check = 1;
            Console.Write("Введіть перше число: ");
            int n = int.Parse(Console.ReadLine());
 
            do
 
            {
                Console.WriteLine("Choose the type of cycle {1-for}, {2-while}, {3-do_while}");
                Console.WriteLine("If you want to stop block press 0");
                int choise = int.Parse(Console.ReadLine());
 
 
                int first_num = 15;
                int total_sum = 15;
                int counter = 2;
 
                switch (choise)
                {
                    case 1:
                        {
                            for (int j = 1; j < n; j += 1)
                            {
                                first_num += 2;
 
                                if (counter < 3)
                                {
                                    total_sum += first_num;
                                    Console.WriteLine($" plus total sum:{total_sum}");
                                }
 
 
                                if (counter == 3)
                                {
                                    total_sum -= first_num;
                                    Console.WriteLine($" minus total sum:{total_sum}");
                                    counter = 0;
                                }
 
                                counter += 1;
                            }
                        }
                        Console.WriteLine(total_sum);
                        break;
 
                    case 2:
                        {
                            while (counter <= n)
                            {
                                first_num += 2;
 
                                if (counter % 3 != 0)
                                    total_sum += first_num;
 
                                else
                                    total_sum -= first_num;
 
                                counter += 1;
                            }
 
                        }
                        Console.WriteLine(total_sum);
                        break;
 
                    case 3:
                        {
                            do
                            {
                                first_num += 2;
 
                                if (counter % 3 != 0)
                                    total_sum += first_num;
 
                                else
                                    total_sum -= first_num;
 
                                counter += 1;
                            } while (counter <= n);
                            Console.WriteLine(total_sum);
                            break;
                        }
                    case 0:
                        check = 0;
                        break;
 
                    default:
                        Console.WriteLine("Невірний вибір. Спробуйте ще раз.");
                        break;
                }
 
            } while (check != 0);
        }
    }
}
//При роботі з даною лабораторною роботою я створив міні проект, 
//завдання якого полягає у написані великого об’єму коду в межах одного проекту.
//Для цього ми використали блоки в яких записані 3 види циклів на кожен блок.
//Велику роль відіграв оператор switch що виконав роль вказівника 
//(тобто переміщення між блоками функції та їхніми способами рішення).
//Був використаний цикл  While  що створив можливість вибору одних і тих самих функцій декілька разів.
//Загалом я закріпив 4 види циклів це While , for , do while  , switch .