none
Como resolver uma equação do primeiro grau em c#? RRS feed

  • Pergunta

  • Quero encontrar o valor de X em tal equação no c#:

    (2 * X + 3 * X)/5  = 6

    Procurei muito, mas não achei nada que me ajudasse

                                   

     


    sábado, 23 de fevereiro de 2019 02:49

Respostas

  • Resolvi o meu problema da seguinte forma: 
     //=================================================================
            //=================================================================     
            
            int campovazio = 0;
            private void QntsCamposVazios(Control controlPai)
            {
                foreach (Control controle in controlPai.Controls)
                {
                    if (controle is TextBox)
                    {
                        if (((TextBox)controle).Text == "0")
                            campovazio++;
                    }                
                    else if (controle.Controls.Count > 0)
                    {
                        QntsCamposVazios(controle);
                    }
                }
            }
            public void CalculoMediaSeparado()
            {
                decimal N1, N2, N3, N4;
                decimal equação;
    
                //Quero chamar todos os N de X até o momento que o usuário digitar alguma coisa nas textbox
                //Aqui há um erro pois a váriavel é decimal e X é string, coloquei apenas para exemplificar
                N1 = 0;
                N2 = 0;
                N3 = 0;
                N4 = 0;
    
                //Se Os usuários digitarem algum valor na textbox o N será alterado para o numero q ele digitou
                if (Convert.ToDecimal(P1.Text) != 0) { N1 = Convert.ToDecimal(P1.Text); }
                if (Convert.ToDecimal(P2.Text) != 0) { N2 = Convert.ToDecimal(P2.Text); }
                if (Convert.ToDecimal(TP.Text) != 0) { N3 = Convert.ToDecimal(TP.Text); }
                if (Convert.ToDecimal(AI.Text) != 0) { N4 = Convert.ToDecimal(AI.Text); }
    
                //Essa é minha equação completa, o numero q o usuario digitou será substituido no N correspondente
                //Os N não digitado são chamados de X como descrito acima
                //Essa equação tem q resultar em 6 *Ainda não sei como fazer isso
                decimal Value;
                equação = ((2 * N1) / 10) + ((3 * N2) / 10) + ((3 * N3) / 10) + ((2 * N4) / 10);
                //Vejo quantos faltam para alcançar a nota 6 q é a média
                Value = 6 - equação;
    
                if(Value == 6)
                {
                    TXTQTF.Text = 6.ToString(",0.0");
                    return;
                }
    
                //-----------------------------------------------------------------
                campovazio = 0;
                QntsCamposVazios(this);
                //-----------------------------------------------------------------
                //Conta os campos vazios                       
                if (Switch1.Value == false || Switch1.Value == true && Convert.ToDecimal(PO.Text) ==0)
                {
                    campovazio = campovazio - 1;
                }
                if (Convert.ToDecimal(P2.Text) > 0 && P1.Text == "0")
                {
                    campovazio = campovazio - 1;
                }
    
                decimal ValorTOTAL = Value / campovazio;
    
                //Para P1 a nota q deve ser tirada é o valor total dividido por 0,2
                decimal NP1;
                if(Convert.ToDecimal(P1.Text) == 0) { NP1 = (ValorTOTAL * 10) / 2; } else { NP1=0; }
                //Para P2 a nota q deve ser tirada é o valor total dividido por 0,3
                decimal NP2;
                if (Convert.ToDecimal(P2.Text) == 0) { NP2 = (ValorTOTAL * 10) / 3; } else { NP2=0; }
                //Para TP a nota q deve ser tirada é o valor total dividido por 0,3
                decimal NP3;
                if (Convert.ToDecimal(TP.Text) == 0) { NP3 = (ValorTOTAL * 10) / 3; } else { NP3=0; }
                //Para AI a nota q deve ser tirada é o valor total dividido por 0,2
                decimal NP4;
                if (Convert.ToDecimal(AI.Text) == 0) { NP4 = (ValorTOTAL * 10) / 2; } else { NP4=0; }
    
                //Se o PO estiver ativado ele substitui a menor das P, logo trato a menor das P como 0 qnd
                //PO ativado           
                if(Switch1.Value == true)
                {
                    
                }
                TXTQTF.Text = ((Convert.ToDecimal((NP1 + NP2 + NP3 + NP4)/campovazio)).ToString(",0.0"));
    
            }
    
            //=======================================================================
            //=======================================================================

    • Marcado como Resposta Guilherme1974 domingo, 24 de fevereiro de 2019 21:47
    domingo, 24 de fevereiro de 2019 21:47

Todas as Respostas

  • Quero encontrar o valor de X em tal equação no c#:

    (2 * X + 3 * X)/5  = 6

    Procurei muito, mas não achei nada que me ajudasse

    Olá Guilherme,

    A estrutura da equação seria sempre essa, ou tu precisas de uma rotina que consiga resolver equações com estruturas diferentes, como por exemplo, mais incógnitas?

    No aguardo.


    Herbert Lausmann

    domingo, 24 de fevereiro de 2019 14:18
  • Na verdade a equação é um pouco mais complexa q essa, coloquei essa para ter um exemplo, mas meu código é assim:

     public void CalculoMediaSeparado()
            {
                decimal N1, N2, N3, N4;
                decimal equação;
    
                //Quero chamar todos os N de X até o momento que o usuário digitar alguma coisa nas textbox
                //Aqui há um erro pois a váriavel é decimal e X é string, coloquei apenas para exemplificar
                N1 = "X";
                N2 = "X";
                N3 = "X";
                N4 = "X";
    
                //Se Os usuários digitarem algum valor na textbox o N será alterado para o numero q ele digitou
                if (Convert.ToDecimal(P1.Text) != 0) { N1 = Convert.ToDecimal(P1.Text); }
                if (Convert.ToDecimal(P2.Text) != 0) { N2 = Convert.ToDecimal(P2.Text); }
                if (Convert.ToDecimal(TP.Text) != 0) { N3 = Convert.ToDecimal(TP.Text); }
                if (Convert.ToDecimal(AI.Text) != 0) { N4 = Convert.ToDecimal(AI.Text); }
    
                //Essa é minha equação completa, o numero q o usuario digitou será substituido no N correspondente
                //Os N não digitado são chamados de X como descrito acima
                //Essa equação tem q resultar em 6 *Ainda não sei como fazer isso
                equação = ((2 * N1) / 10) + ((3 * N2) / 10) + ((3 * N3) / 10) + ((2 * N4) / 10);
    
    
                //Aqui eu mostro o valor de X para que a equação resulte em 6
                MessageBox.Show("X".ToString());
    
    
    
            }

    Não sei como posso fazer isso, tentei dessa forma mas há erros:

    - X é string e N é decimal

    - Não sei como declarar a equação igual a 6

    - Não sei como mostrar o valor de X na messagebox


    domingo, 24 de fevereiro de 2019 17:05
  • Resolvi o meu problema da seguinte forma: 
     //=================================================================
            //=================================================================     
            
            int campovazio = 0;
            private void QntsCamposVazios(Control controlPai)
            {
                foreach (Control controle in controlPai.Controls)
                {
                    if (controle is TextBox)
                    {
                        if (((TextBox)controle).Text == "0")
                            campovazio++;
                    }                
                    else if (controle.Controls.Count > 0)
                    {
                        QntsCamposVazios(controle);
                    }
                }
            }
            public void CalculoMediaSeparado()
            {
                decimal N1, N2, N3, N4;
                decimal equação;
    
                //Quero chamar todos os N de X até o momento que o usuário digitar alguma coisa nas textbox
                //Aqui há um erro pois a váriavel é decimal e X é string, coloquei apenas para exemplificar
                N1 = 0;
                N2 = 0;
                N3 = 0;
                N4 = 0;
    
                //Se Os usuários digitarem algum valor na textbox o N será alterado para o numero q ele digitou
                if (Convert.ToDecimal(P1.Text) != 0) { N1 = Convert.ToDecimal(P1.Text); }
                if (Convert.ToDecimal(P2.Text) != 0) { N2 = Convert.ToDecimal(P2.Text); }
                if (Convert.ToDecimal(TP.Text) != 0) { N3 = Convert.ToDecimal(TP.Text); }
                if (Convert.ToDecimal(AI.Text) != 0) { N4 = Convert.ToDecimal(AI.Text); }
    
                //Essa é minha equação completa, o numero q o usuario digitou será substituido no N correspondente
                //Os N não digitado são chamados de X como descrito acima
                //Essa equação tem q resultar em 6 *Ainda não sei como fazer isso
                decimal Value;
                equação = ((2 * N1) / 10) + ((3 * N2) / 10) + ((3 * N3) / 10) + ((2 * N4) / 10);
                //Vejo quantos faltam para alcançar a nota 6 q é a média
                Value = 6 - equação;
    
                if(Value == 6)
                {
                    TXTQTF.Text = 6.ToString(",0.0");
                    return;
                }
    
                //-----------------------------------------------------------------
                campovazio = 0;
                QntsCamposVazios(this);
                //-----------------------------------------------------------------
                //Conta os campos vazios                       
                if (Switch1.Value == false || Switch1.Value == true && Convert.ToDecimal(PO.Text) ==0)
                {
                    campovazio = campovazio - 1;
                }
                if (Convert.ToDecimal(P2.Text) > 0 && P1.Text == "0")
                {
                    campovazio = campovazio - 1;
                }
    
                decimal ValorTOTAL = Value / campovazio;
    
                //Para P1 a nota q deve ser tirada é o valor total dividido por 0,2
                decimal NP1;
                if(Convert.ToDecimal(P1.Text) == 0) { NP1 = (ValorTOTAL * 10) / 2; } else { NP1=0; }
                //Para P2 a nota q deve ser tirada é o valor total dividido por 0,3
                decimal NP2;
                if (Convert.ToDecimal(P2.Text) == 0) { NP2 = (ValorTOTAL * 10) / 3; } else { NP2=0; }
                //Para TP a nota q deve ser tirada é o valor total dividido por 0,3
                decimal NP3;
                if (Convert.ToDecimal(TP.Text) == 0) { NP3 = (ValorTOTAL * 10) / 3; } else { NP3=0; }
                //Para AI a nota q deve ser tirada é o valor total dividido por 0,2
                decimal NP4;
                if (Convert.ToDecimal(AI.Text) == 0) { NP4 = (ValorTOTAL * 10) / 2; } else { NP4=0; }
    
                //Se o PO estiver ativado ele substitui a menor das P, logo trato a menor das P como 0 qnd
                //PO ativado           
                if(Switch1.Value == true)
                {
                    
                }
                TXTQTF.Text = ((Convert.ToDecimal((NP1 + NP2 + NP3 + NP4)/campovazio)).ToString(",0.0"));
    
            }
    
            //=======================================================================
            //=======================================================================

    • Marcado como Resposta Guilherme1974 domingo, 24 de fevereiro de 2019 21:47
    domingo, 24 de fevereiro de 2019 21:47
  • Fico feliz que tenha encontrado a solução e obrigado por compartilhar!

    Por conta do título da postagem "Como resolver uma equação do Primeiro Grau em C#?" vou deixar aqui um artigo do site CodeProject, no qual o autor descreve um algoritmo para solucionar equações Lineares e Sistemas de Equações Lineares. Vale lembrar que o nome "técnico", por assim dizer, da Equação de Primeiro grau, é equação linear. E existem vários tipos.

    As rotinas desenvolvidas pelo autor possuem um grau relativamente alto de complexidade, mas se aplicam a várias estruturas de equações Lineares. É algo bem prático.

    Linear Equation Solver in C#

    Fica a indicação para que se, eventualmente, algum outro colega do grupo cair nesta Thread por conta do título possa também obter uma solução.

    Abraço!


    Herbert Lausmann

    segunda-feira, 25 de fevereiro de 2019 10:42