Bueno... por partes.
Tu código (el que puedo leer) tiene algunos "peros"
Uno es que declaras variables globales. No tengo nada en contra de ellas, funcionan, se pueden usar, pero excepto en casos estrictamente necesarios, me parece una mala practica. Hay varias razones para ello, algunas personas creen que correctas, y otras que no, pero digamos que el problema de las variables globales es que en caso de error, pueden tener un problema en todo el código... mientras que las locales son de un tratamiento mas simple. Obviamente si hablamos de estructuras y demás, ahí no hay mas remedio.
Tu código... veamos, lo veo "normal"... pides con cout los datos, y los lees con Cin. Los datos deberían de estar leidos correctamente, el problema claro, es que haces luego con ellos.
Olvidate un poco del "código de seguridad", que eso puede implementarse mas tarde, y centremonos en la lectura de un contacto.
Pides unos datos, y los lees con cin. Correcto, ya tienes los datos en una serie de variables. Ahora la cuestión es ¿que hacemos con ellos?
Obviamente guardarlos claro, para eso debes de tener algún sitio donde hacerlo.
Porque, en el momento que leas un segundo contacto, los datos que están en las variables que has leido antes, serán sustituidos por otros.
Necesitas así pues, un lugar donde guardarlos.
Entiende que
yo no lo haria asi, pero te lo sugiero porque para hacerlo de otro modo, hay que usar estructuras y otros contenedores que todavía no conoces.
La idea "simple" es asumir que la lista de contactos tendrá una longitud máxima. Por ejemplo: 50 usuarios. El numero lo pongo de forma arbitraria, en C++ hay mecanismos que te permiten un uso arbitrario de usuarios, pero eso mas adelante.
Como no vas a usar una estructura (eso cuando las conozcas), no te queda otra que asumir que cada dato, debe de estar en un arreglo.
Es decir:
Verás una nueva variable de tipo entero: ncon que inicializo a cero.
Para leer los datos, puedes o bien leerlos indexando estos arreglos
Por ejemplo, y al final incrementar ncon en 1 (ncon++)
Este método es... delicado, como te líes con la variable la liaremos parda.
Otro es usar variables temporales para leer los datos, y luego pasarlos a las definitivas (con una función por ejemplo, aunque va a ser un "cacao" de declaración)
Ni que decir que deberías de tener controles, ya que si vas metiendo contactos, y llegas a tener 50 (ncon = 49) y sigues introduciendo, puedo apostar a que el programa cascará son toda seguridad.
El problema que veo, es que sin el uso de funciones, el programa puede ser bastante ilegible y "feo", pero sin el uso de estructuras, me veo unas declaraciones de variables de risa.
Por cierto, el uso de "char" para el correo no es adecuado, en un carácter obviamente no te cabe una dirección de correo
Intenta de este modo, y prepara una parte del programa que te saque por pantalla el contenido de un contacto, así podrás ir haciendo comprobaciones de que los datos efectivamente se van leyendo