Fandom

Scratchpad

PLE:Unidad5Ejercicio03

216,208pages on
this wiki
Add New Page
Discuss this page0 Share

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.

/*
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();
        }
}

Also on Fandom

Random wikia