Foros de daboweb

MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: JalpWeb en 17 de Mayo de 2005, 02:05:01 pm

Título: Error en "Calculadora"
Publicado por: JalpWeb en 17 de Mayo de 2005, 02:05:01 pm
Hola soy nuevo en esto de C y en clase estamos utilizando el Borland C++ 3.1, este codigo me da 6 errores. Que despues detallare el motivo q me da el programa:
Código: [Seleccionar]

#include"stdio.h"
main()
{
     char operacion [10];
     int num1;
     int num2;
     int result;
     printf ("Escribe la operación: suma, resta, multiplicacion");
     scanf ("%s",operacion);
          if (operacion) "suma"
               printf("Escribe el primer numero\n");
               scanf("%d",&num1);
               printf("Escribe el segundo numero\n");
               scanf("%d",&num2);
               result=num1+num2;
               printf("El resultado es %d\n",result);
          else
               if (operacion) "resta"
                    printf("Escribe el primer numero\n");
                    scanf("%d",&num1);
                    printf("Escribe el segundo numero\n");
                    scanf("%d",&num2);
                    result=num1-num2;
                    printf("El resultado es %d\n",result);
               else
                    if (operacion) "multiplicacion"
                         printf("Escribe el primer numero\n");
                         scanf("%d",&num1);
                         printf("Escribe el segundo numero\n");
                         scanf("%d",&num2);
                         result=num1*num2;
                         printf("El resultado es %d\n",result);
                    else
                         printf("La operación indicada no es valida");
}

En las tres lineas q sale: printf("Escribe el primer numero\n"); sale Estatement Missing ;.
En las tres lineas q sale: else sale Misplaced else
Título: Error en "Calculadora"
Publicado por: fedelf en 17 de Mayo de 2005, 02:16:21 pm
Hace muchisimo que no programo, pero en los if, no deberia aparecer algun operador logico? igual, mayor que, menor que, distinto a, en fin, que sepa si eso es verdadero o falso.
Título: Error en "Calculadora"
Publicado por: jirho en 17 de Mayo de 2005, 10:18:33 pm
...hola...primero te falta algo sisntaxis en c...en primer lugar scanf("%tipo_dato",&variable)//no olvides el & y en segundo, hacen falta los corchetes de los if..espero ya te funciones sino...no dudes en preguntar...saludos... :wink: ...
Título: Error en "Calculadora"
Publicado por: Tania en 20 de Mayo de 2005, 05:45:13 pm
Jalp, por que no pruebas con un switch?? A mi lo del if no me parece que esté bien puesto, aunque voy a probarlo ahora...
Título: Error en "Calculadora"
Publicado por: Tania en 20 de Mayo de 2005, 05:59:24 pm
Bueno, he conseguido que no de errores, aunque se sale al introducir la operacion, siempre dice que no es valida.

Código: [Seleccionar]
#include <stdio.h>
#include <conio.h>
main()
{
     char operacion [10];
     int num1;
     int num2;
     int result;
     printf ("Escribe la operacion: suma, resta, multiplicacion\n");
     scanf ("%s",operacion);
          if (operacion=="suma")
               {
               printf("Escribe el primer numero\n");
               scanf("%d",&num1);
               printf("Escribe el segundo numero\n");
               scanf("%d",&num2);
               result=num1+num2;
               printf("El resultado es %d\n",result);
               }
               else
               if (operacion=="resta")
                    {
                    printf("Escribe el primer numero\n");
                    scanf("%d",&num1);
                    printf("Escribe el segundo numero\n");
                    scanf("%d",&num2);
                    result=num1-num2;
                    printf("El resultado es %d\n",result);
                    }
               else
                    if (operacion=="multiplicacion")
                         {
                         printf("Escribe el primer numero\n");
                         scanf("%d",&num1);
                         printf("Escribe el segundo numero\n");
                         scanf("%d",&num2);
                         result=num1*num2;
                         printf("El resultado es %d\n",result);
                         }
                    else
                         {
                         printf("La operacion indicada no es valida");
                         }
getch();
}

===============================
TE faltan las llaves en los if y, como decian antes, yo tambien creo que en el if debe ir un operador lógico. ESto es lo que yo he conseguido.

Besos!,
Tania
Título: Error en "Calculadora"
Publicado por: jirho en 20 de Mayo de 2005, 06:20:17 pm
...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:
Título: Error en "Calculadora"
Publicado por: Tania en 20 de Mayo de 2005, 06:57:51 pm
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
Título: Error en "Calculadora"
Publicado por: JalpWeb en 20 de Mayo de 2005, 07:45:13 pm
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: [Seleccionar]
#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")
}}}


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.
Título: Error en "Calculadora"
Publicado por: BuHo en 21 de Mayo de 2005, 12:24:09 am
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".
Título: Error en "Calculadora"
Publicado por: jirho en 21 de Mayo de 2005, 05:18:03 pm
...oye Buho no me regañes delante del publico... :? ... :wink: ...
Título: Error en "Calculadora"
Publicado por: Tania en 22 de Mayo de 2005, 05:58:10 pm
Jirho, pa mi que estaba regañando a Jalp :P
Título: Error en "Calculadora"
Publicado por: BuHo en 22 de Mayo de 2005, 07:28:25 pm
Jajaja, si que era a Jalp, pero no le regañaba xDDD
Título: Error en "Calculadora"
Publicado por: JalpWeb en 23 de Mayo de 2005, 09:26:38 am
Lo primero gracias por vuestra ayuda :D He modificado la estructura y he intentado añadir la división pero no me sale.
Código: [Seleccionar]
#include "stdio.h"
#include "string.h"
main()
{
   char operacion [20];
   char fin [2];
   int num1;
   int num2;
   int resultado;
   printf ("Escriba la operación que desee realizar:  (Escribir igual sino no funciona)\n Suma\n Resta\n Multiplicación\n División\n  ");
   scanf ("%s",operacion);
   if (strcmp(operacion,"Suma")==0)
   {
      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\n\n",resultado);
   }
   else {
      if (strcmp(operacion,"Resta")==0)
      {
         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\n\n",resultado);
      }
      else {
         if (strcmp(operacion,"Multiplicación")==0)
            {
            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\n\n",resultado);
         }
         else {
            if (strcmp(operacion,"División")==0)
               {
               printf ("\nDivisió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=(float)num1/(float)num2;
               printf ("El resultado es %.2f\n\n",resultado);
               }
            else {
               printf ("El número de operación indicado no es valido\n");
               {
                                                     /*1*/
}}}}}
   printf ("¿Desea realizar otra operación? Si o No\n");
   scanf("%s",fin);
   if (strcmp(fin,"Si")==0)
      {
                                                     /*2*/
      }
   else
      {
      if (strcmp(fin,"No")==0)
         {
                                                     /*3*/
         }
      else
         {
                                                     /*4*/
         }
      }        
}

¿Que codigo debería poner en /*1*/ y en /*2*/ para que vaya al principio del programa?
¿Y en el /*3*/ para que saliera totalmente?
¿Y en el /*4*/ para que vuelva a formular la pregunta ¿Desea hacer otra operación?
¿Que he fallado en la división?  :?:
Título: Error en "Calculadora"
Publicado por: BuHo en 23 de Mayo de 2005, 11:38:24 am
¿Que error te da la division?

Lo de los puntos /*1, 2, 3  y 4*/ pienso que seria bueno ponerlo dentro de un bucle, al menos algunas de las opciones. No obstante, si tu profesor pasa de todo puedes usar la funcion goto, aunque si yo fuera tu profesor no te dejaria usarla ;)

Para salir del programa totalmente puedes usar exit(). Por ejemplol, exit(1);
Título: Error en "Calculadora"
Publicado por: jirho en 23 de Mayo de 2005, 09:44:13 pm
...jeje... Buho sabe que aqui nada de cosas raras, todo va en un ambiente saludable...por otro lado, Jalp, mira que defines num1 y num2 como enteros y en la division los operas como float, eso te da error, y por otro lado, como dice Buho, un ciclo te permite hacer lo que dices de volver al principio y todo eso, recuerda que un ciclo es el que te permite estar dentro de ciertas sentecias hasta que se cumpla una condicion de salida...es decir si el numero no es valido, volver a menu...trabajalo que asi aprendereras... ha y nada de goto....:wink: ...
Título: Error en "Calculadora"
Publicado por: JalpWeb en 23 de Mayo de 2005, 11:18:07 pm
Se me olvido deciroslo, :oops: ya le entregue al profesor la calculadora con el menu de palabras, lo que pasa es que lo del reiniciar la calculadora era por curiosidad. :D

Como se haria lo del bucle?, creo que con while pero no lo se cierto
Título: Error en "Calculadora"
Publicado por: jirho en 25 de Mayo de 2005, 05:51:55 pm
...aqui estamos para probar y eso se hace probando, asi que intenta las modificaciones que puedas, siempre hay un optima solucion y eso te ayudara en el proceso de mejorar la abstarcion de los programas...si con un while es una opcion... :wink: ...juega con el C, aveces te enseña cosas que te asombran... :twisted: ...
Título: Error en "Calculadora"
Publicado por: JalpWeb en 29 de Mayo de 2005, 05:42:29 pm
Se q no es de este tema xo sabeis de algun compilador para c bajo linux?

He intentado con el Kdevelop pero no me funciona.

¿Como nombraria varios bucles y saldría de ellos? Eso aun no lo se  :oops:
Título: Error en "Calculadora"
Publicado por: Liamngls en 29 de Mayo de 2005, 06:01:48 pm
http://www.elrincondelc.com/compila/gcc.html :)
Título: Error en "Calculadora"
Publicado por: BuHo en 30 de Mayo de 2005, 12:42:28 am
Y mas cerquita....
http://www.hackeando.com/programacion1.htm

Aunque lleva mucho tiempo sin actualizar, ahi sigue,
Título: Error en "Calculadora"
Publicado por: JalpWeb en 03 de Junio de 2005, 11:19:08 am
Gracias, aqui tenies una versión de la calculadora con switch:

Código: [Seleccionar]
#include "stdio.h"
#include "string.h"
main()
{
   char operacion;
   int num1;
   int num2;
   int resultado;
   float resultado2;
   printf ("Escriba la operación que desee realizar:  (Escribir igual sino no funciona)\n +: Suma\n -: Resta\n *: Multiplicación\n /: División\n  ");
   scanf ("%c",&operacion);
   switch(operacion){
   case '+':
      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\n\n",resultado);
      break;
   case '-':
      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\n\n",resultado);
      break;
   case '*':
      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\n\n",resultado);
      break;
   case '/':
      printf ("\nDivisió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);
      resultado2=(float)num1/(float)num2;
      printf ("El resultado es %.2f\n\n",resultado2);
      break;
   default:
      printf ("El número de operación indicado no es valido\n");
      break;
}}

Ya intentare hacerla con los whiles.

Ahora estoy intentando hacer un ahorcado :wink: ya os lo pasare.
Título: Error en "Calculadora"
Publicado por: jirho en 03 de Junio de 2005, 05:19:45 pm
... :shock: ...se ve mejor asi, y luego con funciones mucho mejor y luego con clases  :shock:  y luego con... :twisted: ...