Fandom

Scratchpad

PLE:Unidad5Ejercicio03

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

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

};


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()
{
        unsigned int MAX;
        contacto *agenda;
        unsigned int numContactos = 0, num;
        char nombre[50], telefono[15];

        cout << "Introduzca el numero de elementos ";
        cin >> MAX;

        agenda = new contacto[MAX];

        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