Untitled
unknown
plain_text
a year ago
2.6 kB
8
Indexable
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.");
}
}
}
Editor is loading...
Leave a Comment