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

Comparación de variables en c

Estas en el tema de Comparación de variables en c en el foro de C/C++ en Foros del Web. Buenas tardes!!!!!!!!!!!!!!!!! Soy relativamente nuevo en esto de la programación mas en el lenguaje C. He tratado de investigar la forma de comprobar que tipo ...
  #1 (permalink)  
Antiguo 03/05/2011, 13:01
 
Fecha de Ingreso: mayo-2011
Mensajes: 10
Antigüedad: 12 años, 11 meses
Puntos: 0
Comparación de variables en c

Buenas tardes!!!!!!!!!!!!!!!!!

Soy relativamente nuevo en esto de la programación mas en el lenguaje C.
He tratado de investigar la forma de comprobar que tipo de dato esta guardado en una variable. Hata ahora he encontrado varias opiniones y las he probado sin ningun resultado satisfactorio.

El programa que estoy realizando es sencillo, el usuario introduce 3 numero y e programa dice cual es el mayor de los 3, fácil y sencillo por ahora, todo esto lo meti en un ciclo Do While para dar la opcion al usuario de repetir las comparaciones hasta que se canse o se cumpla la condicion que lo saque del ciclo.

Ahora, en donde llevaba clases de programación, el maestro siempre nos decia que nuestros programas deben estar habilitados para todos los posibles errores u horrores que un usuario pueda cometer.

Así que intente que si el usuario en vez de meter un numero en la primera vez que se lo pide mete una letra, le madara un mensaje de error y se terminara el programa y asi con cada vez que meta un numero.

Lo hice de la siguiente manera:

if ((num1%num1)!=0) break; //dentro de las operaciones de num1 utilice todos los operadores

/*pero el ciclo no se rompe, ya realice muchas modificaciones al codigo y a veces si me saca el mensaje de error pero me sigue pidiendo los demas datos, encontre que en javascript utilizan lo que es is_numeric, is_string, pero creo que en c no sirve a menos que tenga que incluir alguna libreria para poder utilizarlos */

Agradeceria me ayudara con este problema.

Saludos!!!!!!!!!!!!!!!!!!!!!!!!!
  #2 (permalink)  
Antiguo 03/05/2011, 14:01
 
Fecha de Ingreso: abril-2011
Ubicación: Distrito Federal
Mensajes: 112
Antigüedad: 13 años
Puntos: 17
Respuesta: Comparación de variables en c

Para algo así te conviene tomar las variables como cadena de caracteres, una vez que tienes la variable la validas con una función de C o haces una tuya, te doy un ejemplo, esta devuelve 0 si la cadena tiene caracteres que no son número y 1 si pasa la validación, le falta considerar el uso de punto decimal, comas, espacios o lo que necesites.

Código C:
Ver original
  1. int EsNumero(char *s)
  2. {
  3.     int i;
  4.     for(i = 0; s[i] != 0; i++)
  5.     {
  6.         if(s[i] < '0' || s[i] > '9')
  7.             return 0;
  8.     }
  9.     return 1;
  10. }

Suerte.
  #3 (permalink)  
Antiguo 03/05/2011, 15:06
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 10 meses
Puntos: 9
Respuesta: Comparación de variables en c

no te compliques si utilizas scanf, este retorna cero en caso de que no se leyera correctamente un valor, o el número de valores leidos,


while(scanf("%d", &valor) == 0)
{
printf("Debes escribir un número\n");
fflush(stdin);
}
  #4 (permalink)  
Antiguo 03/05/2011, 17:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 10
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Comparación de variables en c

/* Muchas Gracias jevangelista y dragg04, segui experimentando y tomando en cuenta ambos consejos, al final mi codigo quedo asi, lo ejecuto en Turbo C++ o en Borland0 C++ y corre bien. Bueno ahora sólo me falta habilitar si en la opción al usuario no se le ocurre meter otra cosa diferente de 1 :- | */



/*Programa realizadfo por Mariana Porfiria Gomez Garcia el Domingo 24 de Abril del 2011 a las 22:13*/

#include <stdio.h>
#include <conio.h>


int main (void)

{
int num1=0,num2=0,num3=0,opcion;

printf ("Este programa te pide 3 numeros enteros, los compara y te dice cual es el mayor\n");
getch ();
clrscr ();


do
{
printf ("Introduce el primer numero\n");
scanf ("%d",&num1);

if ( num1 == 0 )
{
num1=0;
break;
}

printf ("Introduce el segundo numero\n");
scanf ("%d",&num2);

if (num2 == 0)
{
num2=0;
break;
}


printf ("Introduce el tercer numero\n");
scanf ("%d",&num3);



if ( num3 == 0 )
{
num3=0;
break;
}


if ((num1>num2)&&(num1>num3))
{
printf ("El primer numero es el mayor (%d)\n",num1);
}
if ((num2>num1)&&(num2>num3))
{
printf ("El segundo numero es el mayor (%d)\n",num2);
}
if ((num3>num1)&&(num3>num2))
{
printf ("El tercer numero es el mayor (%d)\n",num3);
}
printf ("Si quieres continuar introduce un 1 y luego enter\n");
scanf ("%d",&opcion);
num1=0;num2=0;num3=0;

}while (opcion==1);

printf ("Otros caracteres que no sean numeros no son validos\n");
printf ("ADIOS");
return 0;
}
  #5 (permalink)  
Antiguo 03/05/2011, 20:05
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Comparación de variables en c

No entiendo para que adentro de los if igualas num a cero si acabas de chequear si era cero. Es absurdo.
  #6 (permalink)  
Antiguo 03/05/2011, 21:53
 
Fecha de Ingreso: abril-2011
Ubicación: Distrito Federal
Mensajes: 112
Antigüedad: 13 años
Puntos: 17
Respuesta: Comparación de variables en c

Cita:
Iniciado por sam90 Ver Mensaje
No entiendo para que adentro de los if igualas num a cero si acabas de chequear si era cero. Es absurdo.
Es cierto! y si te teclean 0?
  #7 (permalink)  
Antiguo 03/05/2011, 22:02
 
Fecha de Ingreso: abril-2011
Ubicación: Distrito Federal
Mensajes: 112
Antigüedad: 13 años
Puntos: 17
Respuesta: Comparación de variables en c

A tu algoritmo le falta considerar más cosas, como práctica intenta modificar tu programa para que sirva para 10 números, para 100 y te darás cuenta que el método de los IF es poco adecuado.

Cuando llegues al tema de los arreglos vas a poder resolver este problema para cualquier cantidad de números.

Espero que te animes a hacer tu programa a prueba de todo, seguramente alguno de tus compañeros de escuela (creo) va a llegar con una solución sofisticada.

Saludos!

Etiquetas: variables
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 05:08.