Ver Mensaje Individual
  #23 (permalink)  
Antiguo 13/03/2016, 21:45
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: headers, carpetas y menúes c++

Hola eferion, funcionó lo que me dijiste:

Con respecto al ManPersonas.h finalmente me anduvo la validación, tuve que limpiar y generar de nuevo el código, estoy teniendo problemas con el update porque no sé cómo cambiar el elemento cambiado a la lista, así me quedó, pongo la parte en lo que respecta al create y update:

Código C++:
Ver original
  1. bool check(Persona* p){
  2.         if(p != nullptr){
  3.             for(Persona* per : lista){
  4.                 if(per->nom == p->nom){
  5.                     return true;
  6.                 }
  7.             }
  8.         }
  9.         return false;        
  10.     }
  11.     Persona* getRow(int xid){
  12.         for(Persona* p : lista){
  13.             if(p->id == xid){
  14.                 return p;
  15.             }
  16.         }
  17.         return NULL;
  18.     }
  19.     bool create(Persona* p){
  20.         if(check(p)){            
  21.             return false;
  22.         }
  23.         else{
  24.             lista.push_back(p);
  25.             return true;
  26.         }
  27.     }
  28.     bool update(Persona* p){
  29.         Persona* per = getRow(p->id);
  30.         if(per->nom != p->nom){
  31.             if(check(p)){
  32.                 return false;
  33.             }
  34.         }
  35.         //pero acá no sé cómo editar el elemento en la lista
  36.         return true;
  37.     }

Por otro lado te hice caso y pude hacer validación con respecto al numero, pero tanto para validar strings como enteros sucede que si ingreso en ambos una letra y un numero no me funciona la validación, no sé q hacer, te pongo el código de los check y add:

Código C++:
Ver original
  1. bool checkInt(string s){
  2.     for(int i=0; i < s.size(); i++){
  3.         if(s[i] >= 48 and s[i]<= 57) {
  4.             return true;
  5.         }
  6.     }
  7.     return false;
  8. }
  9. bool checkStr(string s){
  10.     for(int i=0; i < s.size(); i++){
  11.         if((s[i] >= 65 and s[i]<= 90) or (s[i] >= 90 and s[i]<= 122)){
  12.             return true;
  13.         }
  14.     }
  15.     return false;
  16. }
  17. string addString(string type){
  18.     int intento = 1;
  19.     string nom = "";    
  20.     while(!checkStr(nom)){
  21.         cout << "\n intento nro "<< intento << " Ingrese " << type <<": ";
  22.         cin >> nom;
  23.         intento++;
  24.     }
  25.     return nom;
  26. }
  27.  
  28. int addInt(string type){
  29.     int intento = 1;    
  30.     string numero;
  31.     while(!checkInt(numero)){
  32.         cout << "\n intento nro "<< intento << " Ingrese " << type <<": ";
  33.         cin >> numero;
  34.         intento++;
  35.     }
  36.     return std::stoi(numero);
  37. }

Agradezco tu ayuda y sugerencias, gracias a tí estoy entiendo un poco más c++.

Espero sus respuestas y saludos