Fandom

Scratchpad

PLE:Unidad4Ejercicio23

219,418pages on
this wiki
Add New Page
Discuss this page0 Share
/*
Programa:         Unidad4Ejercicio23.cpp
Fecha:            25/01/2006
Descripción:      Agenda electrónica.
*/
#include <iostream>
#include <conio>
#include <stdlib>
#include <time>
using namespace std;

struct contacto
{
      char nombre[50];
      char telefono[15];

};

const unsigned int MAX = 50;

char menu();
void inserta(contacto a[], unsigned int &c, char *n, char *t);
void modifica(contacto a[], unsigned int m, char *n, char *t);
void visualiza(contacto a[], unsigned int c);
void ordena(contacto a[], unsigned int c);
void borra(contacto a[], unsigned int &c, unsigned int b);

void main()
{
        contacto agenda[MAX];
        unsigned int numContactos = 0, num;
        char nombre[50], telefono[15];
        char op;

        do
        {
                op = menu();
                switch(op)
                {
                        case 'i':       cout << "Introduzca nombre: ";
                                        cin >> nombre;
                                        cout << "Introduzca telefono: ";
                                        cin >> telefono;
                                        inserta(agenda, numContactos, nombre, telefono);
                                        break;
                        case 'm':       cout << "Introduzca el numero a modificar: ";
                                        cin >> num;
                                        if( num < numContactos)
                                        {
                                                cout << "Introduzca nombre nuevo: ";
                                                cin >> nombre;
                                                cout << "Introduzca telefono nuevo: ";
                                                cin >> telefono;
                                                modifica(agenda, num , nombre, telefono);
                                        }
                                        else
                                        {
                                                cout << endl << "No es posible modificar el elemento indicado ";
                                                cout << endl << "Pulsa una tecla para continuar...";
                                                cin.ignore();
                                                cin.get();
                                        }
                                        break;
                        case 'v':       visualiza(agenda, numContactos);
                                        break;
                        case 'o':       ordena(agenda, numContactos);
                                        break;
                        case 'b':       cout << "Introduzca numero a borrar: ";
                                        cin >> num;
                                        borra(agenda, numContactos, num);
                                        break;
                }
        } while(op != 's'); // se pulsa 's' para salir
}

char menu()
{
        char op;
        clrscr();
        cout << "================= MENU DE OPCIONES =================" << endl << endl;
        cout << "i - Inserta un nuevo contacto en la agenda" << endl;
        cout << "m - Modifica un contacto de la agenda" << endl;
        cout << "b - Borra un contacto de la agenda" << endl;
        cout << "v - Visualiza los contactos de la agenda" << endl;
        cout << "o - ordena los contactos de la agenda" << endl;
        cout << "s - Salir del programa" << endl << endl;
        cout << "Opcion (i, b, m, v, o, s): ";
        cin >> op;
        return op;
}

void inserta(contacto a[], unsigned int &c, char *n, char *t)
{
        strcpy(a[c].nombre, n);
        strcpy(a[c].telefono, t);
        c++;
}

void modifica(contacto a[], unsigned int m, char *n, char *t)
{
        strcpy(a[m].nombre, n);
        strcpy(a[m].telefono, t);
}

void visualiza(contacto a[], unsigned int c)
{
        clrscr();
        cout << "Num.\tNombre\tTelefono" << endl;
        for(unsigned int i = 0; i < c; i++)
                cout << i << '\t' << a[i].nombre << '\t' << a[i].telefono << endl;
        cout << endl << "Pulsa una tecla para continuar...";
        cin.ignore();
        cin.get();
}

void ordena(contacto a[], unsigned int c)
{
        unsigned int i, j, k;
        contacto aux;

        for (i = 0; i < c-1; i++)
        {
	        k = i;
                //aux = a[i];
                strcpy(aux.nombre, a[i].nombre);
                strcpy(aux.telefono, a[i].telefono);
                for (j = i+1; j <= c-1; j++)
                {
	      	        if(strcmp(a[j].nombre,aux.nombre) < 0 )
                        {
			        k = j;
      			        //aux = a[j];
                                strcpy(aux.nombre, a[j].nombre);
                                strcpy(aux.telefono, a[j].telefono);
                        }
                }
                strcpy(a[k].nombre,a[i].nombre);
                strcpy(a[k].telefono,a[i].telefono);
                strcpy(a[i].nombre, aux.nombre);
                strcpy(a[i].telefono, aux.telefono);
        }
}

void borra(contacto a[], unsigned int &c, unsigned int b)
{
        unsigned int i;
        if(b <= c)
        {
                for(i = b; i < c-1 ; i++)
                {
                        strcpy(a[i].nombre, a[i+1].nombre);
                        strcpy(a[i].telefono, a[i+1].telefono);
                }
                c--;
        }
        else
        {
                cout << endl << "No es posible borrar el elemento indicado ";
                cout << endl << "Pulsa una tecla para continuar...";
                cin.ignore();
                cin.get();
        }
}

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random wikia