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#include <iostream>
#include <string.h>
#define MAX 31
#define MP 2
using namespace std;
/*-----------------------------------------------------------------------------------------------------------------*/
struct persona {
char nom[MAX],tel[MAX];
persona ();
} t[MP];
/*-----------------------------------------------------------------------------------------------------------------*/
char menu ();
void cercar_per_nom ();
void cercar_per_telefon ();
void mostrar_persona (persona p);
void no_trobat (const char p1[],char p2[]);
/*-----------------------------------------------------------------------------------------------------------------*/
int main()
{
char x;
do
{
x = menu ();
switch (x)
{
case 'a':
cercar_per_nom ();
break;
case 'b':
cercar_per_telefon ();
break;
}
}
while (x != 'c');
return 0;
}
/*-----------------------------------------------------------------------------------------------------------------*/
persona::persona()
{
int i;
for (i = 0; i < MP; i++)
{
cout << "Introdueix el nom i telefon " << " i == " <<i << " < " << MP << " : ";
cin >> t[i].nom >> t[i].tel;
}
}
/*-----------------------------------------------------------------------------------------------------------------*/
char menu ()
{
char x;
do
{
cout << "a) Cercar per nom\nb) Cercar per numero de telefon\nc) Sortir" << endl;
cin.get(x);
}
while (x < 'a' || x > 'c');
return x;
}
/*-----------------------------------------------------------------------------------------------------------------*/
void cercar_per_nom ()
{
int i;
char nom[MAX];
cout << "Introdueix el nom que vols cercar: ";
cin >> nom;
i = 0;
while (i
< MP
&& strcmp (nom
,t
[i
].
nom) != 0) i
++; if (i == MP) mostrar_persona (t[i]);
else no_trobat ("nom",nom);
cin.get();
}
/*-----------------------------------------------------------------------------------------------------------------*/
void cercar_per_telefon()
{
int i;
char tel[MAX];
cout << "Introdueix el telefon pel que vols cercar: ";
cin >> tel;
i = 0;
while (i
< MP
&& strcmp (tel
,t
[i
].
tel) != 0) i
++; if (i == MP) mostrar_persona (t[i]);
else no_trobat ("telefon",tel);
cin.get();
}
/*-----------------------------------------------------------------------------------------------------------------*/
void mostrar_persona (persona p)
{
cout << "Nom: " << p.nom << " Telefon: " << p.tel;
}
/*-----------------------------------------------------------------------------------------------------------------*/
void no_trobat (const char p1[],char p2[])
{
cout << "No s'ha trobat cap persona amb el " << p1 << " : " << p2;
}
/*-----------------------------------------------------------------------------------------------------------------*/
Primero intento llenar el array con un bucle pero cuando acaba vuelve a empezar.