Witam,
muszę wczytać liczbę zespoloną z konsoli, która może występować w 3 postaciach : a+ bi / a / bi , gdzie a,b to są jakieś liczby. Problem polega na tym, że jak wczytuje pełną postać liczby zespolonej to wyrzucany jest wyjątek, że analizowana grupa ma zbyt dużo nawiasów zamykających. A grupa z liczba urojona jest chyba cały czas pomijana, bo jakąkolwiek liczbę wpiszę to zawsze jest tylko część rzeczywista... Czy ktoś mógłby mi pomóc?
private double[] privParse(string pobrano)
{
try
{
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(@"(?<re>\d+(,\d+){0,1})\(+/-)(?<im>\d+(,\d+){0,1})i");
System.Text.RegularExpressions.Match macz = pattern.Matches(pobrano)[0];
double[] liczby = new double[2];
liczby[0] = Double.Parse(macz.Groups["re"].Value.ToString());
liczby[1] = Double.Parse(macz.Groups["im"].Value.ToString());
return liczby;
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
try
{
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(@"(?<im>\d+(,\d+){0,1})i");
System.Text.RegularExpressions.Match macz = pattern.Matches(pobrano)[0];
double[] liczby = new double[2];
liczby[0] = 0.0;
liczby[1] = Double.Parse(macz.Groups["im"].Value.ToString());
return liczby;
}
catch (ArgumentException ex)
{
Console.WriteLine(ex.Message);
try
{
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(@"(?<re>\d+(,\d+){0,1})");
System.Text.RegularExpressions.Match macz = pattern.Matches(pobrano)[0];
double[] liczby = new double[2];
liczby[0] = Double.Parse(macz.Groups["re"].Value.ToString());
liczby[1] = 0;
return liczby;//cacz, real, ERROR
}
catch (IndexOutOfRangeException)
{
throw new Exception("Zla liczba zespolona");
}
catch (ArgumentOutOfRangeException)
{
throw new Exception("Zla liczba zespolona");
}
}
}
}