| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
mapachexxx
Registrado: 05 Abr 2014 Mensajes: 2
| Publicado: 05/04/2014 9:29 pm | | | Título: Validador de correo |
| Hola!! Necesito hacer un validador de correos que tenga mas de 8 caracteres y que lleve @gmail.com al final que no se pueda repetir ni @ ni el gmail.com y que nada este despues de @gmail.com esto es lo que llevo ya no se que hacer
#include <iostream> #include <string.h>
using namespace std;
int main() { string email; string nvalid = "!#$%&/()=?¡,;|_ñ,Ñ"; cout << "Dame tu Email"<<endl; cin>>email; int v1=0, v2=0, v3=0, pos, j;
for (j=0; j<=nvalid.length();j++) { pos = email.find(nvalid[j]); if(pos >=0) { cout<<"Caracteres Invalidos"<<endl; break; }else{v1=1;} } pos=email.find("@"); if (pos>7); { v2=1;}
pos=email.find("gmail.com"); if (pos>=9) { v3=1; }
if (v1==1 && v2==1 && v3==1 && j>=18 ){ cout<<"Es un correo valido de Gmail"<<cont<<endl; } else{ cout<<"No es un correo valido de Gmail"<<cont<<endl; } return 0; }
Les agradeceria mucho su ayuda. |
| | Volver arriba | |  | daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 06/04/2014 12:11 pm | | | Título: |
| Buenas.
Una manera de resolverlo, sería así:
* Contar cuantas veces existe el caract. arroba. -- Permitir continuar si sólo existe una vez.
* Buscar el dominio(gmail.com). -- Si lo que existe antes del domino es menor que 8 terminar. -- Si existe al menos 1 caract. después del dominio, terminar.
Ejemplo:
| Código: | #include <iostream> #include <string> #include <algorithm>
int main() { std::string direccion; const std::string dominio("gmail.com");
std::cout << "Ingrese dirección de correo: "; std::cin >> direccion;
if ( 1 != std::count(direccion.begin(), direccion.end(), '@') ) { std::cout << "Error, @ +1 vez o no existe ninguno." << std::endl; // Si quieres determinar cual de los 2 errores, guarda el resultado de count. return 0; }
const size_t pos = direccion.find(dominio);
if ( pos == std::string::npos || // si no encontro el dominio ... // .. o si encontro el dominio pero contiene +caracteres: @gmail.comXZY (dominio.length() != direccion.end() - (direccion.begin() + pos) ) ) { std::cout << "Error, dominio no encontrado: " << dominio << std::endl; } else if ( pos < 8 ) // si lo que sobra es menor que 8 { std::cout << "Error, dirección < 8 caract." << std::endl; } }
|
Habría que testearlo. Saludos. |
| | Volver arriba | |  | mapachexxx
Registrado: 05 Abr 2014 Mensajes: 2
| Publicado: 07/04/2014 10:00 am | | | Título: Gracias daltomi |
| Me sirvio de mucho tu ejemplo aqui esta como me quedo
| Código: | #include <iostream> #include <string> #include <algorithm>
using namespace std;
int main() { string email; string nvalid = "!#$%&/()=?¡,;|_ñ,Ñ"; const string dominio("gmail.com"); cout << "Dame tu Email"<<endl; cin>>email; int v1=0, v2=0, v3=0, pos, j, i, arr=0;
for (int i = 0; i < email.length(); i++){ email[i]; if (email[i] == char(64)){ arr++; } }
for (j=0; j<=nvalid.length();j++) { pos = email.find(nvalid[j]); if(pos >=0) { cout<<"Caracteres Invalidos"<<endl; break; }else{v1=1;} } pos=email.find("@"); if (pos>7); { v2=1;}
pos=email.find("gmail.com"); if (pos>=9) { v3=1; }
if (dominio.length() != email.end() - (email.begin() + pos)){ cout<<"No es un correo valido de Gmail"<<endl; } else{
if (v1==1 && v2==1 && v3==1 && j>=18 && arr==1){ cout<<"Es un correo valido de Gmail"<<endl; } else{ cout<<"No es un correo valido de Gmail"<<endl; } } return 0; }
| [/code]
 |
| | Volver arriba | |  | | daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 07/04/2014 4:09 pm | | | Título: |
| Algunos detalles.
Podrías reemplazar el bucle para detectar caracteres no válidos por una sola línea con find_first_of. Nota que si quitas el bucle, j>=18 fallará más adelante.
| Código: | pos = email.find_first_of(nvalid); if ( pos != string::npos ) { cout << "Caracteres Invalidos" << endl; }else{v1=1;}
|
También esto:
| Código: | for (int i = 0; i < email.length(); i++){ email[i]; <- sin operación. ... }
|
|
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |