Usuário com melhor resposta
Como resolver uma equação do primeiro grau em c#?

Pergunta
-
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
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
-
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
- Editado Guilherme1974 domingo, 24 de fevereiro de 2019 17:27
-
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
-
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