Programacion funcional con recursividad
Enviado por carlosmar • 8 de Octubre de 2012 • 1.410 Palabras (6 Páginas) • 339 Visitas
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
using namespace std;
// ESTRUCTURA
struct agenda
{
char nombre[10];
char cedula[30];
char direccion[];
struct agenda *sig;
struct agenda *ant;
};
struct agenda *ppio;
struct agenda *final;
struct agenda *buscar(char *);
// declaracion de las funciones
void portada(void);
void intro(void);
void buscar(void);
void listar(void);
void eliminar(struct agenda **, struct agenda **);
void dl_insert(struct agenda *i, struct agenda **ppio, struct agenda **final);
void leecad(char *, char *, int), mostrar(struct agenda *);
void face();
//funcion principal
int main()
{
face();
ppio = final = NULL;
cout<<"\n";
int op=0;
do
{
cout<<"\n";
cout<<" AGENDA"<<endl;
cout<<"\n";
cout<<"1. portada\n";
cout<<"2. agregar\n";
cout<<"3. eliminar\n";
cout<<"4. mostrar todos\n";
cout<<"5. buscar\n";
cout<<"6. salir\n";
cout<<"Digite la opcion: ";
cin >>op;
switch(op)
{
case 1: portada();//ir a la portada
break;
case 2: intro(); //agregar un registro
break;
case 3: eliminar(&ppio, &final); //eliminar un registro
break;
case 4: listar();//mostrar todos los registros
break;
case 5: buscar();//buscar un registro
break;
case 6: exit(0);
}
}while (op!=5);
system("pause");
}
//definicion de las funciones
void intro(void) //funcion para agresar registros
{
struct agenda *info;
info = (struct agenda *)malloc(sizeof(struct agenda));
if(!info)
{
cout<<endl <<"no hay memoria";
return; }
cout<<"ingrese nombre: "<<endl;
cin>>info->nombre;
cout<<"ingrese cedula: "<<endl;
cin>>info->cedula;
cout<<"ingrese direccion: "<<endl;
cout<<info->direccion;
dl_insert(info, &ppio, &final);
}
void leecad(char *indic, char *s, int cont)
{
char p[255];
do
{
printf(indic);
fgets(p, 254, stdin);
}while(strlen(p) > cont);
p[strlen(p)-1] = 0; //Eliminar el salto de linea
strcpy(s, p);
}
// crear una lista doblemente enlazada
void dl_insert(
struct agenda *i, //nuevo elemento
struct agenda **ppio, //primer elemento de la lista
struct agenda **final //ultimo elemento de la lista
)
{
struct agenda *ant, *p;
if(*final == NULL) //primer elemento de la lista
{
...