Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2013, 05:56
Avatar de Aleix_1379
Aleix_1379
 
Fecha de Ingreso: junio-2013
Mensajes: 3
Antigüedad: 10 años, 10 meses
Puntos: 0
Programa C++ repite codigo

Hola, estoy haciendo este programa con C++
Cita:
1. Escribir un programa que almacene en un array los nombres y números de teléfono
de 2 personas. El programa debe leer los datos introducidos por el usuario y
guardarlos en memoria. Después debe ser capaz de buscar el nombre correspondiente
a un número de teléfono y el teléfono correspondiente a una persona. Ambas
opciones deben se accesibles a través de un menú, así como la opción de salir del
programa. El menú debe tener esta forma, más o menos:
a) Buscar por nombre
b) Buscar por número de teléfono
c) Salir
Pulsa una opción:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. #define MAX 31
  5. #define MP 2
  6.  
  7. using namespace std;
  8. /*-----------------------------------------------------------------------------------------------------------------*/
  9. struct persona {
  10.     char nom[MAX],tel[MAX];
  11.     persona ();
  12. } t[MP];
  13. /*-----------------------------------------------------------------------------------------------------------------*/
  14. char menu ();
  15. void cercar_per_nom ();
  16. void cercar_per_telefon ();
  17. void mostrar_persona (persona p);
  18. void no_trobat (const char p1[],char p2[]);
  19. /*-----------------------------------------------------------------------------------------------------------------*/
  20. int main()
  21. {
  22.     char x;
  23.     do
  24.     {
  25.         x = menu ();
  26.         switch (x)
  27.         {
  28.         case 'a':
  29.             cercar_per_nom ();
  30.             break;
  31.  
  32.         case 'b':
  33.             cercar_per_telefon ();
  34.             break;
  35.         }
  36.     }
  37.     while (x != 'c');
  38.     return 0;
  39. }
  40. /*-----------------------------------------------------------------------------------------------------------------*/
  41. persona::persona()
  42. {
  43.     int i;
  44.     for (i = 0; i < MP; i++)
  45.     {
  46.         cout << "Introdueix el nom i telefon " << " i == " <<i << " < " << MP << " : ";
  47.         cin >> t[i].nom >> t[i].tel;
  48.     }
  49. }
  50. /*-----------------------------------------------------------------------------------------------------------------*/
  51. char menu ()
  52. {
  53.     char x;
  54.     do
  55.     {
  56.         cout << "a) Cercar per nom\nb) Cercar per numero de telefon\nc) Sortir" << endl;
  57.         cin.get(x);
  58.     }
  59.     while (x < 'a' || x > 'c');
  60.     return x;
  61. }
  62. /*-----------------------------------------------------------------------------------------------------------------*/
  63. void cercar_per_nom ()
  64. {
  65.     int i;
  66.     char nom[MAX];
  67.     cout << "Introdueix el nom que vols cercar: ";
  68.     cin >> nom;
  69.     i = 0;
  70.     while (i < MP && strcmp (nom,t[i].nom) != 0) i++;
  71.     if (i == MP) mostrar_persona (t[i]);
  72.     else no_trobat ("nom",nom);
  73.     cin.get();
  74. }
  75. /*-----------------------------------------------------------------------------------------------------------------*/
  76. void cercar_per_telefon()
  77. {
  78.     int i;
  79.     char tel[MAX];
  80.     cout << "Introdueix el telefon pel que vols cercar: ";
  81.     cin >> tel;
  82.     i = 0;
  83.     while (i < MP && strcmp (tel,t[i].tel) != 0) i++;
  84.     if (i == MP) mostrar_persona (t[i]);
  85.     else no_trobat ("telefon",tel);
  86.     cin.get();
  87. }
  88. /*-----------------------------------------------------------------------------------------------------------------*/
  89. void mostrar_persona (persona p)
  90. {
  91.     cout << "Nom: " << p.nom << " Telefon: " << p.tel;
  92. }
  93. /*-----------------------------------------------------------------------------------------------------------------*/
  94. void no_trobat (const char p1[],char p2[])
  95. {
  96.     cout << "No s'ha trobat cap persona amb el " << p1 << " : " << p2;
  97. }
  98. /*-----------------------------------------------------------------------------------------------------------------*/
Primero intento llenar el array con un bucle pero cuando acaba vuelve a empezar.