Я читал несколько постов на этом веб-сайте о том, как избежать пустых вводов, но все еще не могу заставить его работать, я создал код c ++ для своей домашней работы, и он содержит данные проверки, когда пользователь вводит буквы или цифры, меньшие или равные 0, но если пользователь просто нажал «Enter», он продолжит снижаться, не показывая никакого сообщения. Я пытался использовать! Isdigit,! Isnumber, value.empty, но я не могу заставить условие if работать, когда пользователь просто нажимает «Enter», ничего не печатая.
// Pre Exmen Parte 1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
#include "string"
//esto es para poder usar las ñy acentos
#include "locale.h"
//esto es para mostrar totales con 2 decimales
#include "iomanip"
using namespace std;
int main()
{
//esto es para poder usar las ñy acentos
setlocale(LC_ALL, "spanish");
/*Una persona debe realizar un muestreo con 10 personas para determinar el promedio de peso de los niños, jóvenes, adultos y ancianos
que existen en su zona habitacional. Para ello, conforme encuentra a las personas introduce los datos a su computadora, la cual mediante
un programa las clasifica y despliega los 4 promedios que la persona requiere. Se determinan categorías con base en la siguiente tabla:
CATEGORIA EDAD
Niños 0–12
Jóvenes 13-29
Adultos 30–59
Ancianos 60 en adelante
*/
//Paso 1 , crear variables necesarias para la ejecucion del programa. Las separaremos en bloques para mejor comprension
double
//Variables para niños
sum_peso_nin = 0, total_nin=0, porc_nin=0,
//Variables para jovenes
sum_peso_jov=0, total_jov=0, porc_jov=0,
//Variables para adultos
sum_peso_adul=0, total_adul=0, porc_Adul =0,
//Variables para ancianos
sum_peso_anc=0, total_anc=0, porc_anc=0,
//Variable de Peso general
Peso = 0;
int
//Variable para la edad , debe ser entera
Edad = 0,
//Variable i para el ciclo for
i = 1,
//Variable para que el usuario escoj el tamaño total de la muestra , ejemplo 10
total_muestreo = 0;
string
//variable para ciclo While, debe incializarse con el valor encesario al menos una ve para que entre en el ciclo "While"
Resp = "Si";
//Ciclo While
while (Resp == "Si" || Resp == "si")
{
//El usuario debe especificar que tan grande sera la muestra
cout << "Ingrese el tamaño de la muestra , ejemplo 10: ";
cin >> total_muestreo;
system("cls");
//tenemos que validar que el usuario no ingrese caracteres o especiales , letras o numeros menores o iguales a 0
std::string input;
while (!cin || total_muestreo <= 0)
{
cout << "El valor ingresado no es entero! Intente de nuevo e ingrese el tamaño de la muestra nuevamente: ";
cin.clear();
cin.ignore();
cin >> total_muestreo;
}
//Ya que el programa indica que por ley seran 10 muestreos , utilizaremos el "FOR"
for (i; i <= total_muestreo; i++)
{
//Debemos solicitar al usuario que ingrese la edad y el peso , una vez ingresados deben almacenarse en las variables respectivas
cout << "\nIngrese la edad de la persona " << i << " :";
cin >> Edad;
//tenemos que validar que el usuario no ingrese caracteres o especiales , letras o numeros menores o iguales a 0
while (!cin || Edad <= 0)
{
cout << "El valor ingresado no es entero! Intente de nuevo e ingrese la edad nuevamente: ";
cin.clear();
cin.ignore();
cin >> Edad;
}
cout << "Ingrese el peso en libras de la persona " << i << " :";
cin >> Peso;
//tenemos que validar que el usuario no ingrese caracteres o especiales , letras o numeros menores o iguales a 0
while (!cin || Peso <= 0)
{
cout << "El valor ingresado no es entero! Intente de nuevo e ingrese el peso nuevamente: ";
cin.clear();
cin.ignore();
cin >> Peso;
}
//Debido a que conocemos la edad para las diferentes categorias , podemos utilizar "if" comenzando por el rango de 0 a 12 años
if (Edad > 0 && Edad <= 12) { sum_peso_nin = sum_peso_nin + Peso; total_nin = total_nin + 1; }
else if (Edad > 12 && Edad <= 29) { sum_peso_jov = sum_peso_jov + +Peso; total_jov = total_jov + 1; }
else if (Edad > 29 && Edad <= 59) { sum_peso_adul = sum_peso_adul + +Peso; total_adul = total_adul + 1; }
else if (Edad > 59) { sum_peso_anc = sum_peso_anc + Peso; total_anc = total_anc + 1; }
//
system("cls");
}
cout << "*************************************************************************" << endl;
cout << "* Categoria " << "* Edad " << "* Promedio *" << endl;
cout << "*************************************************************************" << endl;
if (total_nin > 0) { porc_nin = sum_peso_nin / total_nin; cout << "* Niños " << "* 0-12 * " << std::fixed << std::setprecision(2)<<porc_nin <<endl; }
else { cout << "* Niños " << "* 0-12 " << "* No hubieron niños en el muestreo" << " *" << endl; }
if (total_jov > 0) { porc_jov = sum_peso_jov / total_jov; cout << "* Jovenes " << "* 13-29 * " << std::fixed << std::setprecision(2) << porc_jov <<endl; }
else { cout << "* Jóvenes " << "* 13-29 " << "* No hubieron jóvenes en el muestreo" << " *" << endl; }
if (total_adul > 0) { porc_Adul = sum_peso_adul / total_adul; cout << "* Adultos " << "* 30-59 * " << std::fixed << std::setprecision(2) << porc_Adul <<endl; }
else { cout << "* Adultos " << "* 30-59 " << "* No hubieron adultos en el muestreo" << " *" << endl; }
if (total_anc > 0) { porc_anc = sum_peso_anc / total_anc; cout << "* Ancianos " << "* 60 en adelante * " << std::fixed << std::setprecision(2) << porc_anc <<endl; }
else { cout << "* Ancianos " << "* 60 en adelante " << "* No hubieron ancianos en el muestreo" << " *" << endl; }
cout << "*************************************************************************" << endl;
cout <<"Desea tomar otro muestreo? Si o No." << endl;
cin >> Resp;
system("cls");
}
cout << "\n\n";
system("pause");
return 0;
}