Como se da la Introducción a la programacion practica 2
Enviado por anlo22 • 29 de Abril de 2017 • Práctica o problema • 2.107 Palabras (9 Páginas) • 255 Visitas
INTRODUCCIÓN A LA PROGRAMACIÓN
FASE 3 DEPURAR PROGRAMA
PRÁCTICA 2 - EVALUACIÓN FINAL
PRESENTADO POR
TUTOR
UNIVERSIDAD NACIONAL ABIERTA Y ADISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
DICIEMBRE 2016
INTRODUCCION
En este trabajo se realizan las lecturas de los recursos teóricos correspondientes a la Unidad 3, con el fin de obtener conocimientos e implementarlos para diseñar y desarrollar programas optimizados que solucionan problemas reales de procesamiento de datos utilizando arreglos, matrices y métodos de ordenación y búsqueda en lenguaje C++. Por medio de los diversos conocimientos adquiridos en el transcurso del curso se consigue diseñar y desarrollar programas utilizando vectores, matrices y cadenas.
DESAROLLO DE LA ACTIVIDAD
PROBLEMA
Diseñar un directorio telefónico que incluya nombre y teléfono de N personas tendiendo presente que un número telefónico no se puede repetir. El programa debe permitir ordenar los datos por número telefónico y realizar consulta por nombre.
DISEÑO DE LA SOLUCION
#include
#include
#include
#include
#include
#include
#ifdef __linux__
#include
#include
#define CLEAR_SCREEN "clear"
#define aacute "\xC3\xA1"
#define oacute "\xC3\xB3"
#define uacute "\xC3\xBA"
#define Uacute "\xC3\x9A"
int _getch ();
#else
#include
#define CLEAR_SCREEN "cls"
#define aacute "\240"
#define oacute "\242"
#define uacute "\243"
#define Uacute "\351"
#endif
using namespace std;
class Contacto {
public:
string telefono;
string nombre;
Contacto() {}
~Contacto() {}
bool operator==(const Contacto &contacto) const
{
return this==&contacto || this->telefono==contacto.telefono;
}
bool operator!=(const Contacto &contacto) const
{
return this!=&contacto && this->telefono!=contacto.telefono;
}
bool operator<(const Contacto &contacto) const
{
return this->telefono
}
Contacto& operator=(const Contacto &contacto)
{
if (this!=&contacto)
{
this->telefono = contacto.telefono;
this->nombre = contacto.nombre;
}
return *this;
}
static void imprimir (Contacto &contacto, int *contador);
static void imprimir_en_archivo (Contacto &contacto, ostream *archivo);
};
void pausar (const char *mensaje);
string leer_cadena (const char *mensaje);
int leer_entero (const char *mensaje);
bool leer_campo (istream &archivo, char *campo, char delimitador);
const char *ruta = "contactos.tsv";
int main ()
{
vector
vector
Contacto *dato, contacto;
int contador=0, opcion;
char campo[255];
ifstream entrada (ruta);
if (entrada!=NULL)
{
while (leer_campo (entrada, campo, '\t'))
{
contacto.telefono = campo;
leer_campo (entrada, campo, '\n');
contacto.nombre = campo;
contactos.push_back (contacto);
}
entrada.close();
}
do {
system (CLEAR_SCREEN);
cout << "MEN" Uacute << endl;
cout << "1.- Altas" << endl;
cout << "2.- Consultas" << endl;
cout << "3.- Actualizaciones" << endl;
cout << "4.- Bajas" << endl;
cout << "5.- Ordenar registros" << endl;
cout << "6.- Listar registros" << endl;
cout << "7.- Salir" << endl;
cout << "Seleccione una opci" oacute "n:" << endl;
do
opcion = _getch ();
while (opcion<'1' || opcion>'7');
cout << (char)opcion << endl << endl;
if (contactos.empty() && opcion!='1' && opcion!='7')
{
pausar ("No hay registros.\n");
continue;
}
if (opcion<'5')
{
contacto.telefono = leer_cadena ("Ingrese el telefono del contacto");
i = find (contactos.begin(), contactos.end(), contacto);
dato = i != contactos.end() ? &contactos[i - contactos.begin()] : NULL;
if (dato!=NULL)
{
cout << endl;
Contacto::imprimir (*dato, &contador);
}
}
if (opcion=='1' && dato!=NULL)
cout << "El registro ya existe." << endl;
else if (opcion>='2' && opcion<='4' && dato==NULL)
cout << endl << "Registro no encontrado." << endl;
...