Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.6 kB
2
Indexable
Never
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        // Pobranie równania od użytkownika
        Console.WriteLine("Podaj równanie kwadratowe w postaci ax^2 + bx + c = 0: ");
        string rownanie = Console.ReadLine();

        // Usunięcie białych znaków
        rownanie = rownanie.Replace(" ", "");

        // Wyodrębnienie współczynników a, b, c za pomocą wyrażeń regularnych
        double a = 0, b = 0, c = 0;

        // Dopasowanie współczynnika a
        Match matchA = Regex.Match(rownanie, @"([+-]?\d*)x\^2");
        if (matchA.Success)
        {
            string aStr = matchA.Groups[1].Value;
            if (string.IsNullOrEmpty(aStr) || aStr == "+")
                a = 1;
            else if (aStr == "-")
                a = -1;
            else
                a = Convert.ToDouble(aStr);
        }

        // Dopasowanie współczynnika b
        Match matchB = Regex.Match(rownanie, @"([+-]?\d*)x(?!\^2)");
        if (matchB.Success)
        {
            string bStr = matchB.Groups[1].Value;
            if (string.IsNullOrEmpty(bStr) || bStr == "+")
                b = 1;
            else if (bStr == "-")
                b = -1;
            else
                b = Convert.ToDouble(bStr);
        }

        // Dopasowanie współczynnika c (liczba na końcu równania)
        Match matchC = Regex.Match(rownanie, @"([+-]?\d+)(?=$|=0)");
        if (matchC.Success)
        {
            c = Convert.ToDouble(matchC.Groups[1].Value);
        }

        // Wyświetlenie wyodrębnionych współczynników
        Console.WriteLine($"\nWspółczynniki wyodrębnione z równania:");
        Console.WriteLine($"a = {a}, b = {b}, c = {c}");

        // Obliczenie delty
        double delta = b * b - 4 * a * c;

        Console.WriteLine($"\nDelta wynosi: {delta}");

        // Sprawdzenie liczby rozwiązań na podstawie wartości delty
        if (delta > 0)
        {
            // Dwa rozwiązania
            double x1 = (-b + Math.Sqrt(delta)) / (2 * a);
            double x2 = (-b - Math.Sqrt(delta)) / (2 * a);
            Console.WriteLine($"Równanie ma dwa rozwiązania: x1 = {x1}, x2 = {x2}");
        }
        else if (delta == 0)
        {
            // Jedno rozwiązanie
            double x0 = -b / (2 * a);
            Console.WriteLine($"Równanie ma jedno rozwiązanie: x = {x0}");
        }
        else
        {
            // Brak rozwiązań rzeczywistych
            Console.WriteLine("Równanie nie ma rozwiązań w zbiorze liczb rzeczywistych.");
        }
    }
}
Leave a Comment