• Как можно исправить код для поиска квадратных уравнений?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    using static ConsoleApp.ConsoleInput;
    
    namespace ConsoleApp;
    
    public class Program
    {
        static void Main(string[] args)
        {
            new Program().Run(args);
        }
    
        private void Run(string[] args)
        {
            Console.WriteLine("Введите данные уравнения"); // Введите данные уравнения
            double a = RequestUserInputAsDouble("Введите число a:"); // Введите а
            double b = RequestUserInputAsDouble("Введите число b:"); // Введите b
            double c = RequestUserInputAsDouble("Введите число c:"); // Введите c
            Console.WriteLine("Ваше уравнение: " + a + "x^2 + " + b + "x + " + c + " = 0");
            double discriminant = CalculateDiscriminant(a, b, c);
    
            if (discriminant < 0) // Условие, если Дискриминант < 0
            {
                Console.WriteLine("Нет решений, т.к D < 0 "); // Вывод ответа
            }
            else if (discriminant > 0) // // Условие, если Дискриминант > 0
            {
                double x1 = (-b + Math.Sqrt(discriminant)) / (2 * a); // Обьявление переменной х1 и решение
                double x2 = (-b - Math.Sqrt(discriminant)) / (2 * a); // Обьявление переменной х2 и решение
                Console.WriteLine("Ваш ответ: x1 = " + x1 + " x2 = " + x2); // Вывод ответа
            }
            else // (D == 0)  Условие, если Дискриминант = 0
            {
                double x1 = (-b + Math.Sqrt(0)) / (2 * a); // Обьявление переменной х1 и решение
                double x2 = x1; // Обьявление переменной х2 и решение
                Console.WriteLine("Ваш ответ: x2 = x1 = " + x1); // Вывод ответа
            }
        }
    
        private double CalculateDiscriminant(double a, double b, double c)
        {
            // Вычисление переменной Дискриминант
            return b * b - (4 * a * c);
        }
    }


    Класс, который позволяет запросить ввод пользователя и если пользователь ввёл неверные данные, которые нельзя конвертировать в целевой тип данных, то ввод снова запрашивается у пользователя.
    using System.Globalization;
    
    namespace ConsoleApp;
    
    internal static class ConsoleInput
    {
        private static readonly CultureInfo CommaCulture =
            new(CultureInfo.InvariantCulture.LCID)
            {
                NumberFormat = { NumberDecimalSeparator = "," }
            };
        private static readonly CultureInfo PointCulture =
            new(CultureInfo.InvariantCulture.LCID)
            {
                NumberFormat = { NumberDecimalSeparator = "." }
            };
    
    
        /// <summary>
        /// Запросить ввод у пользователя. Если ввод нельзя конвертировать в целевой тип,
        /// то ввод будет запрошен повторно. Это обобщённый метод, позволящий реализовать 
        /// несколько других методов, требующих ввод в определённом формате.
        /// </summary>
        /// <typeparam name="TResult">
        /// Тип результата, который ожидается от метода конвертации.
        /// </typeparam>
        /// <param name="tryConvert">Ссылка на метод конвертации.</param>
        /// <param name="message">
        /// Сообщение, которое будет показано пользователю каждый новый запрос ввода значения.
        /// </param>
        /// <returns></returns>
        private static TResult RequestUserInput<TResult>(
            Func<string, (bool, TResult)> tryConvert, string? message = null)
            where TResult : struct
        {
            TResult result;
            while (true)
            {
                if (!string.IsNullOrWhiteSpace(message))
                {
                    Console.WriteLine(message);
                }
    
                string? line = Console.ReadLine();
                if (!string.IsNullOrWhiteSpace(line))
                {
                    var (success, convertedValue) = tryConvert(line);
                    if (success)
                    {
                        result = convertedValue;
                        break;
                    }
                }
            }
    
            return result;
        }
    
        /// <summary>
        /// Запросить у пользователя ввод числа типа double.
        /// Допускается в качестве разделителя "," и ".".
        /// </summary>
        /// <param name="message">
        /// Сообщение, которое будет показано пользователю каждый новый запрос ввода значения.
        /// </param>
        /// <returns></returns>
        public static double RequestUserInputAsDouble(string? message = null)
        {
            return RequestUserInput(userInput =>
            {
                CultureInfo culture = CultureInfo.InvariantCulture;
                if (userInput.Contains(",")) culture = CommaCulture;
                if (userInput.Contains(".")) culture = PointCulture;
                return double.TryParse(
                    userInput, NumberStyles.Float, culture, out var result)
                    ? (true, result)
                    : (false, 0d);
            }, message);
        }
    
        // И другие типы в том же духе
        public static int RequestUserInputAsInt32(string? message = null)
        {
            return RequestUserInput(userInput =>
                    int.TryParse(userInput, out var result)
                        ? (true, result)
                        : (false, 0),
                message);
        }
    }
    Ответ написан
    Комментировать
  • Какой уровень знаний в C# нужен для разработки игры на Unity?

    vabka
    @vabka
    Токсичный шарпист
    C# нужен именно для такого проекта, карьеру разработчика особо начинать не хочу.

    Ну тебе нужно уверенно знать C# на уровне хотябы Junior+.
    Ты должен:
    1. Знать синтаксис.
    2. Понимать ООП (наследование, полиморфизм. Как работают public/private-модификаторы. Как работает static)
    3. Понимать паттерны проектирования. Какие бывают и какие проблемы решают.
    4. Уметь читать сообщения об ошибках и находить решение им.
    5. Уметь использовать debugger для отладки программы и поиска источника ошибки.

    Примерно с таким багажом ты сможешь начать писать свою игру и не задавать вопросы уровня:
    https://qna.habr.com/q/1175066
    https://qna.habr.com/q/1172476
    https://qna.habr.com/q/1170852
    https://qna.habr.com/q/1170848
    https://qna.habr.com/q/1168196
    https://qna.habr.com/q/1167392
    Ответ написан
    Комментировать
  • Как расположить элемент по центру в CSS?

    sanyokdb
    @sanyokdb
    --save-dev
    вот ещё один пример
    https://codepen.io/sanyokdb/pen/GRJbzgE
    Ответ написан
    Комментировать
  • Как расположить элемент по центру в CSS?

    ZerdoX-x
    @ZerdoX-x
    Frontend developer influenced by web, a11y, crypto
    Если вы учитесь, то советую изучить данную статью: https://css-tricks.com/centering-css-complete-guide/

    Спрашивая на подобных сервисах и копируя код, продвигаться будете медленно :)
    Ответ написан
    Комментировать
  • Как расположить элемент по центру в CSS?

    aliencash
    @aliencash
    Партизан
    Ответ написан
    Комментировать
  • Как адаптивно наложить картинку на картинку средствами CSS?

    Попробуй картинке с футболкой это дать:
    display: block;
    position: relative;
    width: 90%; /* это не важно */

    А поверх дай картинке вот такую бороду:
    display: block;
    width: 30%; /* это наверное уже у тебя в js будет вычисляться */
    position: absolute;
    top: 22%; left: 40%; /* тоже через js будешь вычислять */
    Ответ написан
    1 комментарий