porcentaje c#

Iniciado por toyeslomao, 28 Abril 2020, 12:28 PM

0 Miembros y 1 Visitante están viendo este tema.

toyeslomao

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


Código (csharp) [Seleccionar]

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


ThunderCls

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:
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

**Aincrad**

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:




xskyx

#3
Yo si creo que te entendi  ;D te hice una función espero aun te sirva.

Código (csharp) [Seleccionar]

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;
    }
}