Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio: Calculadora em c#

não consegui uma solução no meu codigo abaixo para calcular raiz quadrada e potencia, alguém me ajudaria?

// Codigo:

using System.Data;
Console.WriteLine("Digite a expressão de acordo com os simbulos abaixo: ");
Console.WriteLine("Adição: +\r\nSubtração: -\r\nMultiplicação: *\r\nDivisão: /\r");
Console.Write("Expressão: ");
double calculo = Calculadora(Console.ReadLine()!);
Console.WriteLine($"Resultado: {calculo}");

static double Calculadora(string expressao)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Resultado", typeof(double));
    dt.Rows.Add(0.0);
    dt.Columns["Resultado"].Expression = expressao;
    return (double)dt.Rows[0]["Resultado"];
}
2 respostas
solução!

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!

Muito obrigado funcionou muito bem