Я пишу программу на C#, которая требует получения от пользователя полиномиальных выражений. Есть ли способ сделать это, позволяя пользователю писать выражение типа «2x^2 + 3x»?
Я пытаюсь взять два выражения от пользователя, а затем позже в программе эти два добавляются друг к другу.
Изменить: проблема в том, что я не могу использовать x^2 как экспоненциальное число, оператор ^, похоже, не работает для моего программа
Я пробовал использовать библиотеку регулярных выражений, а также словари, но они все равно не работают так, как я ожидал.
Вот код:
static Dictionary ParsePolynomial(string polynomial)
{
Dictionary terms = new Dictionary();
var matches = Regex.Matches(polynomial, @"([-+]?\d*)x\^(\d+)|([-+]?\d+)");
foreach (Match match in matches)
{
if (match.Groups[1].Success)
{
int coeff = match.Groups[1].Value == "-" ? -1 : int.Parse(match.Groups[1].Value);
int power = int.Parse(match.Groups[2].Value);
if (terms.ContainsKey(power))
terms[power] += coeff;
else
terms[power] = coeff;
}
else
{
int constant = int.Parse(match.Groups[3].Value);
if (terms.ContainsKey(0))
terms[0] += constant;
else
terms[0] = constant;
}
}
return terms;
}
static string PolynomialToString(Dictionary terms)
{
List result = new List();
foreach (var term in terms)
{
if (term.Key == 0)
result.Add($"{term.Value}");
else
result.Add($"{term.Value}x^{term.Key}");
}
return string.Join(" + ", result);
}
static Dictionary AddPolynomials(Dictionary poly1, Dictionary poly2)
{
Dictionary result = new Dictionary(poly1);
foreach (var term in poly2)
{
if (result.ContainsKey(term.Key))
result[term.Key] += term.Value;
else
result[term.Key] = term.Value;
}
return result;
}
static Dictionary SubtractPolynomials(Dictionary poly1, Dictionary poly2)
{
Dictionary result = new Dictionary(poly1);
foreach (var term in poly2)
{
if (result.ContainsKey(term.Key))
result[term.Key] -= term.Value;
else
result[term.Key] = -term.Value;
}
return result;
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... l-number-i
Есть ли способ принять пользовательские данные как 2x^2 и использовать их как экспоненциальное число в моей программе? ⇐ C#
Место общения программистов C#
1730452141
Anonymous
Я пишу программу на C#, которая требует получения от пользователя полиномиальных выражений. Есть ли способ сделать это, позволяя пользователю писать выражение типа «2x^2 + 3x»?
Я пытаюсь взять два выражения от пользователя, а затем позже в программе эти два добавляются друг к другу.
Изменить: проблема в том, что я не могу использовать x^2 как экспоненциальное число, оператор ^, похоже, не работает для моего программа
Я пробовал использовать библиотеку регулярных выражений, а также словари, но они все равно не работают так, как я ожидал.
Вот код:
static Dictionary ParsePolynomial(string polynomial)
{
Dictionary terms = new Dictionary();
var matches = Regex.Matches(polynomial, @"([-+]?\d*)x\^(\d+)|([-+]?\d+)");
foreach (Match match in matches)
{
if (match.Groups[1].Success)
{
int coeff = match.Groups[1].Value == "-" ? -1 : int.Parse(match.Groups[1].Value);
int power = int.Parse(match.Groups[2].Value);
if (terms.ContainsKey(power))
terms[power] += coeff;
else
terms[power] = coeff;
}
else
{
int constant = int.Parse(match.Groups[3].Value);
if (terms.ContainsKey(0))
terms[0] += constant;
else
terms[0] = constant;
}
}
return terms;
}
static string PolynomialToString(Dictionary terms)
{
List result = new List();
foreach (var term in terms)
{
if (term.Key == 0)
result.Add($"{term.Value}");
else
result.Add($"{term.Value}x^{term.Key}");
}
return string.Join(" + ", result);
}
static Dictionary AddPolynomials(Dictionary poly1, Dictionary poly2)
{
Dictionary result = new Dictionary(poly1);
foreach (var term in poly2)
{
if (result.ContainsKey(term.Key))
result[term.Key] += term.Value;
else
result[term.Key] = term.Value;
}
return result;
}
static Dictionary SubtractPolynomials(Dictionary poly1, Dictionary poly2)
{
Dictionary result = new Dictionary(poly1);
foreach (var term in poly2)
{
if (result.ContainsKey(term.Key))
result[term.Key] -= term.Value;
else
result[term.Key] = -term.Value;
}
return result;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79147303/is-there-a-way-i-can-take-user-inputs-as-2x2-and-use-it-as-exponential-number-i[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия