I6. Задачи на условные операторы повышенной сложности

Напишите в комментарии к этой записи консольные приложения для решения этих задач, указав код задачи.
Решены задачи: 1-13. Не решены: 14-25.

Задачи

I6.1. Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков. Получить цифры числа, равного разности заданных чисел (известно, что это число двузначное). Число-уменьшаемое и число-разность не определять.

I6.2. Даны цифры двух двузначных чисел, записываемых в виде a2a1 и b2b1 , где a1 и b1 — число единиц, a2 и b2 — число десятков. Получить цифры числа, равного разности заданных чисел (известно, что это число двузначное). Число-уменьшаемое, число-вычитаемое и число-разность не определять.

I6.3. Даны цифры двух десятичных целых чисел: трехзначного a3a2a1 и двузначного b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков, a3 — число сотен. Получить цифры, составляющие разность этих чисел (известно, что это число трехзначное). Число-уменьшаемое, число-вычитаемое и число-разность не определять.

I6.4. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8.
а) на поле (a, b) расположена ладья. Определить, угрожает ли она полю (c, d);
б) на поле (a, b) расположен слон. Определить, угрожает ли он полю (c, d);
в) на поле (a, b) расположен король. Определить, может ли он одним ходом попасть на поле (c, d);
г) на поле (a, b) расположен ферзь. Определить, угрожает ли он полю (c, d);
д) на поле (a, b) расположена белая пешка. Определить, может ли она одним ходом попасть на поле (c, d):
— при обычном ходе;
— когда она «бьет» фигуру или пешку соперника;
Примечание. Белые пешки перемещаются на доске снизу вверх.
е) на поле (a, b) расположена черная пешка. Определить, может ли она одним ходом попасть на поле (c, d):
— при обычном ходе;
— когда она «бьет» фигуру или пешку соперника;
Примечание. Черные пешки перемещаются на доске сверху вниз.
ж) на поле (a, b) расположен конь. Определить, угрожает ли он полю (c, d).
Во всех задачах ответ проверить на шахматной доске или на клетчатой бумаге.

I6.5. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит восьми. На поле (a, b) расположена белая фигура, на поле (c, d) — черная. Определить, может ли белая фигура пойти на поле (e, f), не попав при этом под удар черной фигуры. Рассмотреть следующие варианты сочетаний белой и черной фигур:
а) ладья и ладья;
б) ладья и ферзь;
в) ладья и конь;
г) ладья и слон;
д) ферзь и ферзь;
е) ферзь и ладья;
ж) ферзь и конь;
з) ферзь и слон;
и) конь и конь;
к) конь и ладья;
л) конь и ферзь;
м) конь и слон;
н) слон и слон;
о) слон и ферзь;
п) слон и конь;
р) слон и ладья;
с) король и слон;
т) король и ферзь;
у) король и конь;
ф) король и ладья.
Во всех задачах ответ проверить на шахматной доске или на клетчатой бумаге.

I6.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит восьми. Определить, являются ли поля (a, b) и (c, d) полями одного цвета. Ответ проверить на шахматной доске или на клетчатой бумаге.

I6.7. Даны вещественные положительные числа a, b, c. Выяснить, существует ли треугольник со сторонами a, b, c.

I6.8. Даны вещественные положительные числа a, b, c. Если существует треугольник со сторонами a, b, c, то определить, является ли он прямоугольным.

I6.9. Даны вещественные положительные числа a, b, c. Если существует треугольник со сторонами a, b, c, то:
а) определить его вид (прямоугольный, остроугольный или тупоугольный);
б) определить его вид (прямоугольный, остроугольный или тупоугольный) и особенности (равносторонний, равнобедренный, разносторонний).

I6.10. Дано целое число n (1 <= n <= 99), определяющее возраст человека (в годах). Для этого числа напечатать фразу «мне n лет», учитывая, что при некоторых значениях n слово «лет» надо заменить на слово «год» или «года».

I6.11. Для натурального числа k напечатать фразу «мы нашли k грибов в лесу», согласовав окончание слова «гриб» с числом k.

I6.12. История из 20 века. Дано натуральное число n (1 <= n <= 9999), определяющее стоимость товара в копейках. Выразить стоимость в рублях и копейках, например, 3 рубля 21 копейка, 15 рублей 5 копеек, 1 рубль ровно и т. п.

I6.13. Дано натуральное число n (1 <= n <= 1188), определяющее возраст человека (в месяцах). Выразить возраст в годах и месяцах, например, 21 год 10 месяцев, 52 года 1 месяц, 46 лет ровно и т. п.

I6.14. Известны год, номер месяца и день рождения человека, а также год, номер месяца и день сегодняшнего дня. Определить возраст человека (число полных лет).

I6.15. Известны год, номер месяца и день рождения каждого из двух человек. Определить, кто из них старше.

I6.16. Известны год и номер месяца рождения человека, а также год и номер месяца сегодняшнего дня. Определить возраст человека (число полных лет и число полных месяцев). При определении числа полных месяцев дни месяца не учитывать, а использовать разность между номерами месяцев. Например, если месяц рождения — февраль, а текущий (сегодняшний) месяц — май, то число полных месяцев равно трем независимо от дня рождения и сегодняшнего дня.

I6.17. Поезд прибывает на станцию в a часов b минут и отправляется в c часов d минут. Пассажир пришел на платформу в n часов m минут. Будет ли поезд стоять на платформе? Числа a, b, c, d, n, m — целые, 0 <= a <Б= 23, 0 <= b <= 59,
0 <= c <= 23, 0 <= d <= 59, 0 <= n <= 23, 0 <= m <= 59.
I6.18.0. Дата некоторого дня определяется двумя натуральными числами: m (порядковый номер месяца) и n (число). По заданным n и m определить:
а) дату предыдущего дня (принять, что n и m не определяют 1 января);
б) дату следующего дня (принять, что n и m не определяют 31 декабря).
Примечание. В обеих задачах принять также, что год не является високосным.

I6.18. Дата некоторого дня определяется тремя натуральными числами: g (год), m (порядковый номер месяца) и n (число). По заданным g, n и m определить:
а) дату предыдущего дня;
б) дату следующего дня.
В обеих задачах рассмотреть два случая:
1) заданный год не является високосным;
2) заданный год может быть високосным (см. задачу I3.25).

I6.19. Работа светофора для водителей запрограммирована следующим образом:
в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение одной минуты — желтый, в течение двух минут — красный, в течение трех минут — опять зеленый и т. д. Дано вещественное число t, означающее время в минутах, прошедшее с начала очередного часа. Определить, сигнал какого цвета горит для водителей в этот момент.

I6.20. Дано целое число k (1 <=k <= 365). Определить, каким будет k-й день года: субботой, воскресеньем или рабочим днем, если 1 января:
а) понедельник;
б) d-й день недели (если 1 января — понедельник, то d=1 , если вторник — d=2 , …, если воскресенье — d=7).

I6.21. Даны целое число k (1 <= k <= 180) и последовательность цифр 10111213…9899, в которой выписаны подряд все двузначные числа. Определить k-ю цифру.
Примечание. Величины строкового типа не использовать.

I6.22. Дана последовательность цифр, представляющая собой записанные подряд ноль и 20 первых натуральных чисел. Найти цифру с номером n в этой последовательности (1 <= n <= 32).
Примечание. Величины строкового типа не использовать.

I6.23. Даны целое число k (1 <= k <= 252) и последовательность цифр 505152…9899100101…149150, в которой выписаны подряд все натуральные числа от 50 до 250. Определить k-ю цифру.
Примечание. Величины строкового типа не использовать.

I6.24. Даны целое число k (1 <= k <= 222) и последовательность цифр 123…91011…9899100101…109110, в которой выписаны подряд все натуральные числа от 1 до 110. Определить k-ю цифру.
Примечание. Величины строкового типа не использовать.

I6.25. В подъезде жилого дома имеется n квартир, пронумерованных подряд, начиная с номера a. Определить, является ли сумма номеров всех квартир четным числом. Формулу суммы членов арифметической прогрессии не использовать.


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Помощь проекту:

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
34 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

I6.4
byte a,b,c,d;

loop1:

System.Console.Write(«Enter coordinate: \n Cor1=»);
a = byte.Parse(Console.ReadLine());
System.Console.Write(» Cor2=»);
b = byte.Parse(Console.ReadLine());
if(a>8 || b>8){Console.WriteLine(«Error, enter number less than 8»); goto loop1;}

      
loop2:
System.Console.Write(«Enter 2nd coordinate: \n Cor1=»);
c = byte.Parse(Console.ReadLine());
System.Console.Write(» Cor2=»);
d = byte.Parse(Console.ReadLine());

if(c>8 || d>8)
{
Console.WriteLine(«Error, enter number less than 8»);
goto loop2;
}      

if (a==c && b==d)
{
System.Console.WriteLine(«Error, your coorditanet are same, enter another»);
goto loop2;
}
      
if(c!=a && d!=b) System.Console.WriteLine(«Not threatening»); 
else System.Console.WriteLine(«Threatens»); //это для ладьи

if(a>c && b>d) if(a-c==b-d) System.Console.WriteLine(«Threatens»);
if(a<c && b<d) if(c-a==d-b) System.Console.WriteLine(«Threatens»);
if(a<c && b>d) if(c-a==b-d) System.Console.WriteLine(«Threatens»);
if(a>c && b<d) if(a-c==d-b) System.Console.WriteLine(«Threatens»);      
else System.Console.WriteLine(«Not Threatening»);  //это для слогна

Последний раз редактировалось 6 месяцев назад Dowran ем

25 задача
using System;
 class Program {
  static void Main() {
Console.WriteLine(«Введите число квартир в доме: «);
int kolvo = Convert.ToInt32(Console.ReadLine());
int sum = 0;
for(int i = 0; i <= kolvo; i++) {
  sum += i;
}
Console.WriteLine(sum % 2 == 0 ? «Сумма квартир четная» : «Сумма квартир нечетная»);
}
}

здесь был неправильный код

Последний раз редактировалось 1 год назад Юлия ем

Не могу решить 23 и 24 — не понимаю их.

using System;
//I6.Задачи на условные операторы повышенной сложности
namespace I6
{
    class Program
    {
        static double Input(string Name, double Min = -1.7E308, double Max = 1.7E308, double Exception1 = 1.7E308, double Exception2 = 1.7E308)
        {
            Console.WriteLine($"Введите {Name} ");
            double Num;
            while (!(double.TryParse(Console.ReadLine(), out Num) && Num >= Min && Num <= Max && Num != Exception1 && Num != Exception2)) Console.WriteLine("Введено неверное значение");
            return Num;
        }

        static bool Chess (int Fig, int X0, int Y0, int XT, int YT)
        {
            bool Result=false;
            switch (Fig)
            {
                case 1: //белая пешка
                    {
                        if (XT == X0 && YT == Y0 + 1) { Result = true; Console.Write("если идет прямо, "); }
                        if (Math.Abs(XT - X0)==1 && (YT == Y0 + 1)) { Result = true; Console.Write("если рубит, "); }
                        break;
                    }
                case 2: //черная пешка
                    {
                        if (XT == X0 && YT == Y0 - 1) { Result = true; Console.Write("если идет прямо, "); }
                        if ((Math.Abs(XT - X0) == 1) && (YT == Y0 - 1)) {Result = true; Console.Write("если рубит, "); }
                        break;
                    }
                case 3: //ладья
                    {
                        if ((XT == X0) ^ (YT == Y0)) Result = true;
                        break;
                    }
                case 4: //слон
                    {
                        if (Math.Abs(XT - X0) == Math.Abs(YT - Y0)) Result = true;
                        break;
                    }
                case 5: //конь
                    {
                        if ((Math.Abs(XT - X0) == 2 && Math.Abs(YT - Y0) == 1) || (Math.Abs(XT - X0) == 1 && Math.Abs(YT - Y0) == 2)) Result = true;
                        break;
                    }
                case 6: //ферзь
                    {
                        if ((Math.Abs(XT - X0) == Math.Abs(YT - Y0)) || ((XT == X0) ^ (YT == Y0))) Result = true;
                        break;
                    }
                case 7: //король
                    {
                        if ((Math.Abs(XT - X0) == 0 || Math.Abs(XT - X0) == 1) && (Math.Abs(YT - Y0) == 0 || Math.Abs(YT - Y0) == 1)) Result = true;
                        break;
                    }
            }
            return Result;
        }
        static string Count(int Num, string Form1, string Form2, string Form3)
        {
            string Result = Form3;
            if ((Num < 10 || Num>20) && Num%10==1) Result = Form1;
            if ((Num < 10 || Num > 20) && Num % 10 >= 2 && Num % 10 <= 4) Result = Form2;
            return Result;
        }
        static void Main()
        {
            //I6.1
            Console.WriteLine("I6.1. Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков. Получить цифры числа, равного разности заданных чисел (известно, что это число двузначное). Число-уменьшаемое и число-разность не определять.");
            int N1A = (int)Input("двузначное число",10,99);
            int N1B = (int)Input("однозначное число", 0, 9);
            int N1A1 = N1A % 10;
            int N1A2 = N1A / 10;
            int N1C1 = 0;
            int N1C2 = 0;
            if (N1B > N1A1)
            {
                N1C1 = N1A1-N1B+10;
                N1C2 = N1A2 - 1;
            }
            else
            {
                N1C1 = N1A1-N1B;
                N1C2 = N1A2;
            }
            Console.WriteLine($"Разность {N1C2}{N1C1}");
            Console.ReadKey();
            Console.Clear();
            //I6.2
            Console.WriteLine("I6.2. Даны цифры двух двузначных чисел, записываемых в виде a2a1 и b2b1 , где a1 и b1 — число единиц, a2 и b2 — число десятков. Получить цифры числа, равного разности заданных чисел (известно, что это число двузначное). Число-уменьшаемое, число-вычитаемое и число-разность не определять.");
            int N2A = (int)Input("двузначное число", 10, 99);
            int N2B = (int)Input("двузначное число", 10, 99);
            int N2A1 = N2A % 10;
            int N2A2 = N2A / 10;
            int N2B1 = N2B % 10;
            int N2B2 = N2B / 10;
            int N2C1=0;
            int N2C2=0;
            if (N2A2>=N2B2)
            {
                if (N2A1>=N2B1)
                {
                    N2C2 = N2A2 - N2B2;
                    N2C1 = N2A1 - N2B1;
                }
                else
                {
                    N2C2 = N2A2 - N2B2-1;
                    N2C1 = -(N2A1 - N2B1);
                }
            }
            else
            {
                if (N2B1 >= N2A1)
                {
                    N2C2 = N2B2 - N2A2;
                    N2C1 = N2B1 - N2A1;
                }
                else
                {
                    N2C2 = N2B2 - N2A2 - 1;
                    N2C1 = -(N2B1 - N2A1);
                }
            }
            Console.WriteLine($"Разность чисел {N2C2}{N2C1}");
            Console.ReadKey();
            Console.Clear();
            //I6.3
            Console.WriteLine("I6.3. Даны цифры двух десятичных целых чисел: трехзначного a3a2a1 и двузначного b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков, a3 — число сотен. Получить цифры, составляющие разность этих чисел (известно, что это число трехзначное). Число-уменьшаемое, число-вычитаемое и число-разность не определять.");
            int N3A = (int)Input("трехзначное число", 100, 999);
            int N3B = (int)Input("двузначное число", 10, 99);
            int N3A1 = N3A % 10;
            int N3A2 = (N3A % 100) / 10;
            int N3A3 = N3A / 100;
            int N3B1 = N3B % 10;
            int N3B2 = N3B / 10;
            int N3C1 = N3A1-N3B1;
            int N3C2 = N3A2-N3B2;
            int N3C3 = N3A3;
            if (N3C1<0)
            {
                N3C1 = N3C1+10;
                N3C2 -= 1;
            }
            if (N3C2<0)
            {
                N3C2 = N3C2+10;
                N3C3 -= 1;
            }
            Console.WriteLine($"Разность {N3C3}{N3C2}{N3C1}");
            Console.ReadKey();
            Console.Clear();
            //I6.4
            do
            {
                Console.Clear();
                Console.WriteLine("I6.4. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8. \nа) на поле(a, b) расположена ладья. Определить, угрожает ли она полю(c, d);\nб) на поле(a, b) расположен слон. Определить, угрожает ли он полю(c, d);\nв) на поле(a, b) расположен король. Определить, может ли он одним ходом попасть на поле(c, d);\nг) на поле(a, b) расположен ферзь. Определить, угрожает ли он полю(c, d);\n ) на поле(a, b) расположена белая пешка.Определить, может ли она одним ходом попасть на поле(c, d):\n -при обычном ходе;\n— когда она «бьет» фигуру или пешку соперника;\n Примечание.Белые пешки перемещаются на доске снизу вверх.\n е) на поле(a, b) расположена черная пешка.Определить, может ли она одним ходом попасть на поле(c, d):\n - при обычном ходе;\n— когда она «бьет» фигуру или пешку соперника;\nПримечание.Черные пешки перемещаются на доске сверху вниз.\n ж) на поле(a, b) расположен конь. Определить, угрожает ли он полю(c, d).\nВо всех задачах ответ проверить на шахматной доске или на клетчатой бумаге.\n");
                int N4fig = (int)Input("ходящую фигуру: 1-белая пешка, 2-черная пешка, 3-ладья, 4-слон, 5-конь, 6-ферзь, 7-король", 1, 7);
                int N4A = (int)Input("X координата ходящей фигуры", 1, 8);
                int N4B = (int)Input("Y координата ходящей фигуры", 1, 8);
                int N4C = (int)Input("X координата проверочной клетки", 1, 8);
                int N4D = (int)Input("Y координата проверочной клетки", 1, 8);
                Console.WriteLine(Chess(N4fig, N4A, N4B, N4C, N4D) ? $"фигура угрожает клетке" : "фигура не угрожает клетке");
                Console.WriteLine("\nРешение задачи будет продолжено\nДля выхода из цикла нажмите пробел\nДля повтора любую другую клавишу");
            } while (Console.ReadKey().Key != ConsoleKey.Spacebar);
            Console.Clear();
            //I6.5
            do
            {
                Console.Clear();
                Console.WriteLine("I6.5. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит восьми. На поле (a, b) расположена белая фигура, на поле (c, d) — черная. Определить, может ли белая фигура пойти на поле (e, f), не попав при этом под удар черной фигуры. Рассмотреть следующие варианты сочетаний белой и черной фигур:\nа) ладья и ладья;\nб) ладья и ферзь;\nв) ладья и конь;\nг) ладья и слон;\nд) ферзь и ферзь;\nе) ферзь и ладья;\nж) ферзь и конь;\nз) ферзь и слон;\nи) конь и конь;\nк) конь и ладья;\nл) конь и ферзь;\nм) конь и слон;\nн) слон и слон;\nо) слон и ферзь;\nп) слон и конь;\nр) слон и ладья;\nс) король и слон;\nт) король и ферзь;\nу) король и конь;\nф) король и ладья.\nВо всех задачах ответ проверить на шахматной доске или на клетчатой бумаге.\n");
                int N5figW = (int)Input("ходящую белую фигуру: 1-белая пешка, 2-черная пешка, 3-ладья, 4-слон, 5-конь, 6-ферзь, 7-король", 1, 7);
                int N5A = (int)Input("X координату белой ходящей фигуры", 1, 8);
                int N5B = (int)Input("Y координату белой ходящей фигуры", 1, 8);
                int N5figB = (int)Input("обороняющую черную фигуру: 1-белая пешка, 2-черная пешка, 3-ладья, 4-слон, 5-конь, 6-ферзь, 7-король", 1, 7);
                int N5C = (int)Input("X координату черной обороняющей фигуры", 1, 8);
                int N5D = (int)Input("Y координату черной обороняющей фигуры", 1, 8);
                int N5E = (int)Input("X координату, куда идет белая фигура", 1, 8);
                int N5F = (int)Input("Y координату, куда идет белая фигура", 1, 8);
                if (!Chess(N5figW, N5A, N5B, N5E, N5F)) Console.WriteLine("белая фигура не может так ходить");
                if (Chess(N5figW, N5A, N5B, N5E, N5F) && !Chess(N5figB, N5C, N5D, N5E, N5F)) Console.WriteLine("ход безопасен");
                if (Chess(N5figW, N5A, N5B, N5E, N5F) && Chess(N5figB, N5C, N5D, N5E, N5F)) Console.WriteLine("белая фигура окажется под ударом");
                Console.WriteLine("\nРешение задачи будет продолжено\nДля выхода из цикла нажмите пробел\nДля повтора любую другую клавишу");
            } while (Console.ReadKey().Key != ConsoleKey.Spacebar);
            Console.Clear();
            //I6.6
            Console.WriteLine("I6.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит восьми. Определить, являются ли поля (a, b) и (c, d) полями одного цвета. Ответ проверить на шахматной доске или на клетчатой бумаге.");
            int N6A = (int)Input("X координату первого поля",1,8);
            int N6B = (int)Input("Y координату первого поля",1,8);
            int N6C = (int)Input("X координату второго поля",1,8);
            int N6D = (int)Input("Y координату второго поля",1,8);
            bool B61black = false;
            bool B62black = false;
            if ((N6A % 2 != 0 && N6B % 2 != 0) || (N6A % 2 == 0 && N6B % 2 == 0)) B61black = true;
            if ((N6C % 2 != 0 && N6D % 2 != 0) || (N6C % 2 == 0 && N6D % 2 == 0)) B62black = true;
            Console.WriteLine((B61black == B62black) ? "Указанные поля одного цвета" : "Указанные поля разных цветов");
            Console.ReadKey();
            Console.Clear();
            //I6.7
            Console.WriteLine("I6.7. Даны вещественные положительные числа a, b, c. Выяснить, существует ли треугольник со сторонами a, b, c.");
            double N7A = Input("число A",0);
            double N7B = Input("число B",0);
            double N7C = Input("число C",0);
            string S7Result = "Такого треугольника нет";
            if (N7A > N7B && N7A > N7C && N7A < (N7B + N7C)) S7Result = "Треугольник существует";
            if (N7B > N7A && N7B > N7C && N7B < (N7A + N7C)) S7Result = "Треугольник существует";
            if (N7C > N7B && N7C > N7A && N7C < (N7A + N7B)) S7Result = "Треугольник существует";
            Console.WriteLine(S7Result);
            Console.ReadKey();
            Console.Clear();
            //I6.8
            Console.WriteLine("I6.8. Даны вещественные положительные числа a, b, c. Если существует треугольник со сторонами a, b, c, то определить, является ли он прямоугольным.");
            double N8A = Input("число A", 0);
            double N8B = Input("число B", 0);
            double N8C = Input("число C", 0);
            string S8Result = "Такого треугольника нет";
            if (N8A > N8B && N8A > N8C && N8A < (N8B + N8C))
            {
                S8Result = "Треугольник существует";
                if (Math.Pow(N8A, 2) == Math.Pow(N8B, 2) + Math.Pow(N8C, 2)) S8Result = string.Concat(S8Result, " и является прямоугольным");
            }
            if (N8B > N8A && N8B > N8C && N8B < (N8A + N8C))
            {
                S8Result = "Треугольник существует";
                if (Math.Pow(N8B, 2) == Math.Pow(N8A, 2) + Math.Pow(N8C, 2)) S8Result = string.Concat(S8Result, " и является прямоугольным");
            }
            if (N8C > N8B && N8C > N8A && N8C < (N8A + N8B))
            {
                S8Result = "Треугольник существует";
                if (Math.Pow(N8C, 2) == Math.Pow(N8A, 2) + Math.Pow(N8B, 2)) S8Result = string.Concat(S8Result, " и является прямоугольным");
            }
            Console.WriteLine(S8Result);
            Console.ReadKey();
            Console.Clear();
            //I6.9
            Console.WriteLine("I6.9. Даны вещественные положительные числа a, b, c. Если существует треугольник со сторонами a, b, c, то:\nа) определить его вид(прямоугольный, остроугольный или тупоугольный);\nб) определить его вид(прямоугольный, остроугольный или тупоугольный) и особенности(равносторонний, равнобедренный, разносторонний).");
            double N9A = Input("число A", 0);
            double N9B = Input("число B", 0);
            double N9C = Input("число C", 0);
            string S9type = "";
            try
            {
                double N9AngelA = ((Math.Acos((Math.Pow(N9B, 2) + Math.Pow(N9C, 2) - Math.Pow(N9A, 2)) / (2 * N9B * N9C))) * 180) / Math.PI;
                double N9AngelB = ((Math.Acos((Math.Pow(N9A, 2) + Math.Pow(N9C, 2) - Math.Pow(N9B, 2)) / (2 * N9A * N9C))) * 180) / Math.PI;
                double N9AngelC = ((Math.Acos((Math.Pow(N9B, 2) + Math.Pow(N9A, 2) - Math.Pow(N9C, 2)) / (2 * N9B * N9A))) * 180) / Math.PI;
                if (N9A == N9B && N9A == N9C) S9type = "равносторонний";
                if ((N9A == N9B && N9A != N9C) || (N9A == N9C && N9A != N9B) || (N9C == N9B && N9C != N9A)) S9type = "равнобедренный";
                if (N9A != N9B && N9A != N9C && N9B != N9C) S9type = "разносторонний";
                if (N9AngelA == 90 || N9AngelB == 90 || N9AngelC == 90) Console.Write($"Это {S9type} прямоугольный треугольник");
                if (N9AngelA > 90 || N9AngelB > 90 || N9AngelC > 90) Console.Write($"Это {S9type} тупоугольный треугольник");
                if (N9AngelA < 90 && N9AngelB < 90 && N9AngelC < 90) Console.WriteLine($"Это {S9type} остроугольный треугольник");
            }
            catch
            {
                Console.WriteLine("Такого треугольника не существует");
            }
            Console.ReadKey();
            Console.Clear();
            //I6.10
            Console.WriteLine("I6.10. Дано целое число n (1 <= n <= 99), определяющее возраст человека (в годах). Для этого числа напечатать фразу «мне n лет», учитывая, что при некоторых значениях n слово «лет» надо заменить на слово «год» или «года».");
            int N10 = (int)Input("возраст", 1, 99);
            Console.WriteLine($"Мне {N10} {Count(N10,"год","года","лет")}");
            Console.ReadKey();
            Console.Clear();
            //I6.11
            Console.WriteLine("I6.11. Для натурального числа k напечатать фразу «мы нашли k грибов в лесу», согласовав окончание слова «гриб» с числом k.");
            int N11 = (int)Input("количество грибов");
            Console.WriteLine($"мы нашли {N11} {Count(N11,"гриб","гриба","грибов")} в лесу");
            Console.ReadKey();
            Console.Clear();
            //I6.12
            Console.WriteLine("I6.12. История из 20 века. Дано натуральное число n (1 <= n <= 9999), определяющее стоимость товара в копейках. Выразить стоимость в рублях и копейках, например, 3 рубля 21 копейка, 15 рублей 5 копеек, 1 рубль ровно и т. п.");
            int N12 = (int)Input("цену товара в копейках", 1, 9999);
            int N12rub = N12 / 100;
            int N12cop = N12 % 100;
            Console.Write($"Цена товара {N12rub} {Count(N12rub,"рубль","рубля","рублей")} ");
            Console.WriteLine(N12cop!=0?$"{N12cop} {Count(N12cop,"копейка","копейки","копеек")}":"ровно");
            Console.ReadKey();
            Console.Clear();
            //I6.13
            Console.WriteLine("I6.13. Дано натуральное число n (1 <= n <= 1188), определяющее возраст человека (в месяцах). Выразить возраст в годах и месяцах, например, 21 год 10 месяцев, 52 года 1 месяц, 46 лет ровно и т. п.");
            int N13 = (int)Input("возраст человека в месяцах", 1, 1188);
            int N13year = N13 / 12;
            int N13month = N13 % 12;
            Console.Write($"Возраст {N13year} {Count(N13year, "год", "года", "лет")} ");
            Console.WriteLine(N13month != 0 ? $"{N13month} {Count(N13month, "месяц", "месяца", "месяцев")}" : "ровно");
            Console.ReadKey();
            Console.Clear();
            //I6.14
            Console.WriteLine("I6.14. Известны год, номер месяца и день рождения человека, а также год, номер месяца и день сегодняшнего дня. Определить возраст человека (число полных лет).");
            int[] N14Mmonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
            int N14yearB = (int) Input("год рождения");
            if (N14yearB % 400 == 0 || (N14yearB % 100 != 0 && N14yearB % 4 == 0)) N14Mmonth[1] = 29;
            int N14monthB = (int)Input("месяц рождения",1,12);
            int N14bayB = (int)Input("день рождения", 1, N14Mmonth[N14monthB-1]);
            int N14yearN = (int)Input("текущий год");
            if (N14yearN % 400 == 0 || (N14yearN % 100 != 0 && N14yearN % 4 == 0)) N14Mmonth[1] = 29; else N14Mmonth[1] = 28;
            int N14monthN = (int)Input("текущий месяц",1,12);
            int N14bayN = (int)Input("текущий день", 1, N14Mmonth[N14monthN - 1]);
            int N14ageY = N14yearN - N14yearB;
            int N14ageM = N14monthN - N14monthB;
            int N14ageD = N14bayN - N14bayB;
            if (N14ageD < 0) N14ageM -= 1;
            if (N14ageM < 0) N14ageY -= 1;
            Console.WriteLine($"Возраст {N14ageY} {Count(N14ageY,"год","года","лет")}");
            Console.ReadKey();
            Console.Clear();
            //I6.15
            Console.WriteLine("I6.15. Известны год, номер месяца и день рождения каждого из двух человек. Определить, кто из них старше.");
            int[] N15Mmonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
            int N15yearB1 = (int)Input("год рождения первого человека");
            if (N15yearB1 % 400 == 0 || (N15yearB1 % 100 != 0 && N15yearB1 % 4 == 0)) N15Mmonth[1] = 29;
            int N15monthB1 = (int)Input("месяц рождения первого человека", 1, 12);
            int N15dayB1 = (int)Input("день рождения первого человека", 1, N15Mmonth[N15monthB1 - 1]);
            int N15yearB2 = (int)Input("год рождения второго человека");
            if (N15yearB2 % 400 == 0 || (N15yearB2 % 100 != 0 && N15yearB2 % 4 == 0)) N15Mmonth[1] = 29; else N15Mmonth[1] = 28;
            int N15monthB2 = (int)Input("месяц рождения второго человека", 1, 12);
            int N15dayB2 = (int)Input("день рождения второго человека", 1, N15Mmonth[N15monthB2 - 1]);
            string S15old = "";
            if (N15yearB1 == N15yearB2)
            {
                if (N15monthB1==N15monthB2)
                {
                    if (N15dayB1==N15dayB2)
                    {
                        S15old = "Родились в один день";
                    }
                    else if (N15dayB1 < N15dayB2) S15old = "Первый старше"; else S15old = "Второй старше";
                }
                else if (N15monthB1 < N15monthB2) S15old = "Первый старше"; else S15old = "Второй старше";
            }
            else if (N15yearB1 < N15yearB2) S15old = "Первый старше"; else S15old = "Второй старше";
            Console.WriteLine(S15old);
            Console.ReadKey();
            Console.Clear();
            //I6.16
            Console.WriteLine("I6.16. Известны год и номер месяца рождения человека, а также год и номер месяца сегодняшнего дня. Определить возраст человека (число полных лет и число полных месяцев). При определении числа полных месяцев дни месяца не учитывать, а использовать разность между номерами месяцев. Например, если месяц рождения — февраль, а текущий (сегодняшний) месяц — май, то число полных месяцев равно трем независимо от дня рождения и сегодняшнего дня.");
            int N16YB = (int)Input("год рождения");
            int N16MB = (int)Input("месяц рождения",1,12);
            int N16YN = (int)Input("текущий год");
            int N16MN = (int)Input("текущий месяц", 1, 12);
            int N16YA = N16YN - N16YB;
            int N16MA = N16MN - N16MB;
            if (N16MA < 0)
            {
                N16YA -= 1;
                N16MA += 12;
            }
            Console.WriteLine(N16MA == 0 ? $"Возраст {N16YA} {Count(N16YA,"год","года","лет")} ровно" : $"Возраст {N16YA} {Count(N16YA, "год", "года", "лет")} и {N16MA} {Count(N16MA,"месяц","месяца","месяцев")}") ;
            Console.ReadKey();
            Console.Clear();
            //I6.17
            Console.WriteLine("I6.17. Поезд прибывает на станцию в a часов b минут и отправляется в c часов d минут. Пассажир пришел на платформу в n часов m минут. Будет ли поезд стоять на платформе? Числа a, b, c, d, n, m — целые, 0 <= a <Б= 23, 0 <= b <= 59, 0 <= c <= 23, 0 <= d <= 59, 0 <= n <= 23, 0 <= m <= 59.");
            int N17HTA = (int)Input("час прибытия поезда",0,23);
            int N17MTA = (int)Input("минуты прибытия поезда", 0, 59);
            int N17HTD = (int)Input("час отправления поезда", 0, 23);
            int N17MTD = (int)Input("минуты отправления поезда", 0, 59);
            int N17HPA = (int)Input("час прибытия пассажира", 0, 23);
            int N17MPA = (int)Input("минуты прибытия пассажира", 0, 59);
            bool B17A = false;
            bool B17D = false;
            if (N17HTA < N17HPA && N17HTD > N17HPA) {B17A = true; B17D = true; }
            if (N17HTA <= N17HPA && N17MTA < N17MPA) B17A = true;
            if (N17HTD >= N17HPA && N17MTD > N17MPA) B17D = true;
            Console.WriteLine(B17A&&B17D ? "Во время прихода пассажира поезд будет на станции": "Во время прихода пассажира станция будет пуста") ;
            Console.ReadKey();
            Console.Clear();
            //I6.18.0
            Console.WriteLine("I6.18.0. Дата некоторого дня определяется двумя натуральными числами: m (порядковый номер месяца) и n (число). По заданным n и m определить:\nа) дату предыдущего дня(принять, что n и m не определяют 1 января);\nб) дату следующего дня(принять, что n и m не определяют 31 декабря).\nПримечание.В обеих задачах принять также, что год не является високосным.");
            int N180month = (int)Input("номер месяца",1,12);
            int[] N18M0 = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
            int N180day = (int)Input("число",1,N18M0[N180month-1]);
            int N180dayP = N180day - 1;
            int N180dayF = N180day + 1;
            int N180monthP = N180month;
            int N180monthF = N180month;
            if (N180dayP < 1) { N180monthP -= 1; N180dayP = N18M0[N180monthP - 1]; }
            if (N180dayF > N18M0[N180monthF - 1]) { N180monthF -= 1; N180dayF = 1; }
            Console.WriteLine($"Предыдущий день {N180dayP}.{N180monthP}\nСледующий день {N180dayF}.{N180monthF}");
            Console.ReadKey();
            Console.Clear();
            //I6.18
            Console.WriteLine("I6.18. Дата некоторого дня определяется тремя натуральными числами: g (год), m (порядковый номер месяца) и n (число). По заданным g, n и m определить:\nа) дату предыдущего дня;\nб) дату следующего дня.\nВ обеих задачах рассмотреть два случая:\n1) заданный год не является високосным;\n2) заданный год может быть високосным(см.задачу I3.25).");
            int N18year = (int)Input("год");
            int [] N18M = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
            if ((N18year % 400 == 0) || (N18year % 100 != 0 && N18year % 4 == 0)) N18M[1] = 29;
            int N18month = (int)Input("месяц",1,12);
            int N18day = (int)Input("число",1,N18M[N18month-1]);
            int N18dayP = N18day - 1;
            int N18dayF = N18day + 1;
            int N18monthP = N18month;
            int N18monthF = N18month;
            int N18yearP = N18year;
            int N18yearF = N18year;
            if (N18dayP < 1)
            {
                N18monthP -= 1;
                if (N18monthP < 1)
                {
                    N18yearP -= 1; N18monthP = 12;
                }
                N18dayP = N18M[N18monthP - 1];
            }
            if (N18dayF > N18M[N18monthF-1])
            {
                N18monthF += 1;
                if (N18monthF > 12)
                {
                    N18yearP += 1; N18monthF = 1;
                }
                N18dayF = N18M[N18monthF - 1];
            }
            Console.WriteLine($"Предыдущий день {N18dayP}.{N18monthP}.{N18yearP}\nСледующий день {N18dayF}.{N18monthF}.{N18yearF}");
            Console.ReadKey();
            Console.Clear();
            //I6.19
            Console.WriteLine("I6.19. Работа светофора для водителей запрограммирована следующим образом:\nв начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение одной минуты — желтый, в течение двух минут — красный, в течение трех минут — опять зеленый и т.д.Дано вещественное число t, означающее время в минутах, прошедшее с начала очередного часа.Определить, сигнал какого цвета горит для водителей в этот момент.");
            int N19 = (int)Input("время в минутах с начала часа",0,59);
            string S19color = "";
            if (N19 % 6 >= 0 && N19 % 6 <= 2) S19color = "зеленый";
            if (N19 % 6 == 3) S19color = "желтый";
            if (N19 % 6 == 4 || N19 % 6 == 5) S19color = "красный";
            Console.WriteLine($"Горит {S19color} сигнал светофора");
            Console.ReadKey();
            Console.Clear();
            //I6.20
            Console.WriteLine("I6.20. Дано целое число k (1 <=k <= 365). Определить, каким будет k-й день года: субботой, воскресеньем или рабочим днем, если 1 января:\nа) понедельник;\nб) d - й день недели(если 1 января — понедельник, то d = 1, если вторник — d = 2 , …, если воскресенье — d = 7).");
            int N20 = (int)Input("день в году", 1, 365);
            int N20J1 = (int)Input("на какой день недели приходится 1 января", 1, 7);
            int N20D = (N20 + (N20J1 - 1)) % 7;
            if (N20D >= 0 || N20D <= 4) Console.WriteLine("Это рабочий день");
            if (N20D == 5) Console.WriteLine("Это суббота");
            if (N20D == 5) Console.WriteLine("Это воскресенье");
            Console.ReadKey();
            Console.Clear();
            //I6.21
            Console.WriteLine("I6.21. Даны целое число k (1 <= k <= 180) и последовательность цифр 10111213…9899, в которой выписаны подряд все двузначные числа. Определить k-ю цифру.\nПримечание.Величины строкового типа не использовать.");
            int N21 = (int)Inpu

Задача I6.15
Такой вариантик, но корявый т.к ввод месяца обязательно должен быть 2-х цифр

string a = "", b = "";


            for (int z = 0; z <= 1; z++)
            {
                for (int i = 0; i <= 2; i++)
                {               
                    if (z == 0)
                    {
                        a = a + Console.ReadLine();
                    }
                    else
                    {
                        b = b + Console.ReadLine();
                    }
                }
            }


            if (int.Parse(a) < int.Parse(b)) { Console.WriteLine("Ctarshe 1-iy"); }
            else { Console.WriteLine("Ctarshe 2-oy"); }

Я когда публикую половина задачи пропадает

I6.15. Известны год, номер месяца и день рождения каждого из двух человек. Определить, кто из них старше.

int year1, year2, month1, month2, date1, date2;
            Console.Write("Enter year of birth 1 person: ");
            year1 = int.Parse(Console.ReadLine());
            Console.Write("Enter month of birth 1 person: ");
            month1 = int.Parse(Console.ReadLine());
            Console.Write("Enter date of birth 1 person: ");
            date1 = int.Parse(Console.ReadLine());

            Console.Write("Enter year of birth 2 person: ");
            year2 = int.Parse(Console.ReadLine());
            Console.Write("Enter month of birth 2 person: ");
            month2 = int.Parse(Console.ReadLine());
            Console.Write("Enter date of birth 2 person: ");
            date2 = int.Parse(Console.ReadLine());

            if (year1  year2)
            {
                Console.WriteLine("Person 2 older");
            }
            else
            {
                if (month1  month2)
                {
                    Console.WriteLine("Person 2 older");
                }
                else
                {
                    if (date1  date2)
                    {
                        Console.WriteLine("Person 2 older");
                    }
                    else
                    {
                        Console.WriteLine("Both person were born on the same day");
                    }
                }
            }
Важно: Вы можете поддержать проект и автора.

Странно, знаки поисчезали в if. Если их добавить все компилируется и работает

Важно: Вы можете поддержать проект и автора.

I6.15. Известны год, номер месяца и день рождения каждого из двух человек. Определить, кто из них старше.

  int year1, year2, month1, month2, date1, date2;
            Console.Write("Enter year of birth 1 person: ");
            year1 = int.Parse(Console.ReadLine());
            Console.Write("Enter month of birth 1 person: ");
            month1 = int.Parse(Console.ReadLine());
            Console.Write("Enter date of birth 1 person: ");
            date1 = int.Parse(Console.ReadLine());

            Console.Write("Enter year of birth 2 person: ");
            year2 = int.Parse(Console.ReadLine());
            Console.Write("Enter month of birth 2 person: ");
            month2 = int.Parse(Console.ReadLine());
            Console.Write("Enter date of birth 2 person: ");
            date2 = int.Parse(Console.ReadLine());

            if(date1date2)
            {
                Console.WriteLine("Person 2 older");
            }
            else
            {
                if(month1month2)
                {
                    Console.WriteLine("Person 2 older");
                }
                else
                {
                    if(date1date2)
                    {
                        Console.WriteLine("Person 2 older");
                    }
                    else
                    {
                        Console.WriteLine("Both person were born on the same day");
                    }
                }
            }
Важно: Вы можете поддержать проект и автора.

I6.21. Даны целое число k (1 <= k <= 180) и последовательность цифр 10111213…9899, в которой выписаны подряд все двузначные числа. Определить k-ю цифру. Примечание. Величины строкового типа не использовать.

int k = Convert.ToInt32(Console.ReadLine());
int r = 10 + (k — 1) / 2;
if (k % 2 == 0)
   r = r % 10;
else
   r = r / 10;
Console.WriteLine(r);
Важно: Вы можете поддержать проект и автора.

I6.19. Работа светофора для водителей запрограммирована следующим образом:
в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение одной минуты — желтый, в течение двух минут — красный, в течение трех минут — опять зеленый и т. д. Дано вещественное число t, означающее время в минутах, прошедшее с начала очередного часа. Определить, сигнал какого цвета горит для водителей в этот момент.

static void Main(string[] args)
{
   uint t;
   while (true)
   {
       Console.Write("Введите значение 't', в диапазоне от 0 до 59: ");
       t = uint.Parse(Console.ReadLine());
       if (t <= 59)
          break;
   }
   if (t % 6 <= 2)
     Console.WriteLine(" ЗЕЛЕНЫЙ! ");
  if (t % 6 == 3)
     Console.WriteLine(" ЖЕЛТЫЙ! ");
  if (t % 6 == 4 || t % 6 == 5)
     Console.WriteLine(" КРАСНЫЙ! ");
}
Важно: Вы можете поддержать проект и автора.

16.10 Возраст (n лет)
Зададим метод:

static string Age(int n)
{
    string let = "лет";
    if (n / 10 % 10 != 1)
       if (n % 10 == 1)
          let = "год";
       else if (n % 10 > 1 && n % 10 < 5)
          let = "года";
    return let;
}

Проверка:

for (int n=1; n<200; n++)         
   Console.WriteLine("мне {0} {1}", n, Age(n));
Важно: Вы можете поддержать проект и автора.
Важно: Вы можете поддержать проект и автора.

Avtor Pidaras, napisal huitu v 24om number!!

I6.10 — 6.14. Написал в лоб код задачи 10, потом посмотрел на несколько следующих — аналогичные. Написал одну функцию склонения…

class Program
    {
        static int Vvod_Chisla_Int(string info)
        {
            int chislo;
            string vvod;
            Console.Write("Введите " + info + ": ");
            vvod = Console.ReadLine();
            while (!Int32.TryParse(vvod, out chislo))
            {
                Console.WriteLine("Недопустимые символы в строке ввода. Ожидается целое число:");
                vvod = Console.ReadLine();
            }
            return chislo;
        }
        static string Sklonenie(int a, string ie, string re, string rm)
        {
            int a1, a2;
            string rez = Convert.ToString(a) + " ";
            a1 = a % 10;
            a2 = a / 10;
            if (a1 == 1 && a2 != 1) rez += ie;
            else if ((a1 == 2 || a1 == 3 || a1 == 4) && a2 != 1) rez += re;
            else rez += rm;
            return rez;
        }
        static void Main()
        {
            // I6.10
            
            int a, b, c, y1, y2, m1, m2, d1, d2, a1, b1, a2, b2, y, m, d;
            string rub, year;
            Console.WriteLine("Задача I6.10:");
            a = Vvod_Chisla_Int("целое число (1 <= a <= 99)");
            Console.WriteLine(Sklonenie(a, "год", "года", "лет") + ".");
            Console.ReadKey();
            // I6.11
            Console.WriteLine("Задача I6.11:");
            a = Vvod_Chisla_Int("число грибов");
            Console.WriteLine(Sklonenie(a, "гриб", "гриба", "грибов") + ".");
            Console.ReadKey();
            // I6.12
            Console.WriteLine("Задача I6.12:");
            c = Vvod_Chisla_Int("сумму в копейках (1 <= n <= 9999)");
            a = c / 100;
            b = c % 100;
            rub = "";
            if (a > 0) rub += Sklonenie(a, "рубль", "рубля", "рублей");
            if (b > 0) rub += " " + Sklonenie(b, "копейка", "копейки", "копеек");
            Console.WriteLine(rub + ".");
            Console.ReadKey();
            // I6.13
            Console.WriteLine("Задача I6.13:");
            c = Vvod_Chisla_Int("число месяцев (1 <= n <= 1188)");
            a = c / 12;
            b = c % 12;
            year = "";
            if (a > 0) year += Sklonenie(a, "год", "года", "лет");
            if (b > 0) year = year + " " + Sklonenie(b, "месяц", "месяца", "месяцев");
            Console.WriteLine(year + ".");
            Console.ReadKey();
            // I6.14
            Console.WriteLine("Задача I6.14:");
            y1 = Vvod_Chisla_Int("год рождения");
            m1 = Vvod_Chisla_Int("месяц рождения");
            d1 = Vvod_Chisla_Int("день рождения");
            y2 = Vvod_Chisla_Int("текущий год");
            m2 = Vvod_Chisla_Int("текущий месяц");
            d2 = Vvod_Chisla_Int("текущий день");
            if (m2 < m1 || (m2 == m1 && d2 < d1))
                Console.WriteLine("Человеку " + (y2 - y1 - 1) + " лет.");
            else Console.WriteLine("Человеку " + (y2 - y1) + " лет.");
            Console.ReadKey();
        }
    }
Важно: Вы можете поддержать проект и автора.

I6.9. Как заметил Павел, эта задача поглощает 7 и 8. Их отдельно выкладывать нет смысла. Выложу свой вариант 9-й. Основное отличие — по условию у нас стороны представлены вещественными числами, поэтому оперирую не int-переменными, а double. И тут появляется возможность определять «прямоугольность» треугольника с задаваемой точностью, а не только треугольников заданых Пифагоровыми числами. Может и не стоило огород городить, но все же:

        static double Vvod_Chisla(string info)
        {
            double chislo;
            string vvod;
            Console.Write("Введите " + info + ": ");
            vvod = Console.ReadLine();
            while (!Double.TryParse(vvod, out chislo))
            {
                Console.WriteLine("Недопустимые символы в строке ввода. Ожидается число:");
                vvod = Console.ReadLine();
            }
            return chislo;
        }
        static void Main(string[] args)
        {
            double M, L1, L2, delta;
            // I6.9
            Console.WriteLine("Задача I6.9:");
            double[] abc = new double[3];
            abc[0] = Vvod_Chisla("длину стороны A");
            abc[1] = Vvod_Chisla("длину стороны B");
            abc[2] = Vvod_Chisla("длину стороны C");
            Array.Sort(abc);
            if (abc[0]+abc[1] > abc[2])
            {
                Console.WriteLine("Можно построить треугольник с такими сторонами.");
                // расставим стороны по возрастанию:
                M = abc[2];
                L1 = abc[0];
                L2 = abc[1];
                // Прямоугольным будет признан только треугольник со сторонами - Пифагоровыми числами.
                if (M * M == L1 * L1 + L2 * L2)
                    Console.WriteLine("Этот треугольник прямоугольный");
                else if (M * M < L1 * L1 + L2 * L2)
                    Console.WriteLine("Этот треугольник остроугольный");
                else Console.WriteLine("Этот треугольник тупоугольный");
                // Эта проверка признает треугольник прямоугольным с заданной погрешностью в градусах.
                delta = Vvod_Chisla("допустимую погрешность угла (градусы в десятичном формате)");
                if (Math.Abs((L1 * L1 + L2 * L2 - M * M) / (2 * L1 * L1)) <= Math.Cos((90 - delta) * Math.PI / 180))
                    Console.WriteLine("Этот треугольник прямоугольный с погрешностью {0} градуса", delta);
                else if ((L1 * L1 + L2 * L2 - M * M) / (2 * L1 * L1) < Math.Cos((90 - delta) * Math.PI / 180))
                    Console.WriteLine("Этот треугольник тупоугольный с погрешностью {0} градуса", delta);
                else Console.WriteLine("Этот треугольник остроугольный с погрешностью {0} градуса", delta);
                if (L1 == M)
                    Console.WriteLine("Этот треугольник равносторонний");
                else if (L1 == L2 || L2 == M)
                    Console.WriteLine("Этот треугольник равнобедренный");
                else Console.WriteLine("Этот треугольник разносторонний");
            }
            else Console.WriteLine("Треугольник с такими сторонами не существует.");
            Console.ReadKey();
        }
Важно: Вы можете поддержать проект и автора.

По п1. Сначала тоже думал про массив, но затем, так как, работаем по основам, решил отсортировать 3 числа вручную.
По п3. Если просто поставить малое число, то при вводе сторон, нужно будет печатать непонятно сколько знаков после запятой. А в таком варианте нагляднее. Например, вводим погрешность в 0,1 градуса, тогда при вводе таких значений сторон: 1;
1; 1,414 (корень из 2 до третьего знака ) треугольник будет признан прямоугольным. Если зададим погрешность 0,01 градуса, то уже нужно будет ввести 1,4142.
А вот где я пропустил, так это то, что делал лишние проверки на существование треугольника. Раз уж отсортировал стороны, то достаточно и одной… Спасибо, что подправили.

I6.1 — 3, 6.
Задачи I6.4 и I6.5 были в блоке L2. Их решение тут пропускаю.

static int Vvod_Chisla_Int(string info)
{
    int chislo;
    string vvod;
    Console.Write("Введите " + info + ": ");
    vvod = Console.ReadLine();
    while (!Int32.TryParse(vvod, out chislo))
    {
       Console.WriteLine("Недопустимые символы в строке ввода.Ожидается целое число:");
       vvod = Console.ReadLine();
    }
    return chislo;
}
        static void Main(string[] args)
        {
            int a2, a1, b, r1, r2, b1, b2, a3, r3, a, c, d;
            // I6.1
            Console.WriteLine("Задача I6.1:");
            a2 = Vvod_Chisla_Int("цифру a2");
            a1 = Vvod_Chisla_Int("цифру a1");
            b = Vvod_Chisla_Int("цифру b");
            if (b > a1)
            {
                r1 = a1 + 10 - b;
                r2 = a2 - 1;
            }
            else
            {
                r1 = a1 - b;
                r2 = a2;
            }
            Console.WriteLine("Разность равна " +r2 + r1);
            Console.ReadKey();
            // I6.2
            Console.WriteLine("Задача I6.2:");
            a2 = Vvod_Chisla_Int("цифру a2");
            a1 = Vvod_Chisla_Int("цифру a1");
            b2 = Vvod_Chisla_Int("цифру b2");
            b1 = Vvod_Chisla_Int("цифру b1");
            if (b1 > a1)
            {
                r1 = a1 + 10 - b1;
                r2 = a2 - b2 - 1;
            }
            else
            {
                r1 = a1 - b1;
                r2 = a2 - b2;
            }
            Console.WriteLine("Разность равна " + r2 + r1);
            Console.ReadKey();
            // I6.3
            Console.WriteLine("Задача I6.3:");
            // Решение для разности
            a3 = Vvod_Chisla_Int("цифру a3");
            a2 = Vvod_Chisla_Int("цифру a2");
            a1 = Vvod_Chisla_Int("цифру a1");
            b2 = Vvod_Chisla_Int("цифру b2");
            b1 = Vvod_Chisla_Int("цифру b1");
            if (b1 > a1)
            {
                r1 = a1 + 10 - b1;
                b2 += 1;
            }
            else
            {
                r1 = a1 - b1;
            }
            if (b2 > a2)
            {
                r2 = a2 + 10 - b2;
                r3 = a3 - 1;
            }
            else
            {
                r2 = a2 - b2;
                r3 = a3;
            }
            Console.WriteLine("Разность равна " + r3 + r2 + r1);
            Console.ReadKey();
            // Задачи I6.4 и I6.5 были в блоке L2.
            // I6.6
            Console.WriteLine("Задача I6.6:");
            a = Vvod_Chisla_Int("цифру a(от 1 до 8)");
            b = Vvod_Chisla_Int("цифру b(от 1 до 8)");
            c = Vvod_Chisla_Int("цифру c(от 1 до 8)");
            d = Vvod_Chisla_Int("цифру d(от 1 до 8)");
            if ((a + b) % 2 == (c + d) % 2)
                Console.WriteLine("Поля({0};{1}) и ({2};{3}) одного цвета", a, b, c, d);
            else 
                Console.WriteLine("Поля({0};{1}) и ({2};{3}) разных цветов", a, b, c, d);
            Console.ReadKey();
        }
Важно: Вы можете поддержать проект и автора.

Задача 9. Поглощает по сути 7ю и 8ю. Плюс я там пару ошибок допустил.

Console.WriteLine("Проверка возможности существования треугольника и его описание");
 Console.WriteLine("Введите длину a:");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите длину b:");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите длину c:");
int c = Convert.ToInt32(Console.ReadLine());
if (a + b > c & a + c > b & b + c > a)
{
   Console.WriteLine("Создание треугольника возможно");
   if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
      Console.WriteLine("Треугольник — прямоугольный");
   else
   {
       if (a * a + b * b < c * c || a * a + c * c < b * b || b * b + c * c < a * a)
           Console.WriteLine("Треугольник — тупоугольный");
       else 
          Console.WriteLine("Треугольник — остроугольный");
   }
   if (a == b & a == c & b == c)
      Console.WriteLine("Треугольник — равносторонний");
   else
      if (a == b || a == c || b == c)
         Console.WriteLine("Треугольник — равнобедренный");
      else 
         Console.WriteLine("Треугольник — разносторонний");
}
else 
   Console.WriteLine("Создание треугольника невозможно");
Console.ReadKey();
Важно: Вы можете поддержать проект и автора.

Задача 8.

Console.WriteLine("Проверка возможности существования треугольника и прямого угла в нем");
Console.WriteLine("Введите длину a:");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите длину b:");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите длину c:");
int c = Convert.ToInt32(Console.ReadLine());

if (a + b > c & a + c > b & b + c > a)
{
   Console.WriteLine("Создание треугольника возможно");
   if (a * b == c * c || a * c == b * b || b * c == a * a)
      Console.WriteLine("Треугольник — прямоугольный");
   else Console.WriteLine("Треугольник — непрямоугольный");
}
else 
   Console.WriteLine("Создание треугольника невозможно");
Console.ReadKey();
Важно: Вы можете поддержать проект и автора.

Задача I6.7.

Console.WriteLine("Проверка возможности существования треугольника");
Console.WriteLine("Введите длину a:");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите длину b:");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите длину c:");
int c = Convert.ToInt32(Console.ReadLine());
if (a + b > c)
{ 
   if (a + c > b)
   {
      if (b + c > a)
          Console.WriteLine("Создание треугольника возможно");
      else Console.WriteLine("Создание треугольника невозможно");
   }
   else Console.WriteLine("Создание треугольника невозможно");
}
else Console.WriteLine("Создание треугольника невозможно");
Console.ReadKey();
Важно: Вы можете поддержать проект и автора.
34
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x