Quantcast
Channel: Usuario Concord - Stack Overflow en español
Viewing all articles
Browse latest Browse all 5

¿Cómo validar para que solo puedan ingresar datos flotantes y enteros?

$
0
0

Vengo teniendo un problema con la validación de datos de entrada en una calculadora que estoy haciendo. Si bien desarrollé la función para que sólo permita el ingreso de números, sólo me permite ingresar enteros. Estuve buscando por todo internet cómo permitir también el ingreso de números flotantes y no he podido encontrar una solución. El código es bastante largo así que les compartiré sólo el principio hasta la sección de ingreso de datos y también el de la función que lo tengo en una biblioteca a ver si pueden darme una manito.Saludos!

#include <stdlib.h>#include <conio.h>#include <string.h>#include <ctype.h>#include "CalculosAritmeticos.h"int main(){    char primerIngreso[128];    char segundoIngreso[128];    float primerNumero;    float segundoNumero;    float suma;    float resta;    float division;    float producto;    int opcion;    char salir;    int aux1;    int aux2;    primerNumero = 0;    segundoNumero = 0;    salir = 'n';    do{        printf("\n1- Ingresar 1er operando (A = %.2f)\n",primerNumero);        printf("2- Ingresar 2do operando (B = %.2f)\n",segundoNumero);        printf("3- Calcular la suma (A+B)\n");        printf("4- Calcular la resta (A-B)\n");        printf("5- Calcular la division (A/B)\n");        printf("6- Calcular la multiplicacion (A*B)\n");        printf("7- Calcular el factorial (A!)\n");        printf("8- Calcular todas las operaciones\n");        printf("9- Salir\n\n");        printf("Opcion: ");        scanf("%d",&opcion);        switch(opcion)        {            case 1:                do                {                    fflush(stdin);                    printf("\nIngrese el 1er operando: ");                    scanf("%s",primerIngreso);                    aux1 = ValidarNumero(primerIngreso);                }while(aux1 == 0);                primerNumero = atof(primerIngreso);                break;            case 2:                do                {                    fflush(stdin);                    printf("\nIngrese el 2do operando: ");                    scanf("%s",segundoIngreso);                    aux2 = ValidarNumero(segundoIngreso);                }while(aux2 == 0);                segundoNumero = atof(segundoIngreso);                break; **Y este es el código de la función**#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#include <ctype.h>#include "CalculosAritmeticos.h"/** \brief Recibe los datos ingresado y los valida para reconocer si es de tipo numérico o caracter * \param For realiza una iteración donde compara el índice de repeticiones con la longitud de la cadena          e imprime un mensaje de error en caso que no sea un valor entero o de punto flotante y devuelve 0 como valor * \return Retorna 1 en caso que no ingrese en la iteración, validando que el dato ingresado es de tipo numérico */float ValidarNumero(char caracter[]){    int i;    for(i=0; i<strlen(caracter); i++)    {        if(!(isdigit(caracter[i])))        {            printf("\nError. Ingrese solo numeros: \n");            return 0;        }        if (i==strlen(caracter))        {            return 1;        }    }    return 1;} ```

Viewing all articles
Browse latest Browse all 5

Latest Images

Trending Articles





Latest Images