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

Duda Operador &&

Estas en el tema de Duda Operador && en el foro de C/C++ en Foros del Web. Hola a todos, estoy iniciandome en la programacion y tengo unos programas que no termino de hacer funcionar: bueno voy a pegar solo el trozo ...
  #1 (permalink)  
Antiguo 05/10/2010, 15:48
 
Fecha de Ingreso: octubre-2010
Ubicación: madrid
Mensajes: 10
Antigüedad: 7 años, 2 meses
Puntos: 0
Busqueda Duda Operador &&

Hola a todos, estoy iniciandome en la programacion y tengo unos programas que no termino de hacer funcionar:

bueno voy a pegar solo el trozo necesario. el programa es una calculadora:

double resultado;
double operando;
double operando2;
int operador = 0;
cout << endl;
cout << " Bienvenido al programa calculadora" << endl;
cout << endl;
cout << " Seleccione la operacion deseada " << endl;
do
{
cout << "1.Suma" << endl;
cout << "2.Resta" << endl;
cout << "3.Multiplicacion" << endl;
cout << "4.Division" << endl;
cin >> operador;
system("CLS");
if (operador < 1 && operador > 4)
cout << endl;
cout << endl;
cout << "No esta disponible esa opcion. Por favor, vuelva a intentarlo" << endl;
cout << endl;
}
while
(operador >= 1 && operador <= 4);
system("CLS");
cout << endl;
cout << endl;


e marcado en amarillo las lineas que me dan fallo. haber yo e supuesto que si operador es menor que 1 y mayor que 4, es que se a tecleado una opción incorrecta por lo que sale el mensaje:

"no esta disponible esa opción. por favor, vuelva a intentarlo"

entonces el bucle se repite. en caso de que operador sea mayor o igual que 1 y menor o igual que 4, se abra tecleado una opción correcta, por lo que el bucle termina y da paso a un switch con los programas de operaciones....pero eso es otra historia lo que no entiendo es por que no funcionan estas dos operaciones.

haber si alguien puede aclarármelo, lo agradeceria. Necesito hace rel programa con estos operandos, ya que se que hay mas formas pero el ejercicio es así.

gracias de nuevo
  #2 (permalink)  
Antiguo 05/10/2010, 15:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 12 años, 8 meses
Puntos: 1360
Respuesta: Duda Operador &&

Código:
if (operador < 1 || operador > 4) //Si operador menor a 1 O operador mayor a 4
...
while (operador < 1 || operador > 4)
  #3 (permalink)  
Antiguo 05/10/2010, 16:04
 
Fecha de Ingreso: octubre-2010
Ubicación: madrid
Mensajes: 10
Antigüedad: 7 años, 2 meses
Puntos: 0
Respuesta: Duda Operador &&

pero desde mi ignorancia te hago esta pregunta:

or con que se cumpla una de las dos condiciones es true. en mi caso se deben cumplir las dos, por eso puse and.

es decir tiene q ser un numero entre 1 y 4. por lo que doy dos condiciones para acerlo:
mayor o igual que 1 y menor o igual que 4.

se deben cumplir las 2 para q el numero sea un numero; 1, 2, 3 o 4.

si utilizo OR:

mayor o igual que 1 y menor o igual que 4.
lo que significa q si cumple una de las opciones da true??
es decir 5 es mayor que 1...

gracias
  #4 (permalink)  
Antiguo 05/10/2010, 16:28
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Duda Operador &&

la correccion de razpeitia es correcta ya que se necesita que alguna de las dos condiciones no se cumplan para que se incorrecta asi si opcion es menor que uno o opcion es mayor que cuatro la opcion es incorrecta.

Pero ademas debes añadir parentesis aqui
if (operador < 1 && operador > 4)
{
cout << endl;
cout << endl;
cout << "No esta disponible esa opcion. Por favor, vuelva a intentarlo" << endl;
cout << endl;
}
con la correccion propuesta por razpeitia
  #5 (permalink)  
Antiguo 05/10/2010, 16:30
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 7 años, 7 meses
Puntos: 228
Respuesta: Duda Operador &&

Pasa que para encerrar un numero entre dos valores, en un intervalo acotado funciona usar el and. Pero pensa lo siguiente vos queres un numero que sea menor a uno y mayor a 4 al mismo tiempo. Ese numero nunca va a existir.

En este caso vos necesitas que se cumpla alguna de las dos opciones. Es como una union de los dos intervalos.

En cambio cuando buscas que un numero en el intervalo 1,4 usas el and que seria como una interseccion entre dos intervalos: 1,+infinito y -infinito,4.

Espero que entiendas un poco la explicacion.
  #6 (permalink)  
Antiguo 06/10/2010, 13:56
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 7 años, 2 meses
Puntos: 9
Respuesta: Duda Operador &&

Código:
    double resultado;
    double operando;
    double operando2;
    int operador = 0;
    cout << endl;
    cout << " Bienvenido al programa calculadora" << endl;
    cout << endl;
    cout << " Seleccione la operacion deseada " << endl;
    do
    {  
        cout << "1.Suma" << endl; 
        cout << "2.Resta" << endl;
        cout << "3.Multiplicacion" << endl;
        cout << "4.Division" << endl;
        cin >> operador;
        system("CLS");
        if (operador < 1 && operador > 4)
            cout << endl;
            cout << endl;
            cout << "No esta disponible esa opcion. Por favor, vuelva a intentarlo" << endl;
            cout << endl;
    }while (operador >= 1 && operador <= 4);
    system("CLS");
    cout << endl;
    cout << endl;
Bueno aqui tienes dos problemas. el primero es que el segmento de if no esta bien delimitado, utiliza llaves para encerrar todo lo que quieras que se incluya dentro del if. y el segundo es que tus condiciones estan mal formuladas, digamos si yo quisiera entrar en el if deberia tener un numero que fuera menor que uno pero a la vez mayor que 4, lo cual es imposible. Ademas te falta que en caso de una opcion incorrecta te vuelva a pedir un valor para "operador". bueno aqui un ejemplo sencillo de como se debe hacer.
Código:
#include <stdio.h>


int main(){
  int opcion;
  printf("Que operacion desea hacer\n");
  printf("1.Sumar\n");
  printf("2. Restar\n");
  printf("3. Multiplicar\n");
  printf("4. Dividir\n");
  printf("Que desea hacer? ");
  scanf("%i", &opcion);
  fflush(stdin);
  while(opcion < 1 || opcion > 4){
    printf("Opcion incorrecta!\n");
    printf("Digite otra opcion: ");
    scanf("%i", &opcion);
    fflush(stdin);
  }
  switch(opcion){
  case 1:
    printf("Aqui va el codigo de la suma\n");
    break;
  case 2:
    printf("Aqui va el codigo de la resta\n");
    break;
  case 3:
    printf("Aqui va el codigo de la multiplicacion\n");
    break;
  case 4:
    printf("Aqui va el codigo de la division\n");
    break;
  }
  return 1;
}

Etiquetas: calculadora, operador, 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 00:16.