S2. Вычисления по известным формулам

Ваше решение записывайте как комментарий к данной странице (пример оформления).
Решены задачи: 1-20,24,27 Не решены: 21-23,25,26,28. Для многих задач есть варианты решений с обсуждениями, смотрите.

Задачи

S2.1. Составить программу:
а) вычисления значения функции y=7x2+3x+6 при любом значении x;
б) вычисления значения функции x=12a2+7a+12 при любом значении а.

S2.2. Дана сторона квадрата. Найти его периметр. — решение.

S2.3. Дан радиус окружности. Найти ее диаметр. — решение.

S2.4. Считая, что Земля — идеальная сфера с радиусом R=6350 км, определить расстояние до линии горизонта от точки с заданной высотой H над Землей.

S2.5. Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности. — решение

S2.6. Дан радиус окружности. Найти длину окружности и площадь круга.

 S2.7. Даны два целых числа. Найти: а) их среднее арифметическое; б) их среднее геометрическое.

S2.8. Известны объем и масса тела. Определить плотность материала этого тела.

S2.9. Известны количество жителей в государстве и площадь его территории. Определить плотность населения в этом государстве.

S2.10. Составить программу решения линейного уравнения ax+b=0 (a ≠ 0).

S2.11. Даны катеты прямоугольного треугольника. Найти его гипотенузу.

S2.12. Найти площадь кольца по заданным внешнему и внутреннему радиусам.

S2.13.  Даны катеты прямоугольного треугольника. Найти его периметр.

S2.13А. Даны два числа. Найти среднее арифметическое и среднее геометрическое их  модулей.

S2.14. Даны основания и высота равнобедренной трапеции. Найти ее периметр.

S2.14А. Даны стороны прямоугольника. Найти его периметр и длину диагонали.

S2.15. Даны два числа. Найти их сумму, разность, произведение, а также частное от деления первого числа на второе.

S2.16. Даны длины сторон прямоугольного параллелепипеда. Найти его объем и площадь боковой поверхности.

S2.17. Известны координаты на плоскости двух точек. Составить программу вычисления расстояния между ними.

S2.18. Даны основания и высота равнобедренной трапеции. Найти периметр трапеции.

S2.19. Даны основания равнобедренной трапеции и угол при большем основании. Найти площадь трапеции.

S2.20. Треугольник задан координатами своих вершин. Найти периметр и площадь треугольника.

S2.21. Выпуклый четырехугольник задан координатами своих вершин. Найти площадь этого четырехугольника как сумму площадей треугольников.

S2.22. Известна стоимость 1 кг конфет, печенья и яблок. Найти стоимость всей покупки, если купили x кг конфет, у кг печенья и z кг яблок.

S2.23. Известна стоимость монитора, системного блока, клавиатуры и мыши. Сколько будут стоить 3 компьютера из этих элементов? N компьютеров?

S2.24. Возраст Тани — X лет, а возраст Мити — Y лет. Найти их средний возраст, а также определить, на сколько отличается возраст каждого ребенка от среднего значения.  —  решение

S2.25. Два автомобиля едут навстречу друг другу с постоянными скоростями V1 и  V2 км/час. Определить, через какое время автомобили встретятся, если расстояние между ними было S км.

S2.26. Два автомобиля едут друг за другом с постоянными скоростями V1 и  V2 км/час (V1>V2). Определить, какое расстояние будет между ними через 30 минут после того, как первый автомобиль опередил второй на S км.

S2.27. Известно значение температуры по шкале Цельсия. Найти соответствующее  значение температуры по шкале: а) Фаренгейта; б) Кельвина. Для пересчета по шкале Фаренгейта необходимо исходное значение температуры умножить на 1,8 и к результату прибавить 32, а по шкале Кельвина абсолютное значение нуля соответствует 273,15 градуса по шкале Цельсия.

S2.28. У американского писателя-фантаста Рэя Бредбери есть роман «450 градусов  по Фаренгейту». Какой температуре по шкале Цельсия соответствует указанное в названии значение? (См. предыдущую задачу).

Пример оформления:

Задача S2.3

static void Main(string[] args)
{
   Console.Write("Введите радиус окружности : ");
   double r = Convert.ToDouble(Console.ReadLine());
   double d = 2 * r;
   Console.WriteLine("Диаметр окружности = {0}", d);
}

91 комментарий к “S2. Вычисления по известным формулам”

  1. Дмитрий

    Задание S2.2

    static void Main(string[] args)
    {
       Console.WriteLine("Введите длину стороны квадрата:  ");
       float s = Convert.ToSingle(Console.ReadLine());
       if (s > 0)
       {
          float p = s * 4;
          Console.Write("\nПериметр квадрата  = {0} .\n", p);
       }
       else 
           Console.Write("Введено не верное значение.");
       Console.ReadKey();
    }
    
    1. Вячеслав Рычков

      Дмитрий, по сути, Вы правильно решили задачу.
      Вопрос: Что будет, если Вы сделаете ошибку при вводе числа, например, введете 5f ?

      1. Дмитрий

        при вводе «5f» выдает ошибку. При вводе любой цифры с символом выдает ошибку.

        1. Вячеслав Рычков

          Конечно. Ошибка Runtime в операторе:
          float s = Convert.ToSingle(Console.ReadLine());
          Но если вместо (или после) него напишите s=5f; — ошибки не будет, ответ будет всегда 20, т.к. переменная типа float.

          1. Гулжамал Жолболотова

            S2.2.Дана сторона квадрата. Найти его периметр

            int a = 5;
            int perimetr;
            perimetr = 4 * a;
            Console.WriteLine(perimetr);
            Console.ReadKey();

            В.Рычков: Да. Но это только для конкретного а=5!
            Таким образом тоже можно решить эту задачу, если вводить a.

  2. Дмитрий

    Задание S2.5

    {
       Console.WriteLine("Введите высоту ребра куба: ");
       double h = Convert.ToDouble(Console.ReadLine());
       Console.Write("\n");
       Console.Write("Высота ребра куба = {0}\n", h);
       double s = 6 * (h * h);
       double v = h * h * h;
       Console.Write("Площадь куба = {0} , объем куба = {1}", s, v);
       Console.ReadLine();
    }
    
    1. Вячеслав Рычков

      Если не проверять на принадлежность введенной строки на число, то все четко. Я бы чуть поправил только в консольном приложении так:

      {
         Console.Write("Введите ребро куба: ");
         double h = Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("Ребро куба = {0}", h);
         double s = 6 * h * h;
         double v = h * h * h;
         Console.Write("Площадь поверхности куба = {0} , объем куба = {1}", s, v);
         Console.ReadKey();
      }
      
      1. Дмитрий

        Что значит «проверка на принадлежность введенной строки на число» ?

        1. Вячеслав Рычков

          Если мне нужно задать число в заданном диапазоне, я использую свойство .
          Другой вариант — конструкция try-catch .
          Или c использованием метода TryParse:

          string[] values = {"-168934617882109132", "1,68934617882109132", "123AE6", null};
          double number;
          foreach (var value in values)
          {
             if (Double.TryParse(value, out number))
                Console.WriteLine("'{0}' --> {1}", value, number);
             else
                Console.WriteLine("недопустимая строка '{0}'.", value);
          }
          
  3. Дмитрий

    S2.24. Возраст Тани — X лет, а возраст Мити — Y лет. Найти их средний возраст, а также определить, на сколько отличается возраст каждого ребенка от среднего значения. 

    using System;
    namespace ConsoleApp1
    {
       class Program
       {
          static void Main(string[] args)
          {
             int sRT = 0; // Разница возраста Тани к среднему
                int sRM = 0; // Разница возраста Мити к среднему
                Console.WriteLine("Сколько лет Тане ?: ");
                int oldT = Convert.ToInt32(Console.ReadLine());
                Console.Write("\n");
                Console.Write("Сколько лет Митьке ?: ");
                int oldM = Convert.ToInt32(Console.ReadLine());
                Console.Write("\n");
                if ((oldT > 0) & (oldM > 0))
                {
                    int sO = ((oldT + oldM) / 2);
                    if (sO > oldT)
                    {
                       sRT = sO - oldT;
                       Console.Write("\n");
                       if (sRT <= 4)
                       {
                          if (sRT == 1) Console.Write("Возраст Тани меньше среднего возраста на {0} год .\n", sRT);
                          else Console.Write("Возраст Тани меньше среднего возраста на {0} года.\n", sRT);
                       }
                       else Console.Write("Возраст Тани меньше среднего возраста на {0} лет.\n", sRT);
                    }
                    else
                    {
                       sRT = oldT - sO;
                       Console.Write("\n");
                       if (sRT < oldM)
                       {
                          sRM = sO - oldM;
                          Console.Write("\n");
                          if (sRM <= 4)
                          {
                             if (sRT == 1) Console.Write("Возраст Мити меньше среднего возраста на {0} год .\n", sRM);
                             else Console.Write("Возраст Мити меньше среднего возраста на {0} года.\n", sRM);
                          }
                          else Console.Write("Возраст Мити меньше среднего возраста на {0} лет.\n", sRM);
                       }
                       else
                       {
                          sRM = oldM - sO;
                          Console.Write("\n");
                          if (sRM <= 4)
                          {
                             if (sRT == 1) Console.Write("Возраст Мити больше среднего возраста на {0} год .\n", sRM);
                             else Console.Write("Возраст Мити больше среднего возраста на {0} года.\n", sRM);
                          }
                          else Console.Write("Возраст Мити больше среднего возраста на {0} лет.\n", sRM);
                       }
                    }
                    Console.ReadLine();
                }     
            }
        }
    }
    
    1. Дмитрий

      При публикации комментария пропали знаки «» .
      В комментариях совсем не отображаются знаки «больше» , » меньше».

      1. Вячеслав Рычков

        Просто копируйте ваш текст из VS Community и вставьте его в комментарий. Если заметили, то у меня все программные коды — на сером фоне (отформатированный абзац). Их можно копировать и сразу вставлять в свою программу. Проверьте на своем примере (выше).

        1. а не подскажите как решить эту задачу: Задан массив действительных чисел размерности 10х10. Найти суммы
          элементов каждой строки, произведения элементов каждого столбца, и максимальный
          элемент главной диагонали (подсказка: все элементы, для которых номер строки
          совпадает с номером столбца). ?

    2. Вячеслав Рычков

      Программисты, можно сделать код Дмитрия задачи S2.24 про Таню и Митю эффективнее?

      1. S2.24. Возраст Тани — X лет, а возраст Мити — Y лет. Найти их средний возраст, а также определить, на сколько отличается возраст каждого ребенка от среднего значения.

        static void Main()
        {
           Console.WriteLine("Сколько лет Тане ? ");
           int tanya_age = int.Parse(Console.ReadLine());
           Console.WriteLine("Сколько лет Мите ? ");
           int dima_age = int.Parse(Console.ReadLine());
           var mean_age = (tanya_age + dima_age) / 2;
           Console.WriteLine("Средний возраст детей = " + mean_age + " лет");
           if (tanya_age < mean_age)
           {
               var firstValue = mean_age - tanya_age;
               Console.WriteLine("Таня моложе чем средний возраст на " + firstValue + " лет");
           }
           else
           {
               var t_old = tanya_age - mean_age;
               Console.WriteLine("Таня старше чем средний возраст на " + t_old + "лет");
           }
           if (dima_age < mean_age)
           {
              var secondValue = mean_age - dima_age;
              Console.WriteLine("Дима моложе чем средний возраст на " + secondValue + " лет");
           }
           else
           {
              var d_old = dima_age - mean_age;
              Console.WriteLine("Дима старше чем средний возраст на " + d_old + " лет");
           }
        }
        1. Вячеслав Рычков

          Сергей! Структура Вашей программы понятна. Вопрос о типах данных: если разница в 1 год, то чему равно среднее и кто-то старше/младше на 0 лет?

  4. Задание S2.12 Найти площадь кольца по заданным внешнему и внутреннему радиусам.

    class Program
        {
            static void Main(string[] args)
            {
                double r1 = 10;// радиус первого круга
                double r2 = 5;// радиус второго радиуса
                double s = sum(r1); // вызываем метод      
                Console.WriteLine($" Площадь первого круга {s} ");
                double s1 = sum(r2);
                Console.WriteLine($" Площадь второго круга {s1} ");
                double res = s - s1;//Вычитаем площади кругов
                Console.WriteLine($" Площадь кольца =  {res} ");// площадь кольца
                Console.Read();
            }
            static  double sum(double ss)//метод расчета площади
            {
              double s1= Math.Pow(ss, 2) * Math.PI;//возводим в квадрат и умножаем на Пи
                s1 = Math.Round(s1, 1);// отрезаем сотые числа до одного знака после запятой
                return ss=s1;// возвращаем значение 
            }
        }
    1. Вячеслав Рычков

      Эдуард! Ваше решение неплохое, использовали метод для вычисления площади и методы класса Math.
      Правда, оно только справедливо для радиусов 10 и 5. И я еще обычно для возведения в квадрат не использую возведение в степень (умножение выполняется быстрее — без логарифма и экспоненты).
      В Вашем стиле более короткий вариант может выглядеть так:

      class Program
      {
      static void Main()
      {
      Console.Write("Радиус внешнего кольца: ");
      double r2 = Convert.ToDouble(Console.ReadLine());
      Console.Write("Радиус внутреннего кольца: ");
      double r1 = Convert.ToDouble(Console.ReadLine());
      Console.WriteLine("Площадь кольца = " + SquR(r2, r1));
      Console.Read();
      }
      static double SquR(double R, double r)
      {
      return Math.Round(Math.PI * (R * R — r * r), 1);
      }
      }
  5. S.2.2.

    static void Main(string [] args)
    {
       Console.Write("Введите 1 сторону: ");
       var side1 = Convert.ToInt32(Console.ReadLine());
       Console.Write("Введите 2 сторону: ");
       var side2 = Convert.ToInt32(Console.ReadLine());
       if (side1 > 0 && side2 >0)
       {
          int perimeter = (side1 + side2) * 2;
          Console.WriteLine("Периметр равен: {0}", perimeter);
       }
       else
       {
            Console.WriteLine("Введено неверное значение");
       }
       Console.ReadKey();
    }

    Как сделать так, чтобы при вводе строкового значения, консоль выводила сообщение об ошибке и просила ввести данные повторно?

    1. Вячеслав Рычков

      Илья! Замечу, что задача S2.2 про периметр квадрата, если Вы ее решали.
      Отвечая на Ваш вопрос, предлагаю разобрать статью. Повторный ввод — через цикл do-while.

  6. S2.6. Дан радиус окружности. Найти длину окружности и площадь круга.

    int r;
    double P = Math.PI;
    Console.Write("Введите радиус окружности ");
    r = int.Parse(Console.ReadLine());
    double length = 2* P * r; 
    double S = P * r * r;
    Console.WriteLine("Площадь окружности = "+ S);
    Console.WriteLine("Длина окружности = "+ length);
    Console.ReadLine();
  7. S2.7. Даны два целых числа. Найти: а) их среднее арифметическое; б) их среднее геометрическое.

    Console.Write("Введите первое число ");
    int a = int.Parse(Console.ReadLine());
    Console.Write("Введите второе число ");
    int b = int.Parse(Console.ReadLine());
    int arithmetic = (a + b) / 2;
    double geometry = Math.Sqrt(a * b);
    Console.WriteLine("Среднее арифметическое двух чисел = " + arithmetic);
    Console.WriteLine("Среднее геометрическое двух чисел = " + geometry);
    Console.ReadLine();
  8. S2.8. Известны объем и масса тела. Определить плотность материала этого тела.

    Console.Write("Введите объем тела: ");
    int v = int.Parse(Console.ReadLine());
    Console.WriteLine("Введите массу тела: ");
    int m = int.Parse(Console.ReadLine());
    double p = m / v;
    Console.WriteLine("Плотность материала = "+ p);
    Console.ReadLine();

    всегда готов к критике кода)

    1. Вячеслав Рычков

      А вот и критика, что дает Ваша программа:
      Введите объем тела 10
      Введите массу тела 9
      Плотность материала = 0

      Должно быть 0,9 !
      Причина: m/v вычисляется как результат деления целых чисел, см. матчасть.

  9. S2.11. Даны катеты прямоугольного треугольника. Найти его гипотенузу.

    Console.Write("Введите первую сторону треугольника: ");
    int a = int.Parse(Console.ReadLine());
    Console.Write("Введите вторую сторону треугольника: ");
    int b = int.Parse(Console.ReadLine());
    double c = Math.Sqrt(a * a + b * b);
    Console.WriteLine("гипотенуза треугольника = " + c);
    Console.ReadLine();
  10. S2.1. Составить программу:
    а) вычисления значения функции y=7x^2+3x+6 при любом значении x;
    б) вычисления значения функции x=12a^2+7a+12 при любом значении а.

    Console.WriteLine("Please, type your name ");
                string user = Console.ReadLine();
                Console.WriteLine($"Hello {user}. Today you have to computation some formula. Smile and press OK to start!");
                Console.ReadLine();
                Console.Write("Figure out value of function y=7x^2+3x+6. Please input value of x: ");
                double valuex = Convert.ToDouble(Console.ReadLine());
                double valuey = 7 * valuex * valuex + 3 * valuex + 6;
                Console.WriteLine($"Easy {user}! Value of y = {valuey} . Press OK to pass on ");
                Console.ReadLine();
                Console.Write($"Now {user} try to solve x=12a^2+7a+12. Press some value of a: ");
                double valuea = Convert.ToDouble(Console.ReadLine());
                double xvalue = 12 * valuea * valuea + 7 * valuea + 12;
                Console.WriteLine($"Super {user}! Value of x= {xvalue}. Press OK to continue.");
                Console.ReadLine();
    1. Вячеслав Рычков

      VAL! Диалог, да еще на английском, приветствуется.
      Для возведения числа в квадрат проще всего написать:
      value = value * value;

  11. Создаем метод FormulasComputations() для вычислений по известным формулам. Задачи S2.1-S2.6

            static void FormulasComputations()
            {

    S2.1. Составить программу:
    а) вычисления значения функции y=7×^2+3x+6 при любом значении x;
    б) вычисления значения функции x=12a^2+7a+12 при любом значении а.

                Console.WriteLine("Please, type your name ");
                string user = Console.ReadLine();
                Console.WriteLine($"Hello { user}. Today you have to computation some formulas.Smile and press OK to start!");
                Console.ReadLine();
                Console.WriteLine("Figure out value of function y = 7x^2 + 3x + 6.Please input value of x — ");
                double valuex = Convert.ToDouble(Console.ReadLine());
                double valuey = 7 * valuex * valuex + 3 * valuex + 6;
                Console.WriteLine($"Easy { user} ! Value of y = { valuey } . Press OK to pass on ");
                Console.ReadLine();
                Console.WriteLine($"Now { user} try to solve x = 12a^2 + 7a + 12.Press some value of a — ");
                double valuea = Convert.ToDouble(Console.ReadLine());
                double xvalue = 12 * valuea * valuea + 7 * valuea + 12;
                Console.WriteLine($"Super { user} ! Value of x = { xvalue }. Press OK to continue.");
                Console.ReadLine();

    S2.2. Дана сторона квадрата. Найти его периметр.

           Console.WriteLine("For figure out perimeter of square, input value side lenth of square: ");
                double length = Convert.ToDouble(Console.ReadLine());
                if (length > 0)
                {
                    double perimeter = 4 * length;
                    Console.WriteLine($"Perimeter of square is: { perimeter}");
                    Console.WriteLine("Press OK to continue");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Wrong input.Try again.");
                    Console.ReadLine();
                }

    S2.3. Дан радиус окружности. Найти ее диаметр.

           Console.WriteLine("For figure out diameter of circle, input value of radius: ");
                double radius = Convert.ToDouble(Console.ReadLine());
                if (radius > 0)
                {
                    double diameter = 2 * radius;
                    Console.WriteLine($"Diameter of circle is: { diameter}");
                    Console.WriteLine("Press OK to continue");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Wrong input.Try again.");
                    Console.ReadLine();
                }

    S2.4. Считая, что Земля — идеальная сфера с радиусом R=6350 км, определить расстояние до линии горизонта от точки C заданной высотой H над Землей.

     Console.WriteLine("You have to computation distance from point of observer to Horizon.\nDistance depend from hight of observer");
                Console.WriteLine("Radius of Eart is constant — 6350 km.So, you shoud input value of hight of observer in km: ");
                double observerHight = Convert.ToDouble(Console.ReadLine());
                if (observerHight > 0)
                {
                    const double rEarth = 6350;
                    double distanceHorizon = Math.Pow((Math.Pow((rEarth + observerHight), 2) - Math.Pow(rEarth, 2)), 0.5);
                    Console.WriteLine($"Distance to Horizon from hight { observerHight}  km is : { distanceHorizon}  km.");
                    double meterObserver = observerHight * 1000;
                    double meterHorizon = distanceHorizon * 1000;
                    Console.WriteLine($"Distance to Horizon in meters: observer hight on { meterObserver} meters and \nHorizon visiable on { meterHorizon} meters. ");
                    Console.WriteLine("Please, press OK to continue.");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Wrong input.Try again.");
                    Console.ReadLine();
                }

    S2.5. Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.

                Console.WriteLine($"Now { user} you will figure out square of cube and valume of cube \nPlease, inpute value of cube edge — ");
                double cubeEdge = Convert.ToDouble(Console.ReadLine());
                if (cubeEdge > 0)
                {
                    double squareCube = 6 * cubeEdge;
                    double volumeCube = Math.Pow(cubeEdge, 3);
                    Console.WriteLine($"Square of cube is: { squareCube} and volume of cube is: { volumeCube} ");
                    Console.WriteLine("Please, press OK to continue.");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Wrong input.Try again.");
                    Console.ReadLine();
                }

    S2.6. Дан радиус окружности. Найти длину окружности и площадь круга.

           Console.WriteLine($"{ user} you computation circumference and square of circle.\nPlease, inpute value of radius -");
                double radiusCircle = Convert.ToDouble(Console.ReadLine());
                if (radiusCircle > 0)
                {
                    double circum = 2 * Math.PI * radiusCircle;
                    double squareCircle = Math.PI * Math.Pow(radiusCircle, 2);
                    Console.WriteLine($"Circumference = { circum} and Square of circle = { squareCircle } while radius is { radiusCircle } ");
                    Console.WriteLine("Please, press OK to continue.");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Wrong input.Try again.");
                    Console.ReadLine();
                }
            } // конец метода FormulasComputations()

    Вызов метода

    static void Main()
    {
       FormulasComputations(); 
    }
    
  12. S2.7. Даны два целых числа. Найти: а) их среднее арифметическое; б) их среднее геометрическое.

    Console.WriteLine("Please, type your name ");
    string user = Console.ReadLine();
    Console.WriteLine($"OK {user}. You should find arithmetical mean and geometric mean of two numbers.\nPlease, input first number - and press OK");
    double firstNum = Convert.ToDouble(Console.ReadLine());
    if (firstNum > 0)
    { 
       Console.WriteLine("Input second number - and press OK");
    }
    else
    {
       Console.WriteLine("Wrong input. Try again.");
       Console.ReadLine();
    }
    double secondNum = Convert.ToDouble(Console.ReadLine());
    if (secondNum > 0)
    {
       double arithMean = (firstNum + secondNum) / 2;
       double geometMean = Math.Sqrt(firstNum * secondNum);
       Console.WriteLine($"{user} you work hard and finaly figure out arithmetical mean of two numbers {firstNum} and {secondNum}\nis : {arithMean} . \nand you find geometric mean is: {geometMean}. Good job {user}. \nPlease, press OK.");
       Console.ReadLine();
    }
    else
    {
       Console.WriteLine("Wrong input. Try again.");
       Console.ReadLine();
    }
  13. S2.8. Известны объем и масса тела. Определить плотность материала этого тела.

    Console.WriteLine($" Now you try computation Density of material by volume and weight. \nPlease input volume in cubic meters (m^3) - Press OK to continue");
    double volume = Convert.ToDouble(Console.ReadLine());
    if (volume>0)
       Console.WriteLine("Input weight of material in kg - \nPress Ok to continue");
    else
    {
       Console.WriteLine("Wrong input. Try again.");
       Console.ReadLine();
    }
    double weight = Convert.ToDouble(Console.ReadLine());
    if (weight>0)
    {
       double density = weight / volume;
       Console.WriteLine($"Good job ! Density of materials is: {density} kg/m^3");
       Console.ReadLine();
    }
    else
    {
        Console.WriteLine("Wrong input. Try again.");
        Console.ReadLine();
    }
    1. Вячеслав Рычков

      VAL, а Вы просматривали решения задач, выполненные раньше Вас? Можно не повторять, если решение аналогично, хорошо!

      1. Просматривал конечно. Просто другого решения не имею, а практика для пальчиков необходима. В следующий раз не буду отправлять.

  14. S2.9. Известны количество жителей в государстве и площадь его территории. Определить плотность населения в этом государстве.

    Console.WriteLine($"Population Density = Population devided square of country. \nFor information: The smallest country in the World is Vatican have only 0.44 sq.km.\nIt have population only 825 citizens. ");
    double territoty = 0.44;
    double citizen = 825;
    double popDensity = citizen / territoty;
    Console.WriteLine($"So, Population density in Vatican is: { popDensity} people by square kilometer(km^2). Press OK.");
    Console.ReadLine();
  15. S2.10. Составить программу решения линейного уравнения ax+b=0 (a ≠ 0).

    Console.Write($" Are You still here? There input coefficient for unknown a: ");
    double coeffUnknown = Convert.ToDouble(Console.ReadLine());
    if (coeffUnknown != 0)
       Console.Write("Input free member b:");
    else
    {
      Console.WriteLine("Wrong input. Try again.");
      Console.ReadLine();
    }
    double freeMember = Convert.ToDouble(Console.ReadLine());
    double x = -freeMember / coeffUnknown;
    Console.WriteLine($"So, in the equation ax+b=0 (a!=0) x= {x} \nPress OK");
    Console.ReadLine();
  16. S2.11. Даны катеты прямоугольного треугольника. Найти его гипотенузу.

    Console.WriteLine($"Back to school, User! You have a right triangle. Cathet A=8, cathet B=6 and you have to find hypotenuse C. Press OK.");
    Console.ReadLine();
    double cathetA = 8;
    double cathetB = 6;
    double hypotenuse = Math.Sqrt(Math.Pow(cathetA, 2) + Math.Pow(cathetB, 2));
    Console.WriteLine($"So, hypotenuse C with cathets A=8 and B=6 is: {hypotenuse} . Press OK. ");
    Console.ReadLine();
    1. Вячеслав Рычков

      Принято.
      Но можно и в одну формулу:
      h = Math.Sqrt(a * a + a * a);
      так как умножение выполняется быстрее, чем через Math.Pow(a,2).

      1. По скорости выполнения операций не знал. Спасибо! Хотя мотивом решения через метод Math.Pow, скорее было желание научиться его пользовать. А где можно почитать о скорости выполнения операторов? или это зависит от их приоритетности исполнения?

        1. Вячеслав Рычков

          Две базовые функции — логарифм и экспонента — вычисляются через ряд Тейлора, аналогично sin(x). А вычисление z=xy выполняется, думаю, так:
          z=exp(y*ln(x)), где exp() и ln() — методы класса Math.

          1. Простите, но так ничего и не понял где можно почитать о сравнении скорости выполнения операторов и не связана ли она (скорость выполнения) с приоритетностью выполнения в среде CLR?

  17. S2.12. Найти площадь кольца по заданным внешнему и внутреннему радиусам.
    S2.13. Даны катеты прямоугольного треугольника. Найти его периметр.
    S2.14. Даны основания и высота равнобедренной трапеции. Найти ее периметр.
    S2.15. Даны два числа. Найти их сумму, разность, произведение, а также частное от деления первого числа на второе.

    using System;
    namespace S12_15
    {
        class Program
        {
            public static void Main()
            {
                string user = "Уважаемый школьник, ";
                //S2.12. Найти площадь кольца по заданным внешнему и внутреннему радиусам.
                Console.WriteLine($"{ user} you know computation formula of the square of ring: SqR = Pi * (R1 ^ 2 - R2 ^ 2). \nGet arbitrary value R1 = 7.7 and R2 = 5.25.Press OK.");
                Console.ReadLine();
                double outR = 7.7;
                double intoR = 5.25;
                double sqRing = Math.PI * (Math.Pow(outR, 2) - Math.Pow(intoR, 2));
                Console.WriteLine($"Square of ring = { sqRing}. Press OK.");
                Console.ReadLine();
    
                //S2.13. Даны катеты прямоугольного треугольника. Найти его периметр.
                Console.WriteLine("Let to assign value cathet1 = 12, carhet2 = 5.\nFirst find value of hypotenuse: Hypotenuse = SqRT(Cathet1 ^ 2 + Cathet2 ^ 2).Press OK.");
                Console.ReadLine();
                double cat1 = 12;
                double cat2 = 5;
                double hyp = Math.Sqrt(Math.Pow(cat1, 2) + Math.Pow(cat2, 2));
                double perimeter = hyp + cat1 + cat2;
                Console.WriteLine($"Perimeter of triangle: Hypotenuse + Cathet1 + Cathet2 = { perimeter}. Press OK. ");
                Console.ReadLine();
    
                //S2.14. Даны основания и высота равнобедренной трапеции. Найти ее периметр.
                Console.WriteLine($"Back to school { user}. You have two trapezoid bases of the isosceles trapezoid and his hight.\nBy hight you can find the value of one side of the trapezoid.");
                Console.WriteLine($"Formula of hight is: h = sqRT(c ^ 2 - ((a - b) ^ 2 / 4).Transform it to find side c: c = sqrt(h ^ 2 + ((a - b) ^ 2 / 4).");
                Console.WriteLine("So, perimeter of isoseles trapezoid will is: P = а + б + 2 * с.Press OK to pass on.");
                Console.ReadLine();
                double base1 = 33;
                double base2 = 11;
                double hightSide = 13;
                double sideC = Math.Sqrt(Math.Pow(hightSide, 2) + (Math.Pow(base1 - base2, 2)) / 4);
                double trapezPer = base1 + base2 + sideC + sideC;
                Console.WriteLine($"Perimeter isosceles trapezoid is { trapezPer }. Good job! Press OK.");
                Console.ReadLine();
    
                //S2.15. Даны два числа. Найти среднее арифметическое и среднее геометрическое их модулей.
                Console.WriteLine("You have two numbers: num1 = -4 and num2 = 16.Find modulus their arithmetical mean and geometric mean.");
                Console.ReadLine();
                double num1 = -4;
                double num2 = 16;
                double meanArithm = (Math.Abs(num1) + Math.Abs(num2)) / 2;
                double meanGeom = Math.Sqrt((Math.Abs(num1)) * (Math.Abs(num2)));
                Console.WriteLine($"So, arithmetical mean = { meanArithm } and geometrical mean = { meanGeom}. Thank you for cooperation! Press OK.");
                Console.ReadLine();
    
            }
        }
    }
  18. S2.15. Даны два числа. Найти их сумму, разность, произведение, а также частное от деления первого числа на второе.

    double numeric1 = 777.99;
    double numeric2 = 555.05;
    Console.WriteLine((numeric1) + (numeric2));
    Console.WriteLine((numeric1) - (numeric2));
    Console.WriteLine((numeric1) * (numeric2));
    Console.WriteLine((numeric1) / (numeric2));
    Console.ReadLine();
  19. S2.16. Даны длины сторон прямоугольного параллелепипеда. Найти его объем и площадь боковой поверхности.

    int a=12, b=57, c=173;
    Console.WriteLine(a * b * c);
    Console.WriteLine(2*(a*b+b*c+a*c));
    Console.ReadLine();
  20. S2.27. Известно значение температуры по шкале Цельсия. Найти соответствующее значение температуры по шкале: а) Фаренгейта; б) Кельвина. Для пересчета по шкале Фаренгейта необходимо исходное значение температуры умножить на 1,8 и к результату прибавить 32, а по шкале Кельвина абсолютное значение нуля соответствует 273,15 градуса по шкале Цельсия.

    using System;
    public static class TemperatureConverter
    {
       public static double CelsiusToFahrenheit(string temperatureCelsius)
       {
          double celsius = Double.Parse(temperatureCelsius);
          double fahrenheit = (celsius * 9 / 5) + 32;
          return fahrenheit;
       }
       public static double FahrenheitToCelsius(string temperatureFahrenheit)
       {
          double fahrenheit = Double.Parse(temperatureFahrenheit);
          double celsius = (fahrenheit - 32) * 5 / 9;
          return celsius;
       }
       public static double CelsiusToKelvin(string temperatureCelsius)
       {
          double celsius = Double.Parse(temperatureCelsius);
          double kelvin = celsius + 273.15;
          return kelvin;
       }
       public static double KelvinToCelsius(string temperatureKelvin)
       {
          double kelvin = Double.Parse(temperatureKelvin);
          double celsius = kelvin - 273.15;
          return celsius;
       }
       public static void Main()
       {
          Console.WriteLine("Please select the convertor direction");
          Console.WriteLine("1.From Celsius to Fahrenheit.");
          Console.WriteLine("2.From Fahrenheit to Celsius.");
          Console.WriteLine("3.From Celsius to Kelvin.");
          Console.WriteLine("4.From Kelvin to Celsius");
          Console.Write(" : ");
          string selection = Console.ReadLine();
          double F, C, K;
          switch (selection)
          {
             case "1":
                Console.Write("Please enter the Celsius temperature: ");
                F = TemperatureConverter.CelsiusToFahrenheit(Console.ReadLine());
                Console.WriteLine("Temperature in Fahrenheit: {0}", F);
                break;
             case "2":
                Console.Write("Please enter the Fahrenheit temperature: ");
                C = TemperatureConverter.FahrenheitToCelsius(Console.ReadLine());
                Console.WriteLine("Temperature in Celsius: {0}", C);
                break;
             case "3":
                Console.Write("Please enter the Celsius temperature: ");
                K = TemperatureConverter.CelsiusToKelvin(Console.ReadLine());
                Console.WriteLine("Temperature in Kelvin: {0}", K);
                break;
             case "4":
                Console.Write("Please enter the Kelvin temperature: ");
                C = TemperatureConverter.KelvinToCelsius(Console.ReadLine());
                Console.WriteLine("Temperature in Fahrenheit: {0}", C);
                break;
             default:
                Console.WriteLine("Please select a convertor.");
                break;
          }
          Console.WriteLine("Press any key to exit.");
          Console.ReadKey();
       }
    }
    1. Вячеслав Рычков

      VAL, а отрицательные температуры по шкале Кельвина бывают?
      А в целом все правильно, зачет.

      1. Температура —273.15 С равна 0 К. Если смогут что-либо охладить ниже -273.15 градусов, вероятно появятся и отрицательные Кельвины. Но скорее передвинут точку абсолютного нуля по шкале.

        1. Вячеслав Рычков

          Юмор понятен про абсолютный нуль, на всякий случай не проверил T < 0 K.

  21. S2.17. Известны координаты на плоскости двух точек. Составить программу вычисления расстояния между ними.

    double x1 = 35.1, x2 = -2.07;
    double y1 = -3.99, y2 = 43.1;
    Console.WriteLine(Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2)));
    Console.ReadLine();
    1. Вячеслав Рычков

      Val, проверьте у себя скобки. Тест: x1=0, y1=0, x2=3, y2=4. Ожидаемый ответ — 5.

  22. S2.14А. Даны стороны прямоугольника. Найти его периметр и длину диагонали.

    int a, b;
    Console.Write("Введите длину прямоугольника: ");
    a = int.Parse(Console.ReadLine());
    Console.Write("Введите ширину прямоугольника: ");
    b = int.Parse(Console.ReadLine());
    if (a <= b)
    {
       int P = (a + b) * 2;
       double diagonal = Math.Sqrt(a * a + b * b);
       Console.WriteLine("Периметр прямоугольника = " + P);
       Console.WriteLine("Диагональ прямоугольника = " + diagonal);
    }
    else
       Console.WriteLine("Ширина не может быть больше длины");
    Console.ReadLine();
  23. S2.15. Даны два числа. Найти их сумму, разность, произведение, а также частное от деления первого числа на второе.

    Console.WriteLine("Введите первое число");
    int firstValue = int.Parse(Console.ReadLine());
    Console.WriteLine("Введите второе число");
    int secondValue = int.Parse(Console.ReadLine());
    if (firstValue > 0 && secondValue > 0)
    {
       int summ = firstValue + secondValue;
       Console.WriteLine("Сумма двух чисел = "+ summ);
       int difference = firstValue - secondValue;
       Console.WriteLine("Разность двух чисел = "+ difference);
       int composition = firstValue * secondValue;
       Console.WriteLine("Произведение двух чисел = "+ composition);
       double priv = firstValue / secondValue;
       Console.WriteLine("Частное двух чисел = "+ priv);
    }
    else
    {
       Console.WriteLine("Число не может равнятся нулю");
    }
    1. Вячеслав Рычков

      Сергей! Почему числа не могут быть вещественными (double) и/или отрицательными. Единственное, что стоит проверять, то равно ли нулю второе число.

  24. S2.16. Даны длины сторон прямоугольного параллелепипеда. Найти его объем и площадь боковой поверхности.

    Console.WriteLine("Введите длину параллелепипеда");
    int a = int.Parse(Console.ReadLine());
    Console.WriteLine("Введите ширину параллелепипеда");
    int b = int.Parse(Console.ReadLine());
    Console.WriteLine("Введите высоту параллелепипеда");
    int c = int.Parse(Console.ReadLine());
    double S = 2 * a * c + 2 * b * c;
    Console.WriteLine("Площадь боковой поверхности параллелепипеда = "+ S);
    double V = a * b * c;
    Console.WriteLine("Объем параллелепипеда = "+ V);
  25. S2.18. Даны основания и высота равнобедренной трапеции. Найти периметр трапеции.

    double bottomBase = 20;
    double topBase = 14;
    double hight = 4;
    ouble det = Math.Abs(bottomBase - topBase) / 2;
    double side = Math.Sqrt(hight * hight + det * det);
    double per = 2 * side + bottomBase + topBase;
    Console.WriteLine("Периметр трапеции = " + per);
    Console.ReadLine();
  26. S2.19. Даны основания равнобедренной трапеции и угол при большем основании. Найти площадь трапеции.

    double angle = 37;
    double square = side * Math.Sin(angle) * (bottomBase - side * Math.Cos(angle));
    Console.WriteLine(square);
    Console.ReadLine();
    1. Вячеслав Рычков

      Замысловато. Не учли, что для Sin(x) и Cos(x) угол нужно задавать в радианах. Проверьте такую формулу:
      S = (b*b — a*a) tg(x) / 4, где x = angle * Math.PI / 180.

  27. S2.20. Треугольник задан координатами своих вершин. Найти периметр и площадь треугольника.

    double x1T = 0, x2T = 6, x3T = 3;
    double y1T = 0, y2T = 0, y3T = 4;
    double side1T = Math.Sqrt(Math.Pow((x1T - x2T), 2) + Math.Pow((y1T - y2T), 2));
    double side2T = Math.Sqrt(Math.Pow((x2T - x3T), 2) + Math.Pow((y2T - y3T), 2));
    double side3T = Math.Sqrt(Math.Pow((x3T - x1T), 2) + Math.Pow((y3T - y1T), 2));
    double p = (side1T + side2T + side3T) / 2;
    double squareT = Math.Sqrt(p * (p - side1T) * (p - side2T) * (p - side3T));
    Console.WriteLine("Площадь=" + squareT);
    Console.ReadLine();
  28. Задача S 2.5.

    static void Main(string [] args)
            {
                Console.Write("Введите длину ребра куба: ");
                int x = Convert.ToInt32(Console.ReadLine());
                int stepen = 3;
                int S2 = 2;
    
                Math.Pow(x, stepen);
                Math.Pow(x, S2);
                var area = Math.Pow(x, S2) * 6;
    
                Console.WriteLine("Объем куба равен: {0}", Math.Pow(x, stepen));
                Console.WriteLine("Площадь боковой поверхности куба равна: {0}", area);
                Console.ReadKey();
            }
    1. Вячеслав Рычков

      Илья, пишите проще и универсальней.

      Console.Write("Введите длину ребра куба: ");
      double x = Convert.ToDouble(Console.ReadLine());
      var area = 6 * x *x;
      Console.WriteLine("Объем куба равен: {0}", x * x* x);
      Console.WriteLine("Площадь боковой поверхности куба равна: {0}", area);
      Console.ReadKey();
  29. S2.6. Дан радиус окружности. Найти длину окружности и площадь круга.

    static void Main(string [] args)
    {
       Console.Write("Задайте радиус окружности: ");
       double radius = Convert.ToDouble(Console.ReadLine());
       double lengthCircle = 2 * Math.PI * radius;
       // Math.Pow(radius, 2);  // ЛИШНИЙ оператор!!! 
       double AreaCircle = Math.PI * Math.Pow(radius, 2);
       Console.Write("Длинна окружности равна: {0} \nПлощадь круга равна: {1}", Math.Round(lengthCircle, 2) , Math.Round(AreaCircle, 2));
       Console.ReadKey();
    }
  30. S2.4.

    static void Main(string [] args)
    {
       /// d = sqrt(2Rh)
       Console.Write("Введите расстояние от земли до глаз наблюдателя: ");
       double h = Convert.ToDouble(Console.ReadLine());
       double R = 63.5 * Math.Pow(10, 5);///6350 = 63,5 * 10^5
       double d = Math.Sqrt(2 * R * h);
       Console.WriteLine("Расстояние до линии горизонта от точки с заданной высотой равна: {0}км", Math.Round(d, 0));
       Console.ReadKey();
    }
  31.  S2.7. Даны два целых числа. Найти: а) их среднее арифметическое; б) их среднее геометрическое.

    static void Main(string [] args)
    {      
       Console.Write("Введите первое число: ");
       double num1 = Convert.ToDouble(Console.ReadLine());
       Console.Write("Введите второе число: ");
       double num2 = Convert.ToDouble(Console.ReadLine());
       double AverageMean = (num1 + num2) / 2;
       double GeometricMean = num1 * num2;
       double RootExtraction = Math.Sqrt(GeometricMean);
       Console.WriteLine("Среднее арифметическое равно: {0} \nСреднее геометрическое равно: {1}", AverageMean, RootExtraction);
       Console.ReadKey();
    }
  32. Гулжамал Жолболотова

    S2.3.Дан радиус окружности. Найти ее диаметр.

    double d;
    Console.WriteLine("Введите радиус окружности: ");
    double r = Convert.ToDouble(Console.ReadLine());
    d = 2 * r;
    Console.WriteLine("Диаметр окружности: " + d);
    Console.ReadKey();
  33. S2.10. Составить программу решения линейного уравнения ax+b=0 (a ≠ 0).

    Console.WriteLine("Решите линейное уравнение ax + b = 0 ");
    Console.Write("Введите значение а = ");
    double nambrA = Convert.ToDouble(Console.ReadLine());
    while (nambrA == 0)
    {
        Console.WriteLine("Ноль нельзя, введите другое число ");
        Console.Write("Введите значение а = ");
        nambrA = Convert.ToDouble(Console.ReadLine());
    }
    Console.Write("Введите число b = ");
    double nambrB = Convert.ToDouble(Console.ReadLine());
    double nambrX = -nambrB / nambrA;
    Console.WriteLine($"Значение х равно:{ nambrX}");
  34. S2.11. Даны катеты прямоугольного треугольника. Найти его гипотенузу.

    Console.WriteLine("Ведите катеты прямоугольного треугольника");
    Console.Write("Катет №1 : ");
    double triangleLegOne = Convert.ToDouble(Console.ReadLine());
    if (Math.Sign(triangleLegOne) == -1)
    {
       while (Math.Sign(triangleLegOne) == -1)
       {
          Console.Write("Катет не может быть отрицательный.\nВведите другое число: ");
          triangleLegOne = Convert.ToDouble(Console.ReadLine());
       }
    }
    Console.Write("Катет №2 : ");
    double triangleLegTwo = Convert.ToDouble(Console.ReadLine());
    if (Math.Sign(triangleLegTwo) == -1)
    {
       while (Math.Sign(triangleLegTwo) == -1)
       {
           Console.Write("Катет не может быть отрицательный.\nВведите другое число: ");
           triangleLegTwo = Convert.ToDouble(Console.ReadLine());
       }
    }
    double hypotenuse = Math.Sqrt(( Math.Pow(triangleLegOne, 2) + Math.Pow(triangleLegTwo, 2)));
    Console.WriteLine("Гипотенуза равна : {0:0.000}",hypotenuse);
  35. S2.12. Найти площадь кольца по заданным внешнему и внутреннему радиусам.

    Console.WriteLine("Найти площадь кольца.");
    Console.Write("Введите внешний радиус :");
    double radBig = Convert.ToDouble(Console.ReadLine());
    if (Math.Sign(radBig) == -1)
    {
         while (Math.Sign(radBig) == -1)
         {
            Console.Write("Радиус не может быть отрицательный.\nВведите другое число: ");
            radBig = Convert.ToDouble(Console.ReadLine());
         }
    }
    Console.Write("Введите внутренний радиус :");
    double radSmall = Convert.ToDouble(Console.ReadLine());
    if (Math.Sign(radSmall) == -1|| radBig < radSmall)
    {
       while (Math.Sign(radSmall) == -1|| radBig < radSmall)
       {
          Console.Write("Радиус не может быть отрицательный или больше внешнего.\nВведите другое число: ");
          radSmall = Convert.ToDouble(Console.ReadLine());
       }
    }
    double radRing =Math.PI* ( Math.Pow(radBig, 2)-Math.Pow(radSmall, 2));
    Console.WriteLine("Площадь кольца = {0:0.000}",radRing);
  36. Задача S2.14 Даны основания и высота равнобедренной трапеции. Найти ее периметр.

    static void Main(string[] args)
    {
       Console.WriteLine("Введите высоту и основания равнобедренной трапеции: ");
       double a, b, h, p, s, x, c, m;
       while (!Double.TryParse(Console.ReadLine(), out h))
       {
          Console.WriteLine("Введено неверное значение.");
       }
       while (!Double.TryParse(Console.ReadLine(), out a))
       {
          Console.WriteLine("Введено неверное значение.");
       }
       while (!Double.TryParse(Console.ReadLine(), out b))
       {
          Console.WriteLine("Введено неверное значение.");
       }
    
       if (a==b)
       {
          Console.WriteLine("Это параллелограмм, жулик.");
          return;
       }
       x = a - b; // Разность оснований.
       x = Math.Abs(x); // Длина в геометрии является абсолютной величиной.
       c = Math.Sqrt((x * x) + (h * h)); // Боковая сторона. 
       c = Math.Round(c, 2); // не, лучше здесь округлю.
       p = (2 * c) + a + b; // периметр
       s = ((a + b) / 2) * h;// площадь
       s = Math.Round(s, 2);// не опять, а снова
       m = a - Math.Sqrt((c * c) - (h * h));
       m = Math.Round(m, 2);// всё-таки опять
       Console.WriteLine($"Основания: а = {a} и b = {b}\nБоковая сторона: c = {c}\nПериметр: P = {p}\nПлощадь: S = {s}\nСредняя линия: m = {m}");
       Console.ReadLine();
    }
    1. Вячеслав Рычков

      Руслан!
      Перевыполнение задания приветствуется! Но: 1) ошибка в формуле для вычисления боковой стороны трапеции; 2) среднюю линию надежнее найти как полусумму оснований. Вот тест для Вас: 4, 2, 8. Должен быть ответ: 2,8,5,20,20,5.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх