Advertisement
davidcastrosalinas

Ejemplo de validación de datos de entrada

Oct 15th, 2020
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <exception>
  4.  
  5. using namespace std;
  6.  
  7. class Rectangulo{
  8. public:
  9.     Rectangulo(int b=0, int a=0):base(b), altura(a){}
  10.  
  11.     int area(){
  12.         return altura * base;
  13.     }
  14.  
  15.     bool setAltura(int valor){
  16.         if(valor > 0 && valor < 100) {
  17.             altura = valor;
  18.             return true;
  19.         }
  20.         cout <<"[error]valor fuera de rango"<<endl;
  21.         return false;
  22.     }
  23.  
  24.     bool setAltura(string valor){
  25.         int tmp = 0;
  26.         try{
  27.             tmp = atoi(valor.c_str());
  28.         } catch (exception &e) {
  29.             return false;
  30.         }
  31.  
  32.         if(tmp > 0 && tmp < 100) {
  33.             altura = tmp;
  34.             return true;
  35.         }
  36.         cout <<"[error]valor fuera de rango"<<endl;
  37.         return false;
  38.     }
  39.  
  40.  
  41.     bool setBase(int valor){
  42.         if(valor > 10 && valor < 40) {
  43.             base = valor;
  44.             return true;
  45.         }
  46.         cout <<"[error]valor fuera de rango"<<endl;
  47.         return false;
  48.     }
  49.  
  50.     bool setBase(string valor){
  51.         int tmp = 0;
  52.         try{
  53.             tmp = atoi(valor.c_str());
  54.         } catch (exception &e) {
  55.             return false;
  56.         }
  57.  
  58.         if(tmp > 0 && tmp < 100) {
  59.             base = tmp;
  60.             return true;
  61.         }
  62.         cout <<"[error]valor fuera de rango"<<endl;
  63.         return false;
  64.     }
  65.  
  66.     bool esCuadrado(){
  67.         return base == altura;
  68.     }
  69.  
  70.  
  71.     int getAltura(){
  72.         return this->altura;
  73.     }
  74.  
  75.     string getAlturaString(){
  76.         return to_string(this->altura);
  77.     }
  78.  
  79.     int getBase(){
  80.         return this->base;
  81.     }
  82.  
  83.     string getBaseString(){
  84.         return to_string(this->base);
  85.     }
  86.  
  87.     string toString(){
  88.         string mensaje = "";
  89.         if(this->esCuadrado())
  90.             mensaje += "El cuadrado de " + getBaseString();
  91.         else
  92.             mensaje += "El Rectangulo de " + getBaseString()+ " x " + getAlturaString()  ;
  93.  
  94.         mensaje += " tiene un area de :" + to_string(this->area());
  95.         return mensaje;
  96.     }
  97.  
  98. private:
  99.     int base;
  100.     int altura;
  101. };
  102.  
  103. #include <limits>
  104.  
  105. int main() {
  106.     int valor = 0;
  107.     Rectangulo t;
  108.     //Ingresos con validación por rango de valor
  109.     do{
  110.         cout<<"ingrese ANCHO: ";
  111.         cin >> valor;
  112.         while (cin.fail()) {// check for input error
  113.  
  114.            cin.clear();
  115.            cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  116.  
  117.            cout << "Error de ingreso. Intente nuevamente:";
  118.            cin >> valor;
  119.         }
  120.     } while(t.setBase(valor) == false);
  121.  
  122.     cin.ignore(numeric_limits<streamsize>::max(), '\n');
  123.  
  124.     //Ingresos de string con validación por rango de valor
  125.     string valorString = "";
  126.     do{
  127.         cout<<"ingrese LARGO: ";
  128.         getline(cin, valorString);
  129.  
  130.     }while(t.setAltura(valorString) == false);
  131.  
  132.     cout << t.toString();
  133.     return 0;
  134. }
  135.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement