none
Validar numero entero positivo RRS feed

  • Pregunta

  • hola buenos dias una pregunta como puedo validar si un numero es entero positivo es que me dejaron hacer un programa donde ongresas n numeros y solo tiene que aceptar puro entero positivo pero cuando le meto decimal ya da error solo esta protegido con numeros negativos, del cero y arriva de 100 pero en decimales ya da error  les dejo mi codigo espero me puedan ayudar 


    • Editado IVANTO534 martes, 18 de octubre de 2016 2:02
    lunes, 17 de octubre de 2016 14:11

Respuestas

  • No sé si entiendo... podría ser algo así

    #include "stdafx.h"
    #include <iostream>
    
    int main()
    {
    	int n = 0;
    	double A[100] = {0};
    
    	std::cout << "Ingrese la Cantidad de Numeros a obtener: ";
    	while (!(std::cin >> n).good() || n >= 100 || n <= 0)
    	{
    		std::cin.clear();
    		std::cin.ignore(1000, '\n');
    		std::cout << "Sigue participando ";
    	}
    
    	std::cin.clear();
    	std::cin.ignore(1000, '\n');
    
    	std::cout << n << std::endl;
    	for (int i = 1; i <= n; i++)
    	{
    		std::cout << " Numero " << i << " :";
    		while (!(std::cin >> A[i]).good())
    		{
    			std::cin.clear();
    			std::cin.ignore(1000, '\n');
    			std::cout << "Sigue participando ";
    		}
    	}
    
    		return 0;
    }
    

    Si te refieres a la extracción de <n>, cuando en el stream escribes "50.54", n pasa a valer 50 y en el stream se conserva el ".54\n"

    ¿De eso estás hablando?

    • Marcado como respuesta IVANTO534 lunes, 17 de octubre de 2016 15:35
    lunes, 17 de octubre de 2016 14:43

Todas las respuestas

  • No sé si entiendo... podría ser algo así

    #include "stdafx.h"
    #include <iostream>
    
    int main()
    {
    	int n = 0;
    	double A[100] = {0};
    
    	std::cout << "Ingrese la Cantidad de Numeros a obtener: ";
    	while (!(std::cin >> n).good() || n >= 100 || n <= 0)
    	{
    		std::cin.clear();
    		std::cin.ignore(1000, '\n');
    		std::cout << "Sigue participando ";
    	}
    
    	std::cin.clear();
    	std::cin.ignore(1000, '\n');
    
    	std::cout << n << std::endl;
    	for (int i = 1; i <= n; i++)
    	{
    		std::cout << " Numero " << i << " :";
    		while (!(std::cin >> A[i]).good())
    		{
    			std::cin.clear();
    			std::cin.ignore(1000, '\n');
    			std::cout << "Sigue participando ";
    		}
    	}
    
    		return 0;
    }
    

    Si te refieres a la extracción de <n>, cuando en el stream escribes "50.54", n pasa a valer 50 y en el stream se conserva el ".54\n"

    ¿De eso estás hablando?

    • Marcado como respuesta IVANTO534 lunes, 17 de octubre de 2016 15:35
    lunes, 17 de octubre de 2016 14:43
  • si mas o menos ya que cuando pido los numeros a calcular y meto decimal me da error y se me cierra pero ahora como puedo implementar ese codigo a el mio ya que lo intente pero me da error espero me puedas ayudar soy nuevo en esto 
    lunes, 17 de octubre de 2016 15:28
  • bro y otra duda si no es mucha molestia cuando ya estas ingresando los numeros osea cuando ya te pide la camtidad de numeros y le das 5 por ejemplo te pide ingresar 

    numero 1

    numero 2

    numero 3

    numero 4

    numero 5 

    esn esto solo quiero que acepte puro numero positivo tanto entero como decimal como le aria 

    lunes, 17 de octubre de 2016 15:41
  • void primero()
    {
    	std::cout << "Ingrese la Cantidad de Numeros a obtener: ";
    	while (!(std::cin >> n).good() || n >= 100 || n <= 0)
    	{
    		std::cin.clear();
    		std::cin.ignore(1000, '\n');
    		std::cout << "El Numero NO entra en el parametro debe ser mayor a 1 " << std::endl;
    		std::cout << "***" << std::endl;
    		std::cout << "---" << std::endl;
    		std::cout << "***" << std::endl;
    		std::cout << "Ingrese la Cantidad de Numeros a obtener: ";
    	}
    
    	std::cin.clear();
    	std::cin.ignore(1000, '\n');
    
    	for (int i = 1; i <= n; i++)
    	{
    		std::cout << " Numero " << i << " :";
    		while (!(std::cin >> A[i]).good() || A[i] < 0)
    		{
    			std::cin.clear();
    			std::cin.ignore(1000, '\n');
    			std::cout << "El número debe ser un real positivo" << std::endl;
    			std::cout << " Numero " << i << " :";
    		}
    		std::cin.clear();
    		std::cin.ignore(1000, '\n');
    	}
    }
    

    lunes, 17 de octubre de 2016 16:09