Programación General > C/C++

 Como arreglo este código?

(1/3) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa