Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora de ejecucion

Estas en el tema de [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora de ejecucion en el foro de C/C++ en Foros del Web. Actualmente me encuentro desarrollando una calculadora en c. Funciona de manera que si el usuario ingresa un numero, ese numero le indicara al programa que ...
  #1 (permalink)  
Antiguo 04/02/2014, 22:51
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora de ejecucion

Actualmente me encuentro desarrollando una calculadora en c.
Funciona de manera que si el usuario ingresa un numero, ese numero le indicara al programa que operacion matematica ejecutar.
Pero me veo en un tremendo problema debido que a la hora de evaluar el dato que me dira que operacion aritmetica ejecutar quiero al mismo tiempo evaluarlo para que si el dato ingresado no esta definido para ninguna operacion este lo vuelva a pedir.

Que tipo de condicional o comando podria utilizar en ese caso?

Código:
#include<math.h>
#include<stdio.h>
#include<conio.h>
int op,chr,chr2;
float n5,n6,n7;
main()
{
printf("Introduzca el numero correspondinte a la opercaion aritmetica deseada
y luego \npresione Enter\nSi desea realizar una suma esciba 1 \nSi desea realizar 
una resta escriba 2 \nSi desea realizar una multiplicacion escriba 3\nSi desea 
realizar una division escriba 4\nSi desea realizar salir del programa escriba 
5\nAccion a elegir: \n");
      scanf("%d",&op);  
      if (op!=1||op!=2||op!=3||op!4||op!=5)
           {           
          <<<Que linea de codigo seria apropiada¿?>>>
           }
      printf("Inserte el num 1: ");
      scanf("%f",&n5);
      printf("Inserte el num 2: ");
      scanf("%f",&n6);
    
      .
      .
      .
      getch();
      
}
Gracias.
  #2 (permalink)  
Antiguo 05/02/2014, 01:38
 
Fecha de Ingreso: diciembre-2013
Mensajes: 10
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora d

Lo mas recomendable es utilizar un ciclo do while, así primero puedes evaluar una instrucción y después realizar la condición, por ejemplo:

Código C++:
Ver original
  1. do{
  2.           printf("Ingrese opcion: ");
  3.           fflush(stdin);
  4.           scanf("%d",&op);
  5.       }while(op<1 || op>5);

Con las instrucción fflush(stdin) simplemente estoy limpiando el buffer, por si el usuario ingresa alguna letra y no se cicle.

Última edición por codigo_cpp; 05/02/2014 a las 01:40 Razón: comentar función.
  #3 (permalink)  
Antiguo 05/02/2014, 09:15
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora d

o tambien puedes hacer un while y dentro de este un switch.

Código C++:
Ver original
  1. int num;
  2. printf("digite numero",&num);
  3. while(num!=5){
  4. switch(num){
  5. case 1: //realiza suma... y asi en lo sucesivo
  6. }
  7. //en esta parte pides otra vez opcion
  8. }
  #4 (permalink)  
Antiguo 05/02/2014, 09:21
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años, 7 meses
Puntos: 20
Respuesta: [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora d

Cita:
Iniciado por dacroma Ver Mensaje
o tambien puedes hacer un while y dentro de este un switch.

Código C++:
Ver original
  1. int num;
  2. printf("digite numero",&num);
  3. while(num!=5){
  4. switch(num){
  5. case 1: //realiza suma... y asi en lo sucesivo
  6. }
  7. //en esta parte pides otra vez opcion
  8. }
Iba a dar esta misma respuesta, solo que el while lo pondria solo para que el usuario diga si quiere hacer otra operacion o si quiere salir.
Despues en el switch pones los 5 case y al final el case default, entonces si se ingresa una opcion que no esta en ningun case pasa al default, y ahi le pones un mensaje que diga "opcion incorrecta elija otra" y le mostras el menu nuevamente.

Saludos.
  #5 (permalink)  
Antiguo 05/02/2014, 09:41
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora d

O tambien usar un arreglo de punteros a funciones y usar la opcion como indice a ese arreglo

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void opcion0() {
  5.    cout << "Esta es la opcion 0" << endl;
  6. }
  7.  
  8. void opcion1() {
  9.    cout << "Esta es la opcion 1" << endl;
  10. }
  11.  
  12. int main() {
  13.     void (*opciones[])() = { opcion0, opcion1 };
  14.     int opcion = 0;
  15.  
  16.    // Esto deberia estar en un loop para leer la opcion ...
  17.    // y luego usar la funcion correspondiente a la opcion elegida
  18.    opciones[opcion]();
  19.  
  20.    // si la opcion fuera otra...
  21.    opcion = 1;
  22.    // sigue siendo valida la misma expresion
  23.    opciones[opcion]();
  24.  
  25.    // hay que siempre chequear que la opcion elegida esté entre indices
  26.    // validos
  27.    opcion = 50;
  28.    if( opcion >= 0 && opcion < 2 ) {
  29.        opciones[opcion]();
  30.    }
  31.    else {
  32.        cout << "Opcion " << opcion << " no es valida" << endl;
  33.    }
  34. }

Velo en ejecucion aqui: http://goo.gl/J3iRtN


Tal vez es la opcion que te da mas flexibilidad pues separa el main de las funciones mismas.
Puedes cambiar la firma de las funciones para que reciban 1 o mas parametros, por ejemplo.
__________________
Visita mi perfil en LinkedIn
  #6 (permalink)  
Antiguo 06/02/2014, 04:43
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: [AYUDA]Como devolver a una linea de codigo para evitar errorer a la hora d

Todas las respuestas han sido tomadas en cuenta... hora de empezar a aplicarlas.
Gracias!

Etiquetas: devolver, ejecucion, funcion, int, numero, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:52.