Created
October 2, 2025 10:47
-
-
Save sunmeat/4cf2da65718d7a234dd26cc5c1dbc601 to your computer and use it in GitHub Desktop.
цикли в сішарп
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using System.Reflection; | |
| using System.Text; | |
| namespace Cycles | |
| { | |
| static class Input | |
| { | |
| static int number; | |
| public static int Number() | |
| { | |
| while (true) // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| { | |
| try | |
| { | |
| number = Convert.ToInt32(Console.ReadLine()); | |
| } | |
| catch (FormatException) | |
| { | |
| Console.WriteLine("потрібно було ввести число, а не рядок!"); | |
| continue; | |
| } | |
| catch (OverflowException) | |
| { | |
| Console.WriteLine("занадто велике число!"); | |
| continue; | |
| } | |
| break; | |
| } | |
| return number; | |
| } | |
| } | |
| class Tree | |
| { | |
| int row; | |
| int height; | |
| public Tree(int r, int h) { row = r; height = h; } | |
| public void Print(char symbol) | |
| { | |
| Console.Clear(); | |
| int middle = (height * 2 - 1) / 2 + row; | |
| int startX; | |
| int startY = Console.CursorTop; | |
| int length; | |
| Console.ForegroundColor = ConsoleColor.Green; | |
| for (int i = 0; i < row; i++) // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| { | |
| length = i * 2 + 1; | |
| startX = middle - i; | |
| for (int j = 0; j < height; j++) | |
| { | |
| Console.SetCursorPosition(startX, startY); | |
| for (int z = 0; z < length; z++) | |
| { | |
| Console.Write(symbol); | |
| } | |
| length += 2; | |
| startX--; | |
| startY++; | |
| } | |
| } | |
| if (middle < 6) | |
| { | |
| startX = middle; | |
| length = 1; | |
| } | |
| else | |
| { | |
| startX = middle - 1; | |
| length = 3; | |
| } | |
| Console.ForegroundColor = ConsoleColor.DarkRed; | |
| for (int i = 0; i < 3; i++) | |
| { | |
| Console.SetCursorPosition(startX, startY); | |
| for (int z = 0; z < length; z++) | |
| { | |
| Console.Write('#'); | |
| } | |
| startY++; | |
| } | |
| Console.WriteLine(""); | |
| int semaphore = 0; | |
| Console.CursorVisible = false; | |
| while (true) | |
| { | |
| switch (semaphore) | |
| { | |
| case 0: | |
| Console.ForegroundColor = ConsoleColor.Blue; | |
| semaphore = 1; | |
| break; | |
| case 1: | |
| Console.ForegroundColor = ConsoleColor.Yellow; | |
| semaphore = 2; | |
| break; | |
| case 2: | |
| Console.ForegroundColor = ConsoleColor.Red; | |
| semaphore = 0; | |
| break; | |
| } | |
| Console.SetCursorPosition(middle, 0); | |
| Console.Write("@"); | |
| Thread.Sleep(150); | |
| } | |
| } | |
| } | |
| class Program | |
| { | |
| static void Main() | |
| { | |
| Console.InputEncoding = Encoding.UTF8; | |
| Console.OutputEncoding = Encoding.UTF8; | |
| // перевірка на паліндром за допомогою циклу for | |
| int counter = 0; | |
| string str = "racecar"; | |
| // порівняння першої букви з останньою, другої з передостанньою тощо | |
| for (int i = 0, j = str.Length - 1; i < j; i++, j--) // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| { | |
| if (str[i] == str[j]) | |
| { | |
| // якщо букви рівні, прирощується лічильник | |
| counter++; | |
| } | |
| } | |
| // якщо лічильник дорівнює половині довжини рядка, то рядок є паліндромом | |
| if (counter == str.Length / 2) | |
| { | |
| Console.WriteLine("рядок \"{0}\" є паліндромом", str); | |
| } | |
| else | |
| { | |
| Console.WriteLine("рядок \"{0}\" не є паліндромом", str); | |
| } | |
| // додавання чисел згенерованих комп'ютером у діапазоні від 0 до 20 поки сума не буде дорівнювати 100, вивід кількості чисел | |
| var rand = new Random(); | |
| // лічильник для чисел | |
| int count = 0; | |
| // змінна для зберігання числа | |
| int number = 0; | |
| // змінна для зберігання суми | |
| int sum = 0; | |
| Console.WriteLine("числа:"); | |
| // поки сума менше або дорівнює 100 | |
| while (sum <= 100) // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| { | |
| // генерація числа | |
| number = rand.Next(0, 20); | |
| Console.WriteLine(number); | |
| // додавання числа до суми | |
| sum += number; | |
| // прирощення лічильника | |
| count++; | |
| } | |
| Console.WriteLine("\nзгенеровано {0} чисел від 0 до 20", count); | |
| // підрахунок суми всіх цифр будь-якого числа | |
| // змінна для суми всіх цифр | |
| int totalSum = 0; | |
| // ціле число, з якого витягуватимуться цифри | |
| int inputNumber = 0; | |
| Console.WriteLine("введіть будь-яке ціле число:"); | |
| inputNumber = Convert.ToInt32(Console.ReadLine()); | |
| // запам'ятовування числа | |
| int copy = inputNumber; | |
| do // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| { | |
| // знаходження останньої цифри та сумування її з поточним значенням суми | |
| totalSum = totalSum + inputNumber % 10; | |
| // відсікання останньої цифри від числа | |
| inputNumber = (inputNumber - inputNumber % 10) / 10; | |
| } | |
| // якщо n більше нуля, повернутися і повторити оператори тіла циклу | |
| while (inputNumber > 0); | |
| Console.WriteLine("сума всіх цифр {0} є {1}", copy, totalSum); | |
| // демонстрація циклу foreach, обчислення суми, максимального та мінімального елементів масиву, заповненого випадковими числами | |
| int size = 10; | |
| int[] numbers = new int[size]; | |
| for (int i = 0; i < size; i++) | |
| { | |
| numbers[i] = rand.Next(100); | |
| } | |
| long arraySum = 0; | |
| int maximum = numbers[0]; | |
| int minimum = numbers[0]; | |
| Console.WriteLine("елементи:"); | |
| foreach (int num in numbers) // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| { | |
| Console.WriteLine(num); | |
| arraySum += num; | |
| if (num > maximum) | |
| { | |
| maximum = num; | |
| } | |
| else if (num < minimum) | |
| { | |
| minimum = num; | |
| } | |
| } | |
| Console.WriteLine("\nсума: {0}\nмінімум: {1}\nмаксимум: {2}", arraySum, minimum, maximum); | |
| // рефлексія для виведення властивостей класу console | |
| // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| foreach (MemberInfo mi in typeof(Console).GetMembers().Where(m => m.MemberType == MemberTypes.Property)) | |
| { | |
| Console.WriteLine(mi); | |
| Thread.Sleep(200); | |
| } | |
| // малювання ялинки з валідацією вводу | |
| Console.Title = "щасливого нового року 2025!!!"; | |
| int row, height; | |
| do | |
| { | |
| Console.Write("щоб намалювати ялинку, вкажіть:\nкількість ярусів: "); | |
| row = Input.Number(); | |
| Console.Write("висоту ярусу: "); | |
| height = Input.Number(); | |
| if (row <= 0) | |
| { | |
| Console.WriteLine("кількість рядів не може бути меншою за одиницю"); | |
| } | |
| if (height <= 0) | |
| { | |
| Console.WriteLine("висота не може бути меншою за одиницю"); | |
| } | |
| Thread.Sleep(1000); | |
| Console.Clear(); | |
| } while (row < 1 || height < 1); | |
| Console.BufferHeight = Console.LargestWindowHeight; | |
| Console.BufferWidth = Console.BufferWidth; | |
| bool flagRow = false, flagHeight = false; | |
| // !!!!!!!!!!!!!!!!!!!!!!!!!!! | |
| while (row * height + 5 > Console.LargestWindowHeight || (height * 2 - 1) + row * 2 + 1 > Console.LargestWindowWidth) | |
| { | |
| if (row * height + 5 > Console.LargestWindowHeight) | |
| { | |
| if (row > 1) | |
| row--; | |
| flagRow = true; | |
| } | |
| if ((height * 2 - 1) + row * 2 + 1 > Console.LargestWindowWidth) | |
| { | |
| if (height > 1) | |
| height--; | |
| flagHeight = true; | |
| } | |
| } | |
| if (flagRow) | |
| { | |
| Console.WriteLine("висота ялинки перевищуватиме розмір екрана,\nтому зменшуємо кількість ярусів до {0}", row); | |
| Thread.Sleep(2000); | |
| } | |
| if (flagHeight) | |
| { | |
| Console.WriteLine("заданий розмір ялинки перевищуватиме розмір екрана,\nтому зменшуємо висоту ярусу до {0}", height); | |
| Thread.Sleep(2000); | |
| } | |
| Console.WindowHeight = row * height + 5; | |
| Console.WindowWidth = (height * 2 - 1) + row * 2 + 1; | |
| Tree xmas = new Tree(row, height); | |
| xmas.Print('»'); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment