Olá Cristhyan.
Tudo bem?
Para isso você pode modificar a função Calculadora
para reconhecer e processar esses operadores específicos. O método que você está usando com DataTable
e Expression
é criativo, mas pode não suportar diretamente operações como raiz quadrada e potência sem alguma manipulação adicional.
Aqui está uma sugestão de como você pode modificar seu código para incluir essas operações:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Digite a expressão de acordo com os símbolos abaixo: ");
Console.WriteLine("Adição: +\nSubtração: -\nMultiplicação: *\nDivisão: /\nRaiz Quadrada: sqrt\nPotência: ^");
Console.Write("Expressão: ");
double calculo = Calculadora(Console.ReadLine()!);
Console.WriteLine($"Resultado: {calculo}");
}
static double Calculadora(string expressao)
{
if (expressao.Contains("sqrt"))
{
string[] partes = expressao.Split(new string[] { "sqrt" }, StringSplitOptions.None);
double numero = double.Parse(partes[1]);
return Math.Sqrt(numero);
}
else if (expressao.Contains("^"))
{
string[] partes = expressao.Split('^');
double baseNum = double.Parse(partes[0]);
double expoente = double.Parse(partes[1]);
return Math.Pow(baseNum, expoente);
}
else
{
// Utilizando DataTable para as operações básicas
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("Resultado", typeof(double), expressao);
System.Data.DataRow row = dt.NewRow();
dt.Rows.Add(row);
return (double)row["Resultado"];
}
}
}
No código acima, adicionei condições para verificar se a expressão contém "sqrt" para raiz quadrada ou "^" para potência. Para a raiz quadrada, o código espera que você digite algo como sqrt4
e para a potência, algo como 2^3
.
Lembre-se de testar bem o código para garantir que ele atende a todas as situações que você precisa. Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui e bons estudos!