Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jeff23 en 26 Octubre 2015, 16:40 pm



Título: Podrían decirme en qué me equivoqué en este fragmento de código?
Publicado por: jeff23 en 26 Octubre 2015, 16:40 pm
Código
  1. void buscar(){
  2.    string val;
  3.    cout<<"digite el nombre a buscar";
  4.    cin>>val;
  5.    for(int i=0; i<miAgenda.size(); i++){
  6.            if(val==miAgenda[i].nombres){
  7.                    cout<<"nombre"<<miAgenda[i].nombres;
  8.            }
  9.            if(val==miAgenda[i].apellidos){
  10.                    cout<<"apellido"<<miAgenda[i].apellidos;
  11.            }
  12.            if(val==miAgenda[i].email){
  13.                    cout<<"correo"<<miAgenda[i].email;
  14.            }
  15.            if(val==miAgenda[i].fijo){
  16.                    cout<<"tel.fijo"<<miAgenda[i].fijo;
  17.            }
  18.            if(val==miAgenda[i].celular){
  19.                    cout<<"tel.cel"<<miAgenda[i].celular;
  20.            }
  21.    }
  22. }
  23.  
  24. int main() {
  25.    int np;
  26.    char op = '0';
  27.  
  28.    while(op < '3'){
  29.         system("CLS");
  30.        menu();
  31.        cin >> op;
  32.        switch(op) {
  33.            case '1':
  34.                        buscar();
  35.                        break;
  36.            case '2':
  37.                        break;
  38.            default:
  39.                cout << "\n\n\tERROR!";
  40.                system("PAUSE");
  41.                op = '0';
  42.        }
  43.    }
  44.    cout << "\n\n\tGracias NOS VEMOS...\n\n";
  45.  
  46.  return 0;
  47. }
  48.  
La cosa es que tengo que hacer una función para buscar datos,ya la hice,pero no me funciona...



Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Podrían decirme en qué me equivoqué en este fragmento de código?
Publicado por: ivancea96 en 26 Octubre 2015, 17:04 pm
La cosa es que tengo que hacer una función para buscar datos,ya la hice,pero no me funciona...

¿Qué no funciona? ¿Tira error? ¿No busca bien? Cual es el problema.


Título: Re: Podrían decirme en qué me equivoqué en este fragmento de código?
Publicado por: jeff23 en 27 Octubre 2015, 01:45 am
El código se ejecuta,pero no funciona,osea,es como si ignorara ese fragmento


Título: Re: Podrían decirme en qué me equivoqué en este fragmento de código?
Publicado por: jeff23 en 27 Octubre 2015, 02:02 am
Aquí está el código completo:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. struct Persona{
  9.    string nombres;
  10.    string apellidos;
  11.    char celular[10];
  12.    char fijo[7];
  13.    string email;
  14.  
  15. };
  16. vector<Persona> miAgenda;
  17.  
  18. void menu(){
  19.    cout<< "\n\tMENU PRINCIPAL";
  20.    cout<< "\n\t1. Entrada de datos";
  21.    cout<< "\n\t2. Mostrar datos";
  22.    cout<< "\n\t3. Salir del programa";
  23.    cout<< "\n\t4. Buscar datos";
  24.    cout<< "\n\tEscoja opcion ";
  25. }
  26.  
  27. void entrarDatos(){
  28.    Persona p;
  29.  
  30.    cout<<"\n\tDigite su Nombres: ";
  31.    cin>>p.nombres;
  32.    cout<<"\n\tDigite su Apellidos: ";
  33.    cin>>p.apellidos;
  34.    cout<<"\n\tDigite su correo: ";
  35.    cin>>p.email;
  36.    cout<<"\n\tDigite su Telefono Fijo: ";
  37.    cin>>p.fijo;
  38.    cout<<"\n\tDigite su Telefono: celular ";
  39.    cin>>p.celular;
  40.  
  41.    miAgenda.push_back(p);
  42. }
  43.  
  44. void mostrarDatos(){
  45.  
  46.    cout<<"\n\t====== Agenda ======";
  47.    for(int i=0; i<miAgenda.size();i++){
  48.        cout<<"\n\tNombre : "<<miAgenda[i].nombres;
  49.        cout<<"\n\tApellidos : "<<miAgenda[i].apellidos;
  50.        cout<<"\n\tCorreo : "<<miAgenda[i].email;
  51.        cout<<"\n\tTel.Fijo : "<<miAgenda[i].fijo;
  52.        cout<<"\n\tTel.Cel : "<<miAgenda[i].celular;
  53.        cout<<"\n\t------------------------------------";
  54.    system("pause");
  55.    }
  56. }
  57.  
  58. void buscar(){
  59.    string val;
  60.    cout<<"digite el nombre a buscar";
  61.    cin>>val;
  62.    for(int i=0; i<miAgenda.size(); i++){
  63.            if(val==miAgenda[i].nombres){
  64.                    cout<<"nombre"<<miAgenda[i].nombres;
  65.            }
  66.            if(val==miAgenda[i].apellidos){
  67.                    cout<<"apellido"<<miAgenda[i].apellidos;
  68.            }
  69.            if(val==miAgenda[i].email){
  70.                    cout<<"correo"<<miAgenda[i].email;
  71.            }
  72.            if(val==miAgenda.fijo){
  73.                    cout<<"tel.fijo"<<miAgenda[i].fijo;
  74.            }
  75.            if(val==miAgenda[i].celular){
  76.                    cout<<"tel.cel"<<miAgenda[i].celular;
  77.            }
  78.    }
  79. }
  80.  
  81. int main() {
  82.    int np;
  83.    char op = '0';
  84.  
  85.    while(op < '3'){
  86.         system("CLS");
  87.        menu();
  88.        cin >> op;
  89.        switch(op) {
  90.            case '1':
  91.                        entrarDatos();
  92.                        break;
  93.            case '2':
  94.                        mostrarDatos();
  95.                        break;
  96.            case '3':
  97.                        buscar();
  98.                        break;
  99.            case '4':
  100.                        break;
  101.  
  102.            default:
  103.                cout << "\n\n\tERROR!";
  104.                system("PAUSE");
  105.                op = '0';
  106.        }
  107.    }
  108.    cout << "\n\n\tGracias NOS VEMOS...\n\n";
  109.  
  110.  return 0;
  111. }
  112.  


Título: Re: Podrían decirme en qué me equivoqué en este fragmento de código?
Publicado por: ivancea96 en 27 Octubre 2015, 09:54 am
Debes aprender a encontrar los errores.
Te doy unas pautas:
  • En caso de error en tiempo de ejecución:
    Localiza la línea o función que tira el error. Para ello, puedes colocar salidas por pantalla en varias partes del código. En el momento en que una salida no se represente, significa que el error está entre la última salida, y la que no se vió. Evidente, ¿no?
  • En caso de código "que no hace nada":
    Este caso se suele dar generalmente, en 1 de estas 2 ocasiones: o código que realmente no hace nada, por algún error al escribirlo, o código que no se llega a ejecutar. En el segundo caso, que tal vez sea el tuyo, verifica que las condificones o bucles que haya son correctas (Es posible que una condición sea errónea). La técnica de las salidas por pantalla funciona bien ahí también.

Con esto te quiero decir, que te va a ser más fácil a ti buscar el error, que a los demás. No tires la toalla, y sigue buscando. Analiza el código bloque a bloque, hasta ver exactamente qué falla.