Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: vidalpet en 21 Agosto 2015, 02:13 AM

Título: [Duda]Ayuda Necesito aprender a validar soy Nuevo en progracion [c]
Publicado por: vidalpet en 21 Agosto 2015, 02:13 AM
Buenas noches saludos ten go problema para validcar datos de entradas tengo que hacer un cajero automatico y necesito validar entrada de datos es decir si pido que marque numeros , que el usuario marque numero pues , que si  pido caracter pues coloque caracter que si ingresa algo diferente que mande un mensaje voy a colocar este codigo para que me expliquen con este simple codigo no use switch case , lo hice asi pero AYUDEME tengo ansias de aprender ,

#include <stdio.h>

//Ejercicio 3 del tema "Variables y Operadores Básicos":
//Programa que pida la temperatura en grados Celsius y la convierta a grados
//Fahrenheit (y viceversa) mostrando en pantalla un mensaje del tipo
//"xxx.xx grados Celsius son yyy.yy grados Fahrenheit"


int main(){

float c , f;
int opcion;

//pido datos
printf("para convertir celsius a fahrenheit presione 1\n");
printf("para convertir fahrentir a celsius presione 2\n");

scanf("%d",&opcion);

if (opcion==1){

printf("ingrese los grados celsius:");
scanf("%f",&c);

f=9.0/5.0*c+32.0;
//muestro resultados
printf("%.2f grados celsius son %.2f grados fahrenheit \n\n",c,f);

}


else   {printf("ingrese los grados fahreint :");
scanf("%f",&f);
//implemento formula

c=(f-32.0)*5.0/9.0;


printf("%.2f grados fahreint son %.2f grados celsius \n\n",f,c);
}




return 0;
}


ayudeme a validar las entradas de este codigo para guiarme de los demas codigo que haga si me ayudan agradeceria que DOCUMENTARAS el codigo para saber soy nuevoo


Mod: Los códigos deben ir en etiquetas GeSHi
Título: Re: [Duda]Ayuda Necesito aprender a validar soy Nuevo en progracion [c]
Publicado por: engel lex en 21 Agosto 2015, 03:43 AM
scanf no es util para validar datos, ya que el simplemente trata de capturar lo que hy, sin embargo, un pequeño hack para validad sería


char term;//esto se uesará para validción
float num;//del tipo ue quieras, aquí irá el numero
if(scanf("%f%c", &num, &term) != 2 || term != '\n'){
  printf("invalido\n"); //si es invalido cae aquí
}else{
  printf("numero valido: %f\n", num); //si es valido muestra el numero
}