hola chicos, llevo no mucho tiempo liado con c#, aprendiendo de tutoriales e internet, es lo que tiene estar confinado, el tema es que estoy haciendo una calculadora, pero tengo un problema en el tema porcentaje %, al hacerlo me sale el calculo de ( x numero *x numero / 100) , por poner un ejemplo, el 12 % de 75 me sale 9, bien yo querria (si tener que hacer nuevo codigo XD) que cuando haga esa operacion me saliese el resultado final, es decir (75 - 12 % = 66), pero no tengo manera, he tratado con ensayo y error, pero nada, al final mi mujer me echa de casa, porgo el codigo aqui si no os importa
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Double valor = 0;
String operacion = "";
bool operacion_press = false;
Double valor1 = 100;
public Form1()
{
InitializeComponent();
}
private void button_click(object sender, EventArgs e)
{
if ((resultado.Text == "0")||(operacion_press))
resultado.Clear();
operacion_press = false;
Button b = (Button) sender;
resultado.Text = resultado.Text + b.Text;
}
private void btn_ce_Click(object sender, EventArgs e)
{
resultado.Text = "0";
res_2.Text = "0";
}
private void operador_click(object sender, EventArgs e)
{
Button b = (Button)sender;
operacion = b.Text;
valor = Double.Parse(resultado.Text);
operacion_press = true;
res_2.Text = valor + " " + operacion;
}
private void btn_igual(object sender, EventArgs e)
{
res_2.Text = "";
switch (operacion)
{
case "+":
resultado.Text = (valor + Double.Parse(resultado.Text)).ToString();
res_2.Text = "El Resultado es " + Double.Parse(resultado.Text).ToString();
break;
case "-":
resultado.Text = (valor - Double.Parse(resultado.Text)).ToString();
res_2.Text = "El Resultado es " + Double.Parse(resultado.Text).ToString();
break;
case "*":
resultado.Text = (valor * Double.Parse(resultado.Text)).ToString();
res_2.Text = "El Resultado es " + Double.Parse(resultado.Text).ToString();
break;
case "/":
resultado.Text = (valor / Double.Parse(resultado.Text)).ToString();
res_2.Text = "El Resultado es " + Double.Parse(resultado.Text).ToString();
break;
case "√":
resultado.Text = Math.Sqrt(valor).ToString();
res_2.Text = "El Resultado es " + Double.Parse(resultado.Text).ToString();
break;
} // fin switch
}
private void btn4_Click(object sender, EventArgs e)
{
resultado.Clear();
valor = 0;
res_2.Text = "0";
}
private void button5_Click(object sender, EventArgs e)
{
if (resultado.Text.Length > 0)
resultado.Text = resultado.Text.Remove(resultado.Text.Length - 1, 1);
}
private void btnpor_click(object sender, EventArgs e)
{
[b] [color=red] Double a;
a = Convert.ToDouble(resultado.Text) / Convert.ToDouble(100);
resultado.Text = System.Convert.ToString(a);
res_2.Text = " Porcentaje " + System.Convert.ToString(a);[/color]
[/b]
}
}
}
res_2.Text = " Porcentaje " + System.Convert.ToString(a); ***** deciros que el res_2.Text , es porque los datos salen a dos pantallas, tipo calculadora de windos
No creo entenderte bien.
Quieres que el 12% de 75 en lugar de dar 9 que es el resultado esperado de 66?
"12% de 75" y "75 - 12% (de 75)" son dos operaciones distintas, evidentemente necesitas codigo nuevo o modificado...eso o no entendi para nada lo que pretendes hacer :rolleyes:
Cita de: ThunderCls en 30 Abril 2020, 17:16 PM
No creo entenderte bien.
...eso o no entendi para nada lo que pretendes hacer :rolleyes:
ya somos dos. por me abstuve de responder. :silbar:
Yo si creo que te entendi ;D te hice una función espero aun te sirva.
public void Operar(string valores)
{
string Operador = null;
string tmp = null;
double Valor_1 = default(Double);
double Valor_2 = default(Double);
string Resultado = null;
bool porcentaje;
for (var i = 0; i <= valores.Length - 1; i++)
{
tmp = tmp + valores.Chars[i];
if (valores.Chars[i] == "+" | valores.Chars[i] == "-" | valores.Chars[i] == "/" | valores.Chars[i] == "*" | valores.Chars[i] == "%")
{
if (Operador == null)
Operador = valores.Chars[i];
else if (Operador != null & Operador != "%" & valores.Chars[i] == "%")
porcentaje = true;
else
{
Interaction.MsgBox("Solamente se puede hacer una operación a la vez", MsgBoxStyle.Critical, "Error");
return null;
}
if (Valor_1 == default(Double))
{
Valor_1 = Conversion.Val(tmp);
tmp = null;
}
}
}
if (Valor_1 != default(Double))
{
Valor_2 = Conversion.Val(tmp);
tmp = null;
}
if (Valor_1 != default(Double) & Valor_2 != default(Double) & Operador != null)
{
if (porcentaje == true)
{
tmp = Conversion.Val(Valor_1) / 100 * Conversion.Val(Valor_2);
Valor_2 = tmp;
}
switch (Operador)
{
case "+":
{
Resultado = Conversion.Val(Valor_1) + Conversion.Val(Valor_2);
break;
}
case "-":
{
Resultado = Conversion.Val(Valor_1) - Conversion.Val(Valor_2);
break;
}
case "/":
{
Resultado = Conversion.Val(Valor_1) / Conversion.Val(Valor_2);
break;
}
case "*":
{
Resultado = Conversion.Val(Valor_1) * Conversion.Val(Valor_2);
break;
}
case "%":
{
Resultado = Conversion.Val(Valor_1) / 100 * Conversion.Val(Valor_2);
break;
}
}
return Resultado;
}
else
{
Interaction.MsgBox("Algo está mal en la operación", MsgBoxStyle.Critical, "Error");
return null;
}
}