Programación General > C/C++
Como arreglo este código?
bermann:
Hola, soy nuevo en c++ y estoy viendo el manual de c.conclase.net, y no he podido resolver este problema:
Tengo este código pero no me funciona :wacko:
--- Código: C++ ---#include <iostream>using namespace std; struct Persona { char Nombre[20]; char Telefono[9]; char* GetNombre() { return Nombre; } char* GetTelefono() { return Telefono; } void SaveNombre(n[20]) { Nombre = n[20]; return; } void SaveTelefono(t[9]) { Telefono = t[9]; return; }}; int main(){ Persona personas[20]; char opc, n[20], t[9]; int npersona = 0; do { cout << "Eliga una opción" << endl << "a) Ingresar una persona" << endl << "b) Buscar por nombre" << endl << "c) Buscar por teléfono" << endl << "d) Salir" << endl; cin >> opc; switch(opc) { case 'a': cout << "Nombre: " << endl; cin >> n; personas[npersona].SaveNombre(n); cout << "Teléfono: " << endl; cin >> t; personas[npersona].SaveTelefono(t); npersona++; break; case 'b': if(not npersona) { cout << "No hay personas" << endl; break; } for(int i = 0; i < npersona; i++) { if(personas[i].GetNombre == personas[npersona].GetNombre) { cout << "Nombre Encontrado:" << endl << "Nombre: " << personas[i].Nombre << endl << "Telefono: " << personas[i].Telefono << endl; } break; } cout << "Nombre no encontrada" << endl; break; case 'c': if(not npersona) { cout << "No hay personas" << endl; break; } for(int i = 0; i < npersona; i++) { if(personas[i].GetTelefono == personas[npersona].GetTelefono) { cout << "Telefono Encontrado:" << endl << "Nombre: " << personas[i].GetNombre << endl << "Telefono: " << personas[i].GetTelefono << endl; } break; } cout << "Telefono no encontrado" << endl; break; case 'd': opc = '0'; break; default: opc = '1'; cout << "Opción no Válida" << endl; break; } }while(opc != '0'); return 0; }
Eternal Idol:
¿Que es lo que no funciona de ese codigo?
bermann:
La verdad no sé simplemente me lanza muchos errores, que no entiendo ya que soy nuevito en esto de C++, trabajo en ubuntu con geany como IDE, lo puedes compilar para ver, porque me lanza muchos errores que no entiendo, si me pudieran ayudar sería genial ;)
Eternal Idol:
Bueno, de a poco:
Cuando quieras pasar cadenas usa char *variable y despues strncpy si tenes un tamaño especifico en el destino, ejemplo:
--- Código: C++ ---void SaveNombre(char *n){ strncpy(Nombre, n, sizeof(Nombre) - 1);}
not es !.
Cuando llamas a un metodo tenes que usar (), aca no lo hiciste:
--- Código: C++ ---if(personas[i].GetNombre == personas[npersona].GetNombre)
Igual las cadenas hay que compararlas con strcmp:
--- Código: C++ ---if(!strcmp(personas[i].GetNombre(), personas[npersona].GetNombre()))
bermann:
Wow, ya me di cuenta, muchas gracias, para usar strncpy tengo que agregar #include <string> cierto?
Una duda más, creo que hay una funcion para comparar cadenas, ya que me lanza un error al ocupar ==. En internet la vi, pero no entendi como se ocupaba.
Navegación
[#] Página Siguiente
Ir a la versión completa