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

[SOLUCIONADO] Tengo una duda sobre una validación (IF)

Estas en el tema de Tengo una duda sobre una validación (IF) en el foro de C/C++ en Foros del Web. Código: //Entrada de datos for (liContador = 0; liContador < 10; liContador++) { do { printf("Valor #%d: ", liContador + 1); scanf("%d",&liValores[liContador]); if (liValores[liContador] < ...
  #1 (permalink)  
Antiguo 13/03/2015, 10:29
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 5 meses
Puntos: 5
Pregunta Tengo una duda sobre una validación (IF)

Código:
    //Entrada de datos
    for (liContador = 0; liContador < 10; liContador++)
      {
          do
          {
              printf("Valor #%d: ", liContador + 1);
              scanf("%d",&liValores[liContador]);

              if (liValores[liContador] < liValores[liContador - 1])
                printf("\n\tError!, el valor debe ser mayor que el enterior.\n\n");
          } while (liValores[liContador] < liValores[liContador - 1]);
      }
Debo recibir una lista números ordenada. Por lo tanto, deseo validar que el valor ingresado sea mayor que el anterior.

Ej: 1,5,10,2. El número 2 nó es mayor que 10, error!.

El problema es que siempre aparece el mensaje de error desde la primera iteración del FOR. Podría indicarme en qué estoy fallando?.

Saludos!.
  #2 (permalink)  
Antiguo 13/03/2015, 11:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Tengo una duda sobre una validación (IF)

intentas accedes a liValores[-1] (en linux te hubiera dado segmentation fault), obviamente si es el primer elemento no hay elementos anteriores.
  #3 (permalink)  
Antiguo 13/03/2015, 11:42
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Tengo una duda sobre una validación (IF)

Cita:
Iniciado por razpeitia Ver Mensaje
intentas accedes a liValores[-1] (en linux te hubiera dado segmentation fault), obviamente si es el primer elemento no hay elementos anteriores.
hola, gracias por responderme.
y cómo hago para obviar la primera posicion entonces?.
  #4 (permalink)  
Antiguo 13/03/2015, 13:59
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Tengo una duda sobre una validación (IF)

Por ejemplo, lee el primer valor fuera del bucle, e inicia el bucle en 1.
  #5 (permalink)  
Antiguo 13/03/2015, 14:54
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Tengo una duda sobre una validación (IF)

Cita:
Iniciado por Fw190 Ver Mensaje
Por ejemplo, lee el primer valor fuera del bucle, e inicia el bucle en 1.
Buena idea hermano, dejame probarlo ahora mismo.
  #6 (permalink)  
Antiguo 13/03/2015, 14:57
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Tengo una duda sobre una validación (IF)

Hola RGT.

Otra opción:
Código C:
Ver original
  1. {
  2.   ...
  3.   int error;
  4.  
  5.   for (liContador = 0; liContador < 10; liContador++) {
  6.     do {
  7.       printf("Valor #%d: ", liContador + 1);
  8.       scanf("%d", &liValores[liContador]);
  9.       error = liContador > 0 && liValores[liContador] <= liValores[liContador - 1];
  10.       if (error)
  11.         printf("\n\tError!, el valor debe ser mayor que el enterior.\n\n");
  12.     } while (error);
  13.   }
  14.   ...
  15. }

Saludos.
  #7 (permalink)  
Antiguo 13/03/2015, 15:06
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Tengo una duda sobre una validación (IF)

Cita:
Iniciado por ecfisa Ver Mensaje
Hola RGT.

Otra opción:
Código C:
Ver original
  1. {
  2.   ...
  3.   int error;
  4.  
  5.   for (liContador = 0; liContador < 10; liContador++) {
  6.     do {
  7.       printf("Valor #%d: ", liContador + 1);
  8.       scanf("%d", &liValores[liContador]);
  9.       error = liContador > 0 && liValores[liContador] <= liValores[liContador - 1];
  10.       if (error)
  11.         printf("\n\tError!, el valor debe ser mayor que el enterior.\n\n");
  12.     } while (error);
  13.   }
  14.   ...
  15. }

Saludos.
Hola, gracias hermano, tu solucion me gusto mas, mas comoda, no habia pensado en eso, muchisimas gracias!.

Etiquetas: Ninguno
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 19:59.