Autor
|
Tema: Problema al hacer una Agenda Telefonica en C++ (Leído 17,909 veces)
|
Y2J
Desconectado
Mensajes: 10
|
Veran, tengo que hacer una agenda telefonica donde el usuario introduzca el nombre y telefono de 10 personas , luego debe mostrar el menu con 3 opciones: 1) Buscar por nombre 2) Buscar por numero 3) Salir
el problema es que al buscar por nombre o por numero y programa se cuelga pero no me dice que hubo errores, este es el codigo:
#include <iostream> #include <cstdlib> #include <string.h>
using namespace std;
//Prototipos void Leer_Datos(); void Buscar_Nombre(); void Buscar_Numero(); void Salir(); void Imprimir_Nombre(int pos); void Imprimir_Numero(int pos); int Menu(); //void(*Opciones[3])(void);
struct Datos { int Numero; char Nombre[20]; }Persona[10];
void Leer_Datos() { for(int i=0;i<10;i++) { cout<<"Persona "<<i+1<<": "<<endl; cout<<"Ingrese el Nombre: ";cin>>Persona.Nombre; cout<<"Ingrese Numero Telefonico: ";cin>>Persona.Numero; cout<<endl; } }
int Menu() { int opcion; cout<<"Agenda Telefonica"<<endl; cout<<"1) Buscar por Nombre\n2) Buscar por Numero de Telefono\n3) Salir"<<endl; cout<<"Ingrese una opcion: "; cin>>opcion; return opcion; }
void Imprimir_Nombre(int pos) { if(pos<0) cout<<"Dato no encontrado"<<endl; else cout<<Persona[pos].Numero; }
void Imprimir_Numero(int pos) { if(pos<0) cout<<"Dato no encontrado"<<endl; else cout<<Persona[pos].Nombre; }
void Buscar_Nombre() { char dato[20]; cout<<"Ingrese el Nombre: ";cin>>dato; bool seguir=true; int i=0; signed int pos; while(i<10 && seguir) { if(strcmp(Persona.Nombre,dato)==0) //if(strcmp(Persona.Nombre,Dato_Nombre())==0) { seguir=false; pos=i; } } if(seguir) pos=-1; Imprimir_Nombre(pos); }
void Buscar_Numero() { int dato; cout<<"Ingrese Numero de Telefono: ";cin>>dato; bool seguir=true; int i=0; signed int pos; while(i<10 && seguir) { if(Persona.Numero==dato) { seguir=false; pos=i; } } if(seguir) pos=-1; Imprimir_Numero(pos); }
/*void Salir() ////Eliminar { exit(0); }*/
//void(*Opciones[])(void)={Buscar_Nombre, Buscar_Numero, Salir};
int main(int argc, char *argv[]) { int opcion; Leer_Datos(); opcion=Menu(); do{ switch(opcion) { case 1:Buscar_Nombre(); case 2:Buscar_Numero(); } } while(opcion!=3); //(Opciones[opcion-1])(); system("PAUSE"); return 0; } Que estoy haciendo mal???
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola El fallo lo tienes aquí: void Leer_Datos() { for(int i=0;i<10;i++) { cout<<"Persona "<<i+1<<": "<<endl; cout<<"Ingrese el Nombre: ";cin>>Persona.Nombre; cout<<"Ingrese Numero Telefonico: ";cin>>Persona.Numero; cout<<endl; } }
Deberías poner: void Leer_Datos() { for(int i=0;i<10;i++) { cout<<"Persona "<<i+1<<": "<<endl; cout<<"Ingrese el Nombre: ";cin>>Persona[i].Nombre; cout<<"Ingrese Numero Telefonico: ";cin>>Persona[i].Numero; cout<<endl; } }
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Y2J
Desconectado
Mensajes: 10
|
Gracias por tu respuesta hice lo que me dijiste pero al ejecutar el programa cuando pongo 1, osea buscar por nombre luego de escribir el nombre el programa se cuelga y no me dice donde esta el error , lo mismo me pasa cundo pongo para buscar por numero, que esta mal??
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
En esas dos funciones tienes el mismo error que ya te indicaron (debes indicar el indice del elemento al cual quieres acceder).
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola Se me había escapado pero en las 2 funciones de buscar haces lo mismo, te falta poner el índice: Persona[i].Nombre Persona[i].Numero
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Y2J
Desconectado
Mensajes: 10
|
Ya corregi todos los lugares donde me falta poner las indices pero al ejecutar se me cuelga luego de escribir el nombre o numero a buscar, no se que pasa
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Así es muy difícil ayudarte salvo utilizando la bola de cristal o, mejor todavía, la mascara vudú y la gallina.
Publica el código fuente completo de tu programa y lo revisamos.
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola Te falta avanzar el índice cuando no coinciden los resultados: if() ....... else i++;
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Y2J
Desconectado
Mensajes: 10
|
Mother of God!!!!! no puedo creer que se me haya olvidado poner el i++ ese era el problema ahora si me funciona gracias satu y a los demas por su respuesta, esque soy nuevo en c++ y estoy aprendiendo con un libro y un curso de internet. Gracias tios
Saludos
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola
De nada hombre, para eso estamos.
Estoy revisando el código y veo que te faltan los break de cada case del switch. Además deberías meter el menú dentro del do-while si quieres que se muestre más veces.
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como hacer una agenda
PHP
|
cuerty
|
1
|
11,260
|
30 Octubre 2008, 01:17 am
por :ohk<any>
|
|
|
Agenda Telefónica en la Web ...???
Dudas Generales
|
4971231
|
1
|
2,692
|
28 Octubre 2010, 21:13 pm
por [u]nsigned
|
|
|
Agenda telefónica en vbs...!!!
Programación Visual Basic
|
user_foro
|
0
|
1,828
|
16 Agosto 2015, 20:27 pm
por user_foro
|
|
|
Agenda telefonica
Programación C/C++
|
Marsi
|
3
|
3,375
|
4 Junio 2020, 11:17 am
por K-YreX
|
|
|
Agenda telefonica
Programación C/C++
|
roma7776
|
1
|
2,266
|
1 Septiembre 2023, 01:50 am
por Locura_23
|
|