Dev - C++ - Agenda Virtual

   
Vista:
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 26/12/2014 15:59:01
Buenos días y feliz navidad para todos, me mandaron hacer una agenda virtual en c++ con biblioteca iostream y estoy iniciando en el mundo de la programación quería saber si me podrían dar unos tips de como hacerla, y una última cosa que no entiendo bien como hacerla me dice que antes tiene que tener un código de seguridad, binario de 8 dígitos no entiendo bien está última parte, gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Agenda Virtual

Publicado por Jose Manuel (30 intervenciones) el 26/12/2014 18:14:07
Suponiendo que pidan realmente "un password binario de 8 dígitos", este podría ser simplemente una cadena de 8 caracteres, unos o ceros.

Esto puede implementarse de varios modos, pidiendo una secuencia de unos y ceros, comprobando que la logitud es realmente de 8, rellenando con '0' los restantes, y sacando su correspondencia a decimal para comprobar que el password es correcto.

Lo de una agenda... bueno, eso puede interpretarse de muchos modos. ¿Una agenda de direcciones, telefónica, calendario u otra cosa?

Dependiendo del tipo de agenda se puede enfocar de un modo u otro, y claro, dependiendo del nivel de conocimientos hay herramientas mas o menos potentes para realizarla.

Si me pides una agenda telefonica, o de direcciones y teléfonos lo simple sería crear un struct con los campos que quieres usar para cada entrada, y luego construir el "fichero", ya sea con un array (lo mas sencillo, pero menos eficaz) hasta llegar a usar por ejemplo mapas, listas, vectores... preparar una función de "busqueda" por uno o mas parámetros, etc.

Si es una agenda "dietario" simplemente sería preparar una estructura de strings (por ejemplo) para las horas de un día, y estas en diferentes arrays (o cualquier otra cosa claro)

Esto es un poco "vago" y sin concretar, pero es que con estos datos tampoco podemos orientarte mucho mas.

Lo del pass ya te digo... hacer una petición de entrada (por ejemplo cin), compruebas que la entrada es correcta (uno y ceros y 8 o menos dígitos), rellenas con ceros lo que falta por la izquierda (o no) y preparas una pequeña función para pasar de binario a decimal, o haces la comprobación directamente de string a string, eso a tu gusto.

Estas cosas son para practicar, nadie pretende que salga algo "funcional", para esas cosas hay estructuras de datos mucho mas potentes que las que vienen en la biblioteca iostream (vectores, listas, mapas, etc.)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 26/12/2014 19:22:01
es una agenda virtual pero en la primera fase es cargar datos a la agenda, que sería, el código de seguridad ( binario de 8 digitos) nombre, apellido, número de telefono ( casa), número celular, correo electronico,ciudad,país, con lo del código de seguridad dice " El cliente ha solicitado de nosotros que incluyamos en la agenda digital como método de seguridad la verificación de un código binario antes de poder utilizar este módulo. Se considerará válido el código binario si la suma de los unos (1) de las primeras 4 cifras más significativas es igual a la suma de ceros (0) de las 4 cifras menos significativas del código" , Solo puedo utilizar lo que me han dado que es, if else , switch ,case , iostream , using std , div y mod , entonces tenia pensado algo como
#include <iostream>
#include <string>

using namespace std;

int main ()

{

char : nombre
char: apellido
int : telefono
int : celular
char : email


cout<<" Agregar contacto""<<

switch (choice){
case 1:{
cout<<"Ingrese nombre(s): \n";
break;
cout<<"Ingrese apellido(s): \n";
break;
cout<<"Ingrese telefono: \n";
break;
cout<<"Ingrese celular: \n";
break;
cout<<"Ingrese email: \n";
break;

Ahora con el país, me habian recomendado hacerlo con string, porque tengo que validar que el país este en el disponible ( Venezuela, único país disponible) pero me confunde lo del código de seguridad binario...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Jose Manuel (30 intervenciones) el 26/12/2014 20:42:40
En el caso de practicas a veces es dificil dar recomendaciones, porque lo mismo recomiendas cosas que no se han dado antes.

Yo en un caso como este, tiraría directamente de strings para todo. Un string no es mas que un contenedor de caracteres, puedes verlo como un char de longitud variable.

Por ejemplo:

string nombre;
char[20] nombre;

Funcionan igual, pero en un string no te preocupas por la longitud, esta se ajusta automáticamente (sin contar que string al ser una clase tiene métodos muy útiles)

No se si has dado y te planteas el uso de un struct para los campos, tal que:

1
2
3
4
5
6
7
struct contacto{
    string nombre;
    string apellido;
    string telefono;
    string celular;
    string email;
};

Y luego hacer un arreglo de contactos (no se si has dado esto ya)

Claro, podemos poner enteros para telefonos, pero eso te impide (por ejemplo) separarlos con puntos. Obviamente un telefono también "cabe" en un entero, pero eso es a gustos

Lo del "codigo" asumo que tomamos un byte

"00000000"

Separando dos grupos de 4 bits

"0000" - "0000"

Y si en el primer bloque hay la misma cantidad de 1 que de 0 en la segunda, entonces es válido (si entiendo en enunciado)

Otro tema es si la entrada se haría en binario, decimal... ahi ya no entro

La clase string forma parte de la biblioteca iostream, pero no estoy seguro de si la puedes usar o no (dependiendo obviamente si te la han explicado o no)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 26/12/2014 20:59:35
Entonces me recomiendas que use float en vez de int en el número de telefono? la struct contacto aún no no la han dado, entonces imagino que no la puedo utilizar

sería entonces así,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
 
{
 
 string nombre;
 string apellido;
 string telefono;
 string celular;
 string email;
 
 
 
cout<<" Agregar contacto""<<
cout<<" Modificar contacto<<
cout<<"buscar contacto"<<
cout<<"salir"<<
 
 
switch
case 1:{
 
cout<<"Ingrese nombre(s): \n";
break;
case 2
 
cout<<"Ingrese apellido(s): \n";
break;
cout<<"Ingrese telefono: \n";
 
case 3
break;
cout<<"Ingrese celular: \n";
 
case 4
break;
cout<<"Ingrese email: \n";
break;

si puedo utlizar el switch en este caso? Porque me quede estancado en esta parte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Jose Manuel (30 intervenciones) el 26/12/2014 21:26:55
No, el tipo int puede usarse para almacenar tranquilamente numeros enteros de 9 o 10 cifras sin problemas.

Te sugerí el tipo string porque en ocasiones hay numeros con simbolos, como caso de internacionales, pero creo que eso es rizar el rizo. Usa el tipo int si te resulta mas cómodo.

No es necesario incluir la biblioteca <string>, porque esta forma parte de <iostream>

Struct si no la has dado, no la uses, es simplemente una forma de agrupar diferentes variables en una sola, y darle el nombre que mas te guste.

En el ejemplo anterior por ejemplo, si defines un:

contacto = A

accedes a los diferentes campos con:

A.nombre
A.apellido
A. etc.....

si se hace un arreglo (yo los llamo arrays, pero bueno)

por ejemplo:

contactos datos[50];

accederías como datos[0].nombre, datos[0].apellido, etc....

Si no los has dado, deberías de usar varios arreglos, pongamos de 25 o 50 (por ejemplo), tampoco se de cuantos contactos estamos hablando, y manejarlos separadamente. Es mas o menos lo mismo, solo que un poco menos claro

Sobre el ejemplo, claro que puedes usarlo, no veo problema. Eso si, pon un "default" para el caso en que la opción no se valida.

Puedes manejar luego cada parte con funciones (si las has dado claro), sería lo mas "limpio"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 26/12/2014 22:41:54
No entendí bien lo de los números, sería más o menos como;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
 
{
 
string nombre;
string apellido;
string telefono;
string celular;
string email;
int opc
 
 
cout<<" Agregar contacto""<<;
cout<<" Modificar contacto<< ;
cout<<"buscar contacto"<<;
cout<<"salir"<<;
cout<<"Ingrese la opción que desea "<<;
cin>> opc
 
switch (opc)
case 1:{
 
cout<<"Ingrese nombre(s): \n";
break;
 
case 2
 
cout<<"Ingrese apellido(s): \n";
break;
cout<<"Ingrese telefono: \n";
 
case 3
break;
cout<<"Ingrese celular: \n";
 
case 4
break;
cout<<"Ingrese email: \n";
break;
}
 
return 0;
}
 
 
void agregar_personas () {
cout<<"Introduzca el nombre<<
cin>> nombre;
cout<<" Introduzca el apellido<<
cin>> apellido;
cout<<"Introduzca el telefono<<
cin>> telefono;
cout<<"Introduzca el celular<<
cin>> celular;
cout <<"introduzca el correo"<<
cin>>correo;
 
cout<<"Los datos han sido guardado satisfactoriamente"<<

Está bien así? es necesario poner los números que me dijiste? no lo entendí bien, estaba viendo vídeos en youtube y también ponen números
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Rene gar (50 intervenciones) el 27/12/2014 02:17:25
Te dejo esta version hay montones de forma de hacer lo que quieres y una mucha mejor manera como la que te dejo acontinuacion pero no se cual sea tu nivel de c++ asi intente no hacerlo tan complejo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<iostream>
#include <vector>//esta libreria es para poder usar la clase vector
#include<cstdlib>//esta libreria es para poder limpiar la pantalla
using namespace std;
 
struct Persona{//estruct persona sirve para encapsular las propidades de cada persona
    string nombre;
    string apellido;
    long long telefono;
    string email;
};
 
Persona anadir(){//funcion para añadir una nueva persona a la lista
    Persona p;
    cout<<"ingrese su nombre"<<endl;
    cin>>p.nombre;
    cout<<"ingrese su apellido"<<endl;
    cin>>p.apellido;
    cout<<"ingrese su telefono"<<endl;
    cin>>p.telefono;
    cout<<"ingrese su email"<<endl;
    cin>>p.email;
 
    return p;
}
 
void MostrarAgenda(vector<Persona> agenda){//moestrar todo el contenido
 
    for(int i=0;i<agenda.size();i++){
       cout<<"Nombre: "<<agenda[i].nombre<<" Apellido: "<<agenda[i].apellido<<
       " Telefono: "<<agenda[i].telefono<<" Email: "<<agenda[i].email<<endl;
 
    }
}
 
int main(){
    //revisar la clase vector que utilizamos aqui abajo
  vector<Persona> agenda;//creamos un vector de tipo Persona
  Persona p;
  int opc;
  bool estado=true;
 
while(estado){//el bucle dara vueltas mientras no escogamos salir
  cout<<"Agenda hecha en c++ para lawebdelprogramador"<<endl;
  cout<<"Escoga una opcion"<<endl;
  cout<<endl;
 
  cout<<"1: Agregar contacto"<<endl;
  cout<<"2: Mostrar contactos"<<endl;
  cout<<"3: salir"<<endl;
 
  cin>>opc;
  system("cls");
 
  switch(opc){
  case 1: p=anadir(); agenda.push_back(p); break;//añadimos p que siempre sera una persona difernte al vector
  case 2: MostrarAgenda(agenda);break;
  case 3: estado=false; exit;break;
 
  }
 
  cout<<"\nOpcion termianda de click para continuar"<<endl;
  cin.get();
  cin.get();
  system("cls");//nos limpia la pantalla
}
 
 
return 0;}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 27/12/2014 03:11:39
Gracias, pero aún no puedo saur vectores, mi nivel en C++ es básico muy básico, solo puedo utilizar if else , switch ,case , iostream , using std , div y mod y la biblioteca string

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
 
{
 
string nombre;
string apellido;
string telefono;
string celular;
string email;
int opc
 
 
cout<<" Agregar contacto""<<;
cout<<" Modificar contacto<< ;
cout<<"buscar contacto"<<;
cout<<"salir"<<;
cout<<"Ingrese la opción que desea "<<;
cin>> opc
 
switch (opc)
case 1:{
 
cout<<"Ingrese nombre(s): \n";
break;
 
case 2
 
cout<<"Ingrese apellido(s): \n";
break;
cout<<"Ingrese telefono: \n";
 
case 3
break;
cout<<"Ingrese celular: \n";
 
case 4
break;
cout<<"Ingrese email: \n";
break;
}
 
return 0;
}
 
 
void agregar_personas () {
cout<<"Introduzca el nombre<<
cin>> nombre;
cout<<" Introduzca el apellido<<
cin>> apellido;
cout<<"Introduzca el telefono<<
cin>> telefono;
cout<<"Introduzca el celular<<
cin>> celular;
cout <<"introduzca el correo"<<
cin>>correo;
 
cout<<"Los datos han sido guardado satisfactoriamente"<<

Así como lo estoy haciendo está mal? no me compila..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Jose Manuel (30 intervenciones) el 27/12/2014 12:13:40
Es importante tener las bases masticadas antes de meterse en algunos jardines... un consejo

Las funciones van siempre antes del int main()

¿Porque?... porque el compilador empieza "de arriba a abajo", si encuentra en el main una llamada a una función, y esa función no ha sido declarada anteriormente te va a cascar.

Algunas ideas.

Lo "normal" sería meter todos los datos, no hacer opciones para cada uno. El motivo es simple, tu cuando introduces un contacto, introduces TODOS los datos de una persona, no nombre sin apellido.

Lo suyo sería una función para introducir datos, si uno está en blanco, lo dejas así, sin problemas (es posible que un contacto tenga movil y no fijo o viceversa)

Empieza por algo sencillo y luego ve subiendo a cosas mas complejas.

Nuevamente... primero las bibliotecas, como iostream, fstream , etc...

Luego pones estructuras (cuando pongas estructuras), clases y demás.

Luego van las funciones

Y al final, la función principal, "main"

Y nuevamente, si no pones #include<string> debería de funcionar igual, porque la biblioteca string forma parte de la biblioteca iostream.

Hazte una función para mostrar los datos, siempre es interesante comprobar que la entrada se ha hecho correctamente.

Una vez que tengas claro como hacer una entrada, puedes mirar de hacerlo para mas entradas, con un arreglo por ejemplo

Aunque esto es "fácil" dentro de lo que cabe, yo creo que es mas eficaz hacer pequeños ejercicios "simples" repetidamente para que los conceptos se queden, intentar meterse en un programa mas complejo mientras aún se está empezando me parece un error, los árboles no te dejarán ver el bosque
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Jose Manuel (30 intervenciones) el 27/12/2014 13:27:12
Por cierto, mirando el código... te falta poner algunos ";" por ahi

Al final de la declaración de variables, te dejas un "Int opc" sin ; al final, en el cin posterior también falta, en la última línea tampoco hay

Y has puesto una función (que no creo que funcione) al final, y sin cerrar la llave.

Mirándolo bien, no uses funciones porque tendrás que pasar por parámetros un montón de valores, y es fácil liarse en estos casos. Es por eso que sugerí un "struct", porque facilita mucho estas cosas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 27/12/2014 22:32:24
Podrías darme un ejemplo de como "meter todos los datos", como digo mi nivel es básico muy básico, hay cosas en la que te sigo hay otras en las que no entiendo bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 28/12/2014 17:37:37
La primera fase es agregar personas, pero sin usar estructuras, ni ciclos for, ni while ni do, solo con condicional compuesto y aninado, pero lo hago pero no lee nada, así estara bien ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
 
using namespace std;
 
double codigodeseguridad;
string nombre;
string apellido;
double numerocelular;
double numerocasa;
char correo;
string pais;
string ciudad;
 
 
int main ()
{
 
	cout<<"ingrese el codigo de seguridad"<<endl;
	cin>>codigodeseguridad;
    cout<<"ingrese su nombre"<<endl;
    cin>>nombre;
    cout<<"ingrese su apellido"<<endl;
    cin>>apellido;
    cout<<"ingrese su numero celular"<<endl;
	cin>>numerocelular;
    cout<<"ingrese su numero casa"<<endl;
    cin>>numerocasa;
    cout<<"ingrese su correo"<<endl;
    cin>>correo;
	cout<<"ingrese el pais"<<endl;
	cin>>pais;
	cout<<"ingrese su ciudad"<<endl;
	cin>>ciudad;
 
return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Thanatos (72 intervenciones) el 29/12/2014 05:17:15
Hola Jose Gregorio

He leído todos los mensajes de este tema y me parece que no has explicado muy bien lo que debe hacer el programa. En cada mensaje que publicaste has añadido características que antes no habías mencionado, tanto en el texto de tus mensajes, como en el código que adjuntas. Si no eres preciso al plantear tu pregunta, no obtendrás la respuesta que necesitas.
Algunas cosas que escribiste no quedaron claras, por ejemplo:
Has indicado qué sólo puedes utilizar:

- Las librerías iostream y string.

- Operadores matemáticos (div, mod).

- Estructuras de control condicionales y de selección: if-else y switch.

No has mencionado si puedes utilizar funciones, pero en tu cuarto mensaje, incluiste la función agregar_personas () dentro de tu código.

En el cuarto mensaje que publicaste, también incluiste este código:
1
2
3
4
5
6
cout<<" Agregar contacto""<<;
cout<<" Modificar contacto<< ;
cout<<"buscar contacto"<<;
cout<<"salir"<<;
cout<<"Ingrese la opción que desea "<<;
cin>> opc
Lo que implica que necesitas crear un menú de opciones para el programa. Esto suele implementarse dentro de un bloque iterativo, es decir, utilizando while o do-while, pero aún así, en tu último mensaje indicas que no puedes utilizar ciclos repetitivos.

En tu último mensaje indicaste: "La primera fase es agregar personas [...], pero lo hago pero no lee nada". Ese código sí lee los valores que ingresa el usuario, aunque deberías revisar los tipos de datos que utilizaste:

- Según tu segundo mensaje, la variable codigodeseguridad debe contener un número binario de 8 cifras, con las que necesitas hacer algunas operaciones, me parece que podrías utilizar otro tipo de dato numérico o incluso el tipo string, como te sugirió Jose Manuel.

- La variable correo, tal como la tienes declarada, sólo le permitirá al usuario ingresar un carácter.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Jose Manuel (30 intervenciones) el 29/12/2014 18:39:25
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:

1
2
3
4
5
6
7
8
string nombre[50];
string apellido[50];
double numerocelular[50];
double numerocasa[50];
char correo[50];
string pais[50];
string ciudad[50];
int ncon = 0;

Verás una nueva variable de tipo entero: ncon que inicializo a cero.

Para leer los datos, puedes o bien leerlos indexando estos arreglos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cin>>codigodeseguridad;
    cout<<"ingrese su nombre"<<endl;
    cin>>nombre[ncon];
    cout<<"ingrese su apellido"<<endl;
    cin>>apellido[ncon];
    cout<<"ingrese su numero celular"<<endl;
	cin>>numerocelular[ncon];
    cout<<"ingrese su numero casa"<<endl;
    cin>>numerocasa[ncon];
    cout<<"ingrese su correo"<<endl;
    cin>>correo[ncon];
	cout<<"ingrese el pais"<<endl;
	cin>>pais[ncon];
	cout<<"ingrese su ciudad"<<endl;
	cin>>ciudad[ncon];

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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 29/12/2014 19:56:43
Buenas, revisando lo que han puesto me di cuenta que no he puesto claro lo que tengo que hacer entonce volví a leer el enunciado y me di cuenta de lo que yo había pensado no era como lo suponía, está primera fase es solo cargar contacto, o sea pedir los datos de los contactos validarlos y el código de seguridad, el enunciado dice así; "La primera fase consiste en el Módulo de Carga de Contactos. El programa a desarrollar recibirá una serie de valores los cuales son:
- Código de seguridad (binario de 8 dígitos)
- Nombre
- Apellido
- Número de teléfono
- Número celular
- Correo electrónico
- Ciudad
- País (en esta fase, sólo se considera como país válido Venezuela)
El cliente ha solicitado de nosotros que incluyamos en la agenda digital como método de seguridad la verificación de un código binario antes de poder utilizar este módulo. Se considerará válido el código binario si la suma de los unos (1) de las primeras 4 cifras más significativas es igual a la suma de ceros (0) de las 4 cifras menos significativas del código."

Entonces creo que sería más o menos

#include <iostream>

using namespace std;

double codigodeseguridad;
string nombre;
string apellido;
double numerocelular;
double numerocasa;
char correo;
string pais;
string ciudad;


int main ()
{

cout<<"ingrese el codigo de seguridad"<<endl;
cin>>codigodeseguridad;
cout<<"ingrese su nombre"<<endl;
cin>>nombre;
cout<<"ingrese su apellido"<<endl;
cin>>apellido;
cout<<"ingrese su numero celular"<<endl;
cin>>numerocelular;
cout<<"ingrese su numero casa"<<endl;
cin>>numerocasa;
cout<<"ingrese su correo"<<endl;
cin>>correo;
cout<<"ingrese el pais"<<endl;
cin>>pais;
cout<<"ingrese su ciudad"<<endl;
cin>>ciudad;

return 0;
}

Ya lo demás sería validar que el nombre, apellido,número,ciudad,país están bien escrito y en el disponible (país) eso se puede hacer mediante if y switch no?
un ejemplo sería;
if ( nombre = " ")

{

el nombre es válido
}

else
{
el nombre no es valido
}

sería así o estoy errado ? disculpen mis constante molestía
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Jose Manuel (30 intervenciones) el 29/12/2014 22:50:29
Si, algo así desde luego.

No obstante, un pequeño "truco" que puede aliviarte un poco la cosa.

CIN sirve también como booleano, puedes hacer

while (cin>> nombre == "") {

cout << "El nombre no puede estar vacio" ;

}

No se sale del bucle mientras no se ponga un string válido

De todos modos, cin no admite un "return" como una entrada válida de un string, de modo que eso es innecesario en el fondo, pero ilustra bien una propiedad curiosa de cin (y de otros comandos) que cuando tiene éxito, además devuelve un booleano si está en una estructura como if.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por Thanatos (72 intervenciones) el 30/12/2014 14:39:48
Jose Gregorio, algunas partes de este código podrían ayudarte a aclarar tus dudas. Creo que los nombres de las variables adicionales que utilicé, explican por si mismos la función que cumplen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string codigo("");
    string nombre("");
    string apellido("");
    string telefono("");
    string celular("");
    string correo("");
    string ciudad("");
    string pais("");
 
    int unos(0);
    int ceros(0);
    bool codigoCorrecto(false);
 
    cout << "Ingrese el codigo de seguridad:\ncodigo = ";
    cin >> codigo;
    const bool sonOchoCifras(codigo.size() == 8);
    const bool esNumBinario((codigo.at(0) == '1' || codigo.at(0) == '0') &&
                            (codigo.at(1) == '1' || codigo.at(1) == '0') &&
                            (codigo.at(2) == '1' || codigo.at(2) == '0') &&
                            (codigo.at(3) == '1' || codigo.at(3) == '0') &&
                            (codigo.at(4) == '1' || codigo.at(4) == '0') &&
                            (codigo.at(5) == '1' || codigo.at(5) == '0') &&
                            (codigo.at(6) == '1' || codigo.at(6) == '0') &&
                            (codigo.at(7) == '1' || codigo.at(7) == '0'));
    if (sonOchoCifras && esNumBinario) {
        if (codigo.at(0) == '1') unos++;
        if (codigo.at(1) == '1') unos++;
        if (codigo.at(2) == '1') unos++;
        if (codigo.at(3) == '1') unos++;
 
        if (codigo.at(4) == '0') ceros++;
        if (codigo.at(5) == '0') ceros++;
        if (codigo.at(6) == '0') ceros++;
        if (codigo.at(7) == '0') ceros++;
 
        if (unos == ceros) codigoCorrecto = true;
    }
 
    if (codigoCorrecto) {
        cout << "\nIngrese los datos del contacto:\n";
        cout << "Nombre   = ";
        cin >> nombre;
        cout << "Apellido = ";
        cin >> apellido;
        cout << "Telefono = ";
        cin >> telefono;
        cout << "Celular  = ";
        cin >> celular;
        cout << "Correo   = ";
        cin >> correo;
        cout << "Ciudad   = ";
        cin >> ciudad;
        cout << "Pais     = ";
        cin >> pais;
        if (pais != "Venezuela") {
            cout << "\nSolo se admiten contactos de Venezuela";
        }
    } else {
        cout << "\nEl codigo de verificacion es incorrecto";
    }
}

Como puedes ver, el código se extiende demasiado cuando no se utilizan estructuras, ciclos repetitivos y funciones.
Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jose Gregorio

Agenda Virtual

Publicado por Jose Gregorio (15 intervenciones) el 05/01/2015 19:54:15
Gracias, y si el código no puede ser string? igual?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Agenda Virtual

Publicado por -.- (1 intervención) el 07/01/2015 22:46:15
proyecto 1 ucv venezuela algoritmo y programacion ....hay q preguntarles a los preparadores no uses a la gente para pasar la materia que asi no aprendes cuando te toquen los labs y proyecto 2 y 3 vas a raspar x no saber hacer nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar