Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: halomar en 25 Marzo 2011, 05:54 am



Título: programa para operaciones múltiples no me corre
Publicado por: halomar en 25 Marzo 2011, 05:54 am
hola colegas me estoy iniciando con esto de la programación en c++ y tengo un libro y me puse a hacer un programa que pidiera dos números y dependiendo de la opción que el usuario escogiera el programa tenia que ejecutarla pero la verdad es que no se donde esta el error por favor les presento mi programa y díganme donde estoy mal el objetivo es hacerlo con la función switch gracias de antemano


#include <iostream.h>
int main ()
{   
   
    char oper;
    int num1, num2;
    int suma, resta, mult, div, resto;
    cout<<"teclee dos numeros\n";
    cout<<"primer numero:";
    cin>>num1;
    cout<<"segundo numero:";
    cin>>num2;
    cout<<"elija una operacion\n";
    cout<<"suma: S " << endl;
    cout<<"resta: R "<< endl;
    cout<<"multiplicacion: M "<<endl;
    cout<<"division: D "<<endl;
    cin>>oper;
   
   
        switch (oper)
         {
           case 'a':
           case 'A':
           cout<<"la suma de los numeros es: "<<suma=num1+num2;
            break;
           
           case 'R':
           case 'r':
           cout<<"la resta de los numeros es: "<<resta=num1-num2;
           break;
           
           case 'M':
           case 'm':
           cout<<"el producto de los numeros es:"<<mult=num1*num2;
           break;.
           
           case 'D':
           case 'd':
           cout<<" la division de los numeros es: "<<div=num1/num2;
           cout<<endl<<"el resto es: "<<resto=num1%num2;
           break;
           default:
           cout<<"la operacion que escogio no es corresta"<<endl;
          }
 system ("pause");
 return 0;
}


Título: Re: programa para operaciones múltiples no me corre
Publicado por: .:BlackCoder:. en 25 Marzo 2011, 06:10 am
Lee sobre Precedencia..
http://c.conclase.net/curso/?cap=014

Utiliza etiquetas GeSHi para mostrar tus codigos... Y mejor trabaja con variables tipo flotante... Por lo de la division...

Saludos...


Título: Re: programa para operaciones múltiples no me corre
Publicado por: 43H4FH44H45H4CH49H56H45H en 25 Marzo 2011, 06:26 am
@halomar supongo que utilizas Turbo C++  por esto:
Código
  1. #include <iostream.h>
Deberias cambiarlo en mi caso te recomendaria Visual C++ 2008-2010, pero existen muchos otros y eso depende de tu gusto.
Para el switch puedes usar tolower o toupper para pasar el caracter a minuscula o mayuscula, o puedes hacerlo manualmente sin usar esas funciones.

Código
  1. switch (oper)
  2.         {
  3.           case 'a':
  4.           case 'A':
  5.           cout<<"la suma de los numeros es: "<<suma=num1+num2;
  6.            break;

Ademas porque usas 'a' o 'A' si en las opciones muestras 'S', tienes que revisar el uso de la sentencia switch que de seguro esta en el libro que usas (si no esta, mejor usa otro libro), al ver como manejas los operadores pienso que deberias volver a leer el libro que usas u otro mejor porque cometes demasiados errores.
Saluos.


Título: Re: programa para operaciones múltiples no me corre
Publicado por: 4rkn63l en 25 Marzo 2011, 06:46 am
El estandar de C++ dice que no se deberian de incluir archivos de cabecera con la extension .h, aun si fuesen archivos de cabecera de C, en vez de agregarles la extension .h, se les antepondra el caracter 'c'...por ejemplo:

Código
  1. #include <iostream> //biblioteca estandar de C++
  2. #include <cstdio> //archivo de cabecera de C  --->correcto
  3. #include <stdio.h> // ---> incorrecto
  4.  

Los otros dos errores que tienes tienen que ver con precedencia de operadores...una pista ----> ( ) jeje.

Y el otro error tiene que ver con los espacios de nombres...busca info sobre el espacio de nombres al que pertenecen los objetos cout,cin y endl.


Título: Re: programa para operaciones múltiples no me corre
Publicado por: Samael.Black en 25 Marzo 2011, 08:48 am
Código:
#include <iostream.h> // Error 1... libreria <iostream> no <iostream.h> 
int main ()
{  
    
    char oper;
    int num1, num2;
    int suma, resta, mult, div, resto;
    //Error 2 no pusistes std:: antes de cada cout, cin y endl
    cout<<"teclee dos numeros\n";
    cout<<"primer numero:";
    cin>>num1;
    cout<<"segundo numero:";
    cin>>num2;
    cout<<"elija una operacion\n";
    cout<<"suma: S " << endl;
    cout<<"resta: R "<< endl;
    cout<<"multiplicacion: M "<<endl;
    cout<<"division: D "<<endl;
    cin>>oper;
    
    /* Error 3 si mal no recuerdo switch no puede comparar cadenas de caracteres
        (no estoy 100% seguro) */
        switch (oper)
         {
           case 'a'://Error 4 para la suma es S o s no a o A
           case 'A':
           cout<<"la suma de los numeros es: "<<suma=num1+num2;
            break;
          
           case 'R':
           case 'r':
           cout<<"la resta de los numeros es: "<<resta=num1-num2;
           break;
          
           case 'M':
           case 'm':
           cout<<"el producto de los numeros es:"<<mult=num1*num2;
           break;.
          
           case 'D':
           case 'd':
           cout<<" la division de los numeros es: "<<div=num1/num2;
           cout<<endl<<"el resto es: "<<resto=num1%num2;
           break;
           default:
           cout<<"la operacion que escogio no es corresta"<<endl;
          }
 system ("pause"); //Error 5 no incluiste la libreria <stdlib.h> para usar system
 return 0;
// Error 6 una divicion puede saltar numeros con coma flotante (float)
}

Esos son los errores que tiene tu código... suerte en solucionarlos...


Título: Re: programa para operaciones múltiples no me corre
Publicado por: halomar en 25 Marzo 2011, 22:10 pm
Hola colegas ya encontré donde estaba mi error ademas de las correcciones que ustedes mi hicieron: primero corregí lo de #include <iostream> luego lo de std::out std::cin y std::endl tercero lo de la suma en realidad tenia la s y S pero por querer saber si el error era por lo de la variable tipo char entonces coloque un numero y aislé el resto del código con el símbolo del comentario (/* */)pero como seguía sin correr volví a colocar las letras pero esta ves por error use la a y A ...
 pero como les digo encontré el problema y estaba en <<suma=num1+num2; lo que hice fue <<num1+num2 y lo mismo con el resto de las operaciones y el programa corrió...
nota1: el libro que uso se llama : "resolución de problemas con c++ el objetivo de la programación" segunda edición Walter Savitch
nota2: el compilador que estoy usando se llama Dev-c++ 4.9.9.2
nota3: este no sale como ejemplo este quise hacerlo usando la funcion swith por lo que si hay muchos errores pues creo que son míos la verdad ya vi que no soy muy bueno programando...
nota4:la función switch si me acepto variable char
nota5: seguí el consejo que me dieron de declarar div como float pero cuando el numerador es mayor que el denominador me sale cero... ¿porqué?
 agradezco a todos los que comentaron ya que según veo son muy buenos en esto de la programación