none
Operações RRS feed

  • Pergunta

  • Ola

    Estou a terminar uma calculadora mas estou com um problema.

    Pretendo que a calculadora me mostre na textbox a operação tipo 1+6=7. Não está fazendo, ela primeiro mostra 1+6 e depois =7.

    Como resolver isto

    sábado, 3 de dezembro de 2011 01:15

Respostas

  • Oi Sttela, essa é uma ação bem simples de realizar, mas que pode ser feita de muitas maneiras diferentes. Você pode colocar o trecho do código que você está usando pra fazer o cálculo, daí adapto o seu código, assim você pode manter o seu padrão.
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    sábado, 3 de dezembro de 2011 01:25
  • Uma solução extremamente simples, se o que você quer é manter no visor a operação, é fazer assim:

    cria uma variavel do tipo string em cada case converta os valores em string e acrescente o resultado. Ficará assim: 

     

    switch (operacao)

    {

     

    case "+":

    resultado = numero1 + numero2;

    mostraCalculos.Text = numero1.ToString() +

    "+" + numero2.ToString() + " = " + resultado.ToString();

     

    break;
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    sábado, 3 de dezembro de 2011 02:02
  • Como assim por 3 vezes Stella? Não entendi direito.
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    sábado, 3 de dezembro de 2011 14:47
  • Stella, isso está acontecendo porque você está atribuindo tudo à variável numero1 e não está atribuindo nada ao numero2, por isso dá esse erro. Você precisa atribuir o é antes do sinal da operação à variável numero1 e o que é depois do sinal à variável numero2. No seu código vc está passando o valor do textbox inteiro para a variável numero1. Ou seja, está passando a formula montada, mas não é possível converter uma fórmula. você tem que separar os valores para cada variável.
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    domingo, 4 de dezembro de 2011 15:21
  • Stella, faça o seguinte. Implemente esse código para cada botão de número. Se não conseguir, me adiciona no msn que te ajudo mais a fundo. mcosta_m@hotmail.com

     

    if (mostraCalculos.Text.Trim().Length > 0)

    {

    numero1 = 1;

    }

     

    else

    {

    numero2 = 1;

    }

    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    domingo, 4 de dezembro de 2011 17:14
  • Obrigada Marcelo, valeu
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:07
    domingo, 4 de dezembro de 2011 21:07

Todas as Respostas

  • Boa noite.

    Voce poderia dar mais detalhes..tipo nos mostrar a tela do seu sistema..


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
    sábado, 3 de dezembro de 2011 01:20
  • Oi Sttela, essa é uma ação bem simples de realizar, mas que pode ser feita de muitas maneiras diferentes. Você pode colocar o trecho do código que você está usando pra fazer o cálculo, daí adapto o seu código, assim você pode manter o seu padrão.
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    sábado, 3 de dezembro de 2011 01:25
  • Este é o código

            private void botaoMais_Click_1(object sender, EventArgs e)

            {

                operacao = "+";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

     

            private void botaoMenos_Click_1(object sender, EventArgs e)

            {

                operacao = "-";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

     

            private void botaoVezes_Click_1(object sender, EventArgs e)

            {

                operacao = "*";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

     

            private void botaoDividir_Click_1(object sender, EventArgs e)

            {

                operacao = "/";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

            // Fim dos botões de operação

     

            // Botão igual

            private void botaoIgual_Click_1(object sender, EventArgs e)

            {

                numero2 = double.Parse(mostraCalculos.Text);

                botaoIgual.Enabled = false;

                painelDigitos.Enabled = false;

            // Botão igual

            private void botaoIgual_Click_1(object sender, EventArgs e)

            {

                numero2 = double.Parse(mostraCalculos.Text);

                botaoIgual.Enabled = false;

                painelDigitos.Enabled = false;

     

                switch (operacao)

                {

                    case "+":

                        resultado = numero1 + numero2;

                        break;

                    case "-":

                        resultado = numero1 - numero2;

                        break;

                    case "*":

                        resultado = numero1 * numero2;

                        break;

                    case "/":

                        if (numero2 != 0)

                        {

                            resultado = numero1 / numero2;

                        }

                        else

                        {

                            MessageBox.Show("Impossivel dividir por zero!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            limpar();

                        }

                        break;

     

                }

                // arredondamento a 2 casas decimais.

                mostraCalculos.Text += " = " + (Convert.ToString(System.Math.Round(resultado, 2)));

     

                ListViewItem lvh = new ListViewItem(mostraCalculos.Text);

                lvHistorico.Items.Add(lvh);

                //mostraCalculos.Text = "";

            }

    sábado, 3 de dezembro de 2011 01:34
  • Este é o código

     

            private void botaoMais_Click_1(object sender, EventArgs e)

            {

                operacao = "+";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

     

            private void botaoMenos_Click_1(object sender, EventArgs e)

            {

                operacao = "-";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

     

            private void botaoVezes_Click_1(object sender, EventArgs e)

            {

                operacao = "*";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

     

            private void botaoDividir_Click_1(object sender, EventArgs e)

            {

                operacao = "/";

                numero1 = double.Parse(mostraCalculos.Text);

                mostraCalculos.Text += operacao;

                auxiliar = 1;

            }

            // Fim dos botões de operação

     

            // Botão igual

            private void botaoIgual_Click_1(object sender, EventArgs e)

            {

                numero2 = double.Parse(mostraCalculos.Text);

                botaoIgual.Enabled = false;

                painelDigitos.Enabled = false;

     

     

            // Botão igual

            private void botaoIgual_Click_1(object sender, EventArgs e)

            {

                numero2 = double.Parse(mostraCalculos.Text);

                botaoIgual.Enabled = false;

                painelDigitos.Enabled = false;

     

                switch (operacao)

                {

                    case "+":

                        resultado = numero1 + numero2;

                        break;

                    case "-":

                        resultado = numero1 - numero2;

                        break;

                    case "*":

                        resultado = numero1 * numero2;

                        break;

                    case "/":

                        if (numero2 != 0)

                        {

                            resultado = numero1 / numero2;

                        }

                        else

                        {

                            MessageBox.Show("Impossivel dividir por zero!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            limpar();

                        }

                        break;

     

                }

                // arredondamento a 2 casas decimais.

                mostraCalculos.Text += " = " + (Convert.ToString(System.Math.Round(resultado, 2)));

     

                ListViewItem lvh = new ListViewItem(mostraCalculos.Text);

                lvHistorico.Items.Add(lvh);

                //mostraCalculos.Text = "";

            }

     

    sábado, 3 de dezembro de 2011 01:34
  • Uma solução extremamente simples, se o que você quer é manter no visor a operação, é fazer assim:

    cria uma variavel do tipo string em cada case converta os valores em string e acrescente o resultado. Ficará assim: 

     

    switch (operacao)

    {

     

    case "+":

    resultado = numero1 + numero2;

    mostraCalculos.Text = numero1.ToString() +

    "+" + numero2.ToString() + " = " + resultado.ToString();

     

    break;
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    sábado, 3 de dezembro de 2011 02:02
  • Melhorou,

     

    Já me aparece o resultado tipo 5+6=11, na listview e na textbox mas continuo com o outro problema, ou seja:

    o comportamento da textbox é o seguinte:

    5+

    6

    5+6=11

    aparece por 3 vezes.

    Como fazer?

    sábado, 3 de dezembro de 2011 11:51
  • Como assim por 3 vezes Stella? Não entendi direito.
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    sábado, 3 de dezembro de 2011 14:47
  • Sim Marcelo, na textbox, quando vou digitanto ela faz o seguinte:

     

    5+

    depois aparece só o 6

    6

    e finalmente

    5+6=11

    Penso que seja por causa da variavel

    auxiliar = 1

    que eu tenho no fim de cada botão de operacao, tipo mais, menos, vezes, dividir

    se eu tirar ela, ja me coloca

    5+6

    mas quando coloco igual de dá um erro no codigo do botao igual em

    numero2 = double.Parse(mostraCalculos.Text);


    • Editado Sttela sábado, 3 de dezembro de 2011 21:30
    sábado, 3 de dezembro de 2011 21:15
  • Stella, isso está acontecendo porque você está atribuindo tudo à variável numero1 e não está atribuindo nada ao numero2, por isso dá esse erro. Você precisa atribuir o é antes do sinal da operação à variável numero1 e o que é depois do sinal à variável numero2. No seu código vc está passando o valor do textbox inteiro para a variável numero1. Ou seja, está passando a formula montada, mas não é possível converter uma fórmula. você tem que separar os valores para cada variável.
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    domingo, 4 de dezembro de 2011 15:21
  • vou tentar fazer, não percebi muito bem mas vou tentar.
    domingo, 4 de dezembro de 2011 15:31
  • Marcelo, estou pelos cabelos, não consigo mesmo... :(
    domingo, 4 de dezembro de 2011 15:49
  • Stella, isso está acontecendo porque você está atribuindo tudo à variável numero1 e não está atribuindo nada ao numero2, por isso dá esse erro. Você precisa atribuir o é antes do sinal da operação à variável numero1 e o que é depois do sinal à variável numero2. No seu código vc está passando o valor do textbox inteiro para a variável numero1. Ou seja, está passando a formula montada, mas não é possível converter uma fórmula. você tem que separar os valores para cada variável.
    Marcelo, estou pelos cabelos, não consigo mesmo... :(
    domingo, 4 de dezembro de 2011 16:10
  • Stella, faça o seguinte. Implemente esse código para cada botão de número. Se não conseguir, me adiciona no msn que te ajudo mais a fundo. mcosta_m@hotmail.com

     

    if (mostraCalculos.Text.Trim().Length > 0)

    {

    numero1 = 1;

    }

     

    else

    {

    numero2 = 1;

    }

    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:04
    domingo, 4 de dezembro de 2011 17:14
  • Stella, faça o seguinte. Implemente esse código para cada botão de número. Se não conseguir, me adiciona no msn que te ajudo mais a fundo. mcosta_m@hotmail.com

     

    if (mostraCalculos.Text.Trim().Length > 0)

    {

    numero1 = 1;

    }

     

    else
     

    {

    numero2 = 1;

    }

    Tambem não esta dando, enviei pasta para seu e-mail.
    domingo, 4 de dezembro de 2011 18:19
  • Obrigada Marcelo, valeu
    • Marcado como Resposta Sttela domingo, 4 de dezembro de 2011 21:07
    domingo, 4 de dezembro de 2011 21:07