5

#PlatziCodingChallenge - Calculadora v2

Demian
demian
48320

16. Calculadora v2

Te diste cuenta de que muchas veces hacemos cálculos que son con más de dos valores, quiero que crees el algoritmo para programar una calculadora a la que le puedas agregar tantos números como tú requieras, deberá servir para adiciones y multiplicaciones

Reglas del reto

Escribe tu comentario
+ 2
Ordenar por:
2
6327Puntos

Calculadora V2 en Java ☕️ ☕️ 😃

public class CalculadoraV2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);System.out.println("Escribe 1 para suma o 2 para multiplicación");int opcion = scanner.nextInt();int num;int resultado = 0;int resultadoMult = 1;switch (opcion) {
            case1: //sumado {
                    System.out.println("Escribe un un número para sumar o escribe 0 para salir");
                    num = scanner.nextInt();
                    resultado += num;
                }while (num != 0);System.out.println("El  resultado es: " + resultado);break;case2: //multiplicacióndo {
                    System.out.println("Escribe un un número para multiplicar o escribe 0 para salir");
                    num = scanner.nextInt();if (num == 0) {
                        break;
                    }
                    resultadoMult *= num;
                }while (true);System.out.println("El  resultado es: " + resultadoMult);break;default:
                System.out.println("opción no válida");break;
        }
    }
}

Resultado de la ejecución con multiplicación:

Resultado de la ejecución con suma:

2
19943Puntos

Calculadora v2 en JavaScript

//Calculadora v2 en JavaScriptconst add = numbers => numbers.reduce((a, b) => a + b)
const multiply = numbers => numbers.reduce((a, b) => a * b)

let numeros = []
do {
    numeros.push(parseFloat(prompt('Introduzca un número')))
}while(prompt('¿Hay más números? (si/no)').toLowerCase() === 'si')

const operacion = prompt('¿Que operación quiere hacer? (sumar/multiplicar)').toLowerCase()
switch(operacion){
    case'sumar':
        alert(`La suma de los números es ${add(numeros)}`)
        breakcase'multiplicar':
        alert(`El producto de los números es ${multiply(numeros)}`)
        breakdefault:
        alert('No conozco esa operación')
}
1

En Python:

""" Calculadora para adiciones y multiplicaciones a la que se puede agregar tantos números como se desee.
Calculator for additions and multiplications to which you can add as many numbers as you want. """defreceive_numbers():
    numbers = []
    stop_asking = 0
    count = 0while stop_asking == 0:
        count += 1
        number = input(' Please insert number {}: ' .format(count))
        if number == '=':
            stop_asking = 1else:
            try:
                numbers.append(float(number))
            except:
                whileTrue:
                    number = input('  Invalid entry. Please insert a number: ')
                    if number == '=':
                        stop_asking = 1breakelse:
                        try:
                            numbers.append(float(number))
                            breakexcept:
                            pass
    print(numbers)
    return numbers


if __name__ == "__main__":
    print('Sum and Multiplication Calculator!!!')
    print('Select the operation you want to perform:\n  [+] Addition.\n  [*] Multiplication.')
    operator = ''whilenot (operator == '+'or operator == '*'):
        operator = input('Enter + or *: ')    
    if operator == '+':
        print('Please entry the numbers you want to add (use "." as decimal separator), to stop enter \"=\"')  
        result = sum(receive_numbers())
        print('The sum result of your numbers is: {}' .format(result))    
    else:
        print('Please entry the numbers you want to multiply (use "." as decimal separator), to stop enter \"=\"')
        result = 1for x in receive_numbers():
            result *= x
        print('The multiplication result of your numbers is: {}' .format(result))
1

Javascript
Facil :v

const expresion = prompt('Introduce una suma o multiplicacion con "n" valores:')

alert(eval(expresion))
1
13595Puntos

Java

public class CalculatorV2 {
    public staticvoid start(){
        Scanner scan  = new Scanner(System.in);
        StringBuilder numbersDisplay = new StringBuilder();
        int option = 0;
        System.out.println("Enter a number:");
        double result = scan.nextDouble();
        numbersDisplay.append(result + " ");

        do {
            System.out.println("Select an operation: \n 1.Addition(+) \n 2.Multiplication(*) \n 3.Exit");
            option = scan.nextInt();
            double number = 0;

            if (option!= 3) {
                System.out.println("Enter a number:");
                number = scan.nextDouble();
            }
            switch (option){
                case1:
                    numbersDisplay.append("+ " + number + " ");
                    result += number;
                    System.out.println(numbersDisplay + " = " + result);
                    break;
                case2:
                    numbersDisplay.append("* " + number + " ");
                    result *= number;
                    System.out.println(numbersDisplay + " = " + result);
                    break;
                case3:
                    System.out.println(numbersDisplay + " = " + result);
                    break;
                default:
                    System.out.println("That is not a valid option");
                    break;
            }
        }while (option != 3);
    }
}
1
2345Puntos

Calculadora v2

var op = "10*2*3"//Digite la operación. Utilice un solo tipo de signo.if(validarOpUnico(op)){
    var res = 0;  
    if(op.includes('+')){
        let nums = op.split('+')
        for(let n of nums){
            res += parseFloat(n);
        }
    }elseif(op.includes('-')){
        let nums = op.split('-')
        res = parseFloat(nums[0]);
        for(let i = 1; i< nums.length; i++){
            res -= parseFloat(nums[i]);
        }
    }elseif(op.includes('*')){
        let nums = op.split('*')
        res = parseFloat(nums[0],10);
        for(let i = 1; i< nums.length; i++){
            res *= parseFloat(nums[i]);
        }
    }elseif(op.includes('/')){
        let nums = op.split('/')
        res = parseFloat(nums[0]);
        for(let i = 1; i< nums.length; i++){
            res /= parseFloat(nums[i]);
        }
    }    
}
console.log(`${op} = ${res}`)

functionvalidarOpUnico(cad){
    res = 'Se permite un solo tipo de operador. Intenta de nuevo!'if(cad.includes('+') && cad.includes('-') || cad.includes('+') && cad.includes('*') || cad.includes('+') && cad.includes('/') ){
        returnfalse;
    }elseif(cad.includes('-') && cad.includes('*') || cad.includes('-') && cad.includes('/') ){
        returnfalse;  
    }elseif(cad.includes('*') && cad.includes('/')){
        returnfalse;
    }else{
        returntrue;
    }
}
1

En Python 😃

menu='''CALCULADORA, Si deseas hacer un calculo responde las preguntas
        y llena los campos como se te indica'''
menum='''Ingresa el numero que deseas operar: '''
menuop='''Que desea realizar, presione:
        1.- Si desea Sumar el numero ingresado
        2.- Si desea Multiplicar el número ingresado'''defsuma(numero,numero2):
    numero=numero+numero2
    continua(numero)

defmultiplica(numero,numero2):
    numero=numero*numero2
    continua(numero)

defcontinua(numero):
    print(f'Tu resultado ahora es: {numero}')
    seguir=input('Quieres agregar más operaciones?[si/no]: ')
    if seguir=='si':
        operacion(numero)
    else:
        passdefrun():global menu
    global menum
    print(menu)
    numero=int(input(f'{menum} '))
    operacion(numero)

defoperacion(numero):global menuop
    global menum
    opera=int(input(f'{menuop}\n '))
    numero2=int(input(f'{menum} '))

    if opera==1:
        suma(numero,numero2)
    elif opera==2:
        multiplica(numero,numero2)
    else:
        print('Ingresa una opción valida')

if __name__ == '__main__':
    run()
1
7078Puntos
#include<iostream>usingnamespacestd;

intmain(){
    cout << "Calculadora" << endl << "1. Suma" << endl << "2. Multiplicacion" << endl;

    int opcion, numero, resultado;

    cout << "Introduzca el calculo aritmetico que desea: ";
    cin >> opcion;

    if(opcion == 1)
    {
        cout << "Ingrese un numero (0 para terminar): ";
        cin >> numero;
        while (numero != 0)
        {
            resultado = resultado + numero;

            cout << "Ingrese un numero (0 para terminar): ";
            cin >> numero;
        }

    }
    elseif(opcion == 2)
    {
        cout << "Ingrese un numero (0 para terminar): ";
        cin >> numero;
        while (numero != 0)
        {
            resultado = numero * numero;

            cout << "Ingrese un numero (0 para terminar): ";
            cin >> numero;
        }
    }
    else
    {
       cout << "No juege por el programa, por favor";
    }

    cout << "El resultado es: " << numero;

    return0;
}
1
26494Puntos

Reto en Python. 🐍🐍🐍

defcalculadora(numeros, operacion):if operacion == '1':
        resultado = sum(numeros)
    elif operacion == '2':
        resultado = 1for numero in numeros:
            resultado = resultado * numero

    return resultado


defgenerador_lista_numeros(cantidad):
    list_numeros = []
    for i in range(cantidad):
        numero = float(input(f'Ingresa el número {i+1}: '))
        list_numeros.append(numero)    
    
    return list_numeros


defrun():
    print("""Calculadora V2.0
    Ingresa una cantidad de números y la operación que harás.""")
    operacion = input("""
    1) Suma
    2) Multiplicación

    Escoge la operación: """)

    cantidad_numeros = int(input('\nIngresa con cuántos números harás el cálculo: '))
    numeros = generador_lista_numeros(cantidad_numeros)

    resultado = calculadora(numeros, operacion)
    print(f'\n\nRESULTADO = {resultado}')


if __name__ == "__main__":
    run()
1
7689Puntos

Me costó pero lo logre, por si acaso, esta visto para orden de operadores, o sea la multiplicación sucede primero que las sumas.
Me refiero a que puedes hacer esto:

El resultado te dará:

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>CalculadoraV2</title></head><style>
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: monospace;
  }

  body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }

  .header {
    height: 15vh;
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .contenedor {
    display: flex;
    width: 100%;
    height: 85vh;
    justify-content: center;
  }

  .calculadora {
    align-items: center;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    border-radius: 25px;
    background: #646464;
    min-width: 450px;
    width: 45%;
    height: 95%;
  }

  .pantalla {
    display: flex;
    justify-content: center;
    width: 100%;
    height: 20%;
  }
  
  .pantallah2 {
    margin-top: 45px;
    width: 80%;
    font-size: 35px;
    border-radius: 10px;
    background-color: lightblue;
    display: flex;
    align-items: center;
    padding-left: 15px;
  }

  .botones {
    display: grid;
    width: 100%;
    height: 80%;
    grid-template-columns: 10%20%20%20%20%10%;
    grid-template-rows: 10%20%20%20%20%10% ;
    grid-template-areas: 
      ". clr . . . ."". seven eight nine plus ."". four five six plus ."". one two three mult . "". point cero equal mult ."". . . . . ."
      ;

  }

  .btn {
    margin: 8px;
    border-radius: 15px;
    outline: none;
    font-size: 40px;
    border: none;
    color: #2d3142;
    text-align: center;
  }

  .btn:hover {
    cursor: pointer;
    transform: scale(1.1);
  }

  #reset {
    grid-area: clr;
    font-size: 24px;
  }
  #cero {
    grid-area: cero;
  }
  #one {
    grid-area: one;
  }
  #two {
    grid-area: two;
  }
  #three {
    grid-area: three;
  }
  #four {
    grid-area: four;
  }
  #five {
    grid-area: five;
  }
  #six {
    grid-area: six;
  }
  #seven {
    grid-area: seven;
  }
  #eight {
    grid-area: eight;
  }
  #nine{
    grid-area: nine;
  }
  #suma{
    grid-area: plus;
  }
  #multiplicacion{
    grid-area: mult;
  }
  #point{
    grid-area: point;
  }
  #equal{
    grid-area: equal;
  }

</style><body><div></div><divclass='header'><h1>Calculadora</h1></div><divclass="contenedor"><divclass="calculadora"><divclass="pantalla"><h2cols="18"row="1"id="valores"></h2></div><divclass="botones"><inputclass="btn"type="button"value="CE"id="reset"data-numero="clr"><inputclass="btn"type="button"value="0"id="cero"data-numero="0"><inputclass="btn"type="button"value="1"id="one"data-numero="1"><inputclass="btn"type="button"value="2"id="two"data-numero="2"><inputclass="btn"type="button"value="3"id="three"data-numero="3"><inputclass="btn"type="button"value="4"id="four"data-numero="4"><inputclass="btn"type="button"value="5"id="five"data-numero="5"><inputclass="btn"type="button"value="6"id="six"data-numero="6"><inputclass="btn"type="button"value="7"id="seven"data-numero="7"><inputclass="btn"type="button"value="8"id="eight"data-numero="8"><inputclass="btn"type="button"value="9"id="nine"data-numero="9"><inputclass="btn"type="button"value="+"id="suma"data-numero="+"><inputclass="btn"type="button"value="x"id="multiplicacion"data-numero="*"><inputclass="btn"type="button"value="."id="point"data-numero="."><inputclass="btn"type="button"value="="id="equal"data-numero="="></div></div></div><script>const reset = document.getElementById('reset')
    const cero = document.getElementById('cero')
    const one = document.getElementById('one')
    const two = document.getElementById('two')
    const three = document.getElementById('three')
    const four = document.getElementById('four')
    const five = document.getElementById('five')
    const six = document.getElementById('six')
    const seven = document.getElementById('seven')
    const eight = document.getElementById('eight')
    const nine = document.getElementById('nine')
    const suma = document.getElementById('suma')
    const multiplicacion = document.getElementById('multiplicacion')
    const point = document.getElementById('point')
    const equal = document.getElementById('equal')

    const pantalla = document.getElementById('valores')

    let total = 0let subtotalArray = []
    let subtotal = 0let subsubtotal = 1

    reset.onclick = () => {
      subtotal = 0
      total = 0
      subtotalArray = []
      operador = ''
      pantalla.innerHTML = ''
    }

    cero.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '0'
    }
    one.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '1'
    }
    two.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '2'
    }
    three.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '3'
    }
    four.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '4'
    }
    five.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '5'
    }
    six.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '6'
    }
    seven.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '7'
    }
    eight.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '8'
    }
    nine.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '9'
    }
    point.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '.'
    }
    suma.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '+'
    }
    multiplicacion.onclick = () => {
      pantalla.innerHTML = pantalla.innerHTML + '*'
    }
    equal.onclick = () => {
      subtotalArray = pantalla.innerHTML.split('+')
      subtotalArray.map( index => {
        index = index.split('*')
        subsubtotal = 1if (index.length !== 1){
          index.map( num => {
            subsubtotal = subsubtotal * num
          })
          subtotal = subtotal + subsubtotal
        } else {
          subtotal = subtotal + parseFloat(index)
        }
      })
      pantalla.innerHTML = subtotal
    }
  </script></body></html>
1
7689Puntos
7 meses

Pd: Me acabo de dar cuenta que no puse los casos para que funcione varias veces, solo sirve una vez, hay que darle a CE para poder volverla a usar c:

1
8870Puntos

En Java

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("Bienvenido a la calculadora 2.0");
        ArrayList<Float> valores= new ArrayList<Float>();System.out.println("Ingresa la cantidad de valores con los que deseas hacer la operación");
        Scanner entradaCantidad= new Scanner(System.in);int cantidadValores= entradaCantidad.nextInt();for(int i=0; i<cantidadValores; i++){System.out.println("Ingresa el valor "+(i+1));
            Scanner entradaValor=new Scanner(System.in);
            Float valor= entradaValor.nextFloat();
            valores.add(valor);
        }
        System.out.println("Elige la operación que deseas realizar\n1.-Suma\n2.-Multiplicación");
        Scanner entradaOpcion= new Scanner(System.in);int opcion= entradaOpcion.nextInt();if(opcion==1){
            float total=Operaciones.Suma(valores);System.out.println("El resultado de tu operación suma es "+total);
        }elseif(opcion==2){
            float total=Operaciones.Multiplicacion(valores);System.out.println("El resultado de tu operación multiplicación es "+total);
        }else{
            System.out.println("Opcion no válida");
        }

    }
}
import java.util.ArrayList;

publicclass Operaciones {
    publicstaticFloat Suma(ArrayList<Float> valores){
        float total=0;
        for (Float iterador:valores) {
            total+=iterador;
        }
        return total;

    }
    publicstaticFloat Multiplicacion(ArrayList<Float> valores){
        float total=1;
        for (Float iterador:valores) {
            total*=iterador;
        }
        return total;

    }
}
1
13966Puntos

En Python con el método eval de los strings.

defejercicio_16():"""
    Te diste cuenta de que muchas veces hacemos cálculos que son con más de dos valores, quiero que crees el algoritmo para programar una calculadora a la que le puedas agregar tantos números como tú requieras, deberá servir para adiciones y multiplicaciones
    """

    print(
            """
Ingrese el calculo que quiere hacer en linea, recuerde los parentesis. 
======================================================================
            """)
    e = input('Calculo a realizar: ')
    print(f'¿El calculo a resolver quedo bien realiazado?: {e}')
    answer = input('Sí lo escribio mal, ingrese (0) para reescribirlo, (1) para resolverlo: ')
    while answer == '0':
        e = input('Calculo a realizar: ')
        print(f'¿El calculo a resolver quedo bien realiazado?: {e}')
        answer = input('Sií lo escribio mal, ingrese (0) para reescribirlo, (1) para resolverlo: ')
    
    print(f'La respuesta al calculo ({e}) es: {round(eval(e),2)} redondeado a 2 decimales.')

if __name__ == "__main__":
    ejercicio_16()

1
13966Puntos
4 meses

OUTPUT

Captura.PNG

El método eval deja evaluar un string como toda una expresión matemática, muy útil en esté caso si se escribe correctamente.

0
12398Puntos

Este reto lo resolví de la siguiente forma:

lista_numero = []

defsuma_numeros():
  print('Suma de los números')
  print('Presiona 0 para terminar las operaciones')
  whileTrue:
    numero = int(input('ingresa los numeros: '))
    lista_numero.append(numero)

    if numero == 0:
      print('Los numeros ingresados suman: ',sum(lista_numero))
      breakdefmultiplica_numeros():
  print('Multiplica de los números')
  print('Presiona 0 para terminar las operaciones')
  whileTrue:
    numero = int(input('ingresa los numeros: '))
    lista_numero.append(numero)

    producto = 1for i in lista_numero[0:-1]:
      producto *= i

    if numero == 0:
      print('Los numeros ingresados multiplican: ', producto)
      breakdefrun():whileTrue:
    operacion = str(input('''
        Qué operación desea realizar:
        [s] Suma
        [m] Multiplicación
        [x] Salir
        '''))

    if operacion == 's':
      suma_numeros()

    elif operacion == 'm':
      multiplica_numeros()

    elif operacion == 'x':
      breakelse:
      print('Operación desconocida.')

if __name__ == "__main__":
  run()