MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación > Webmasters - Diseño Web - Programación - Diseño gráfico

Error en "Calculadora"

<< < (2/5) > >>

jirho:
...bueno, antes me rectifico, no me habia dado cuenta que la opcion era una cadena, por lo que no necesita del &...Tania, me alegra leerte, la operacion te falla porque no puedes comparar cadenas con el ==, eso es para numeros, o a lo mucho para un caracter (o bueno se puede si el == esta sobrecargdao, pero eso se ve despues)...para comparar cadenas existe una funcion:
strcmp(cad1,cad2)//retorna 0 si las cadenas son iguales

...es decir:

if(operacion=="suma")// no se pùede

if(strcmp(operacion,"suma")==0)// es como se debe hacer

...Pero porque no mejor hacen un menu con numero. Por ejemplo:

1. Suma
2. Resta...

scanf("%d",%Opcion)

switch(Opcion){
  case 1:...
}

O

if(opcion==1)// aqui si se puede hacer eso...... saludos...
 :twisted:

Tania:
Jirho! Yo también me alegro de leerte!

Bueno, mi primera idea fue la del switch. Lo de comprar cadenas no lo sabia (aun no he llegado a esa parte, hehe) :P Pero vamos, que me esta gustando mucho esto, espero cogerle pronto el truco! Y gracias por lo de comprar cadenas, esta noche me mirare algunos ejemplos de eso :)

Un besazo enorme,
Tania

P.D. Aunque suene ridiculo me hace muchisima ilusion todo esto :P

JalpWeb:
Hola de nuevo y gracias por todo.

Haciendo unas pequeñas modificaciones con el menú con números me ha salido este código que si funciona a la perfección.


--- Código: ---#include "stdio.h"
main()
int operacion;
int num1;
int num2;
int resultado;
{
printf ("Escriba el número de la operación que desee realizar:\n 1: Suma\n 2: Resta\n 3: Multiplicación\n  ");
scanf ("%d",&operacion);
if (operacion==1)
{
printf ("\nSuma\n");
printf (" Escriba el primer número con el que desee operar\n  ");
scanf ("%d",num1);
printf (" Escriba el segundo número con el que desee operar\n  ");
scanf ("%d",num2);
resultado=num1+num2;
printf ("El resultado es %d",resultado);
}
else {
if (operacion==2)
{
printf ("\nResta\n");
printf (" Escriba el primer número con el que desee operar\n  ");
scanf ("%d",num1);
printf (" Escriba el segundo número con el que desee operar\n  ");
scanf ("%d",num2);
resultado=num1-num2;
printf ("El resultado es %d",resultado);
}
else {
if (operacion==2)
{
printf ("\nMultiplicación\n");
printf (" Escriba el primer número con el que desee operar\n  ");
scanf ("%d",num1);
printf (" Escriba el segundo número con el que desee operar\n  ");
scanf ("%d",num2);
resultado=num1*num2;
printf (" El resultado es %d",resultado);
}
else
printf ("El número de operación indicado no es valido")
}}}
--- Fin del código ---


Lo que ahora me pregunto, ¿qué código debería de añadir al final para que me muestre un mensaje preguntando que si quiero hacer otra operación, que le tenga que poner si (que vuelva a empezar) o no (que salga del programa)? Se podría hacer con un scanf ¿verdad?

Pero lo que no se hacer es que vuelva a reiniciar el programa y lo de cerrar el programa.

BuHo:
Veo que has hecho una chapuza muy maja ;)

Lo de solucionar la comparacion de cadenas con numeros es una solucion pero no tienes ni idea de por qué fallaba antes, con lo cual no aprendes nada haciendolo asi.

En fin, te comento.

No puedes comparar cadenas de caracteres igualandolas. En su lugar, incluye la string.h en las cabeceras y para comparar dos cadenas haces asi:

if (strcmp(operacion,"suma")==0)

Eso te dira  si han escrito "suma" o no. Si sustituyes los
 if (operacion=="lo que sea")

por lo que te he dicho, tu programa funciona sin problemas.

Para repetir las operaciones, mete el codigo que quieras que se repita dentro de un bucle do-while que se repita hasta que el usuario diga "no".

jirho:
...oye Buho no me regañes delante del publico... :? ... :wink: ...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa