elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:32  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  mostrar contactos de una agenda por equipo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: mostrar contactos de una agenda por equipo  (Leído 247 veces)
attackers

Desconectado Desconectado

Mensajes: 37


Ver Perfil
mostrar contactos de una agenda por equipo
« en: 24 Noviembre 2011, 18:01 »

amigos tengo una agenda pero quiero una opcion de mostrar todos los contactos que sean del equipo caraquista

aqui le dejo el codig paa ver si me pueden ayudar


Código
 
#include <stdio.h>
 
struct _agenda {
       char nombre[20];
       char telefono[12];
       char equipo[20];
       struct _agenda *siguiente;
       };
 
struct _agenda *primero, *ultimo;
 
void mostrar_menu() {
     system("cls");
     printf("\n\nMenu:\n=====\n\n");
     printf("1.- Agregar elementos\n");
     printf("2.- Borrar elementos\n");
     printf("3.- Mostrar contacto\n");
     printf("4.- Mostrar contacto magallanero\n");
     printf("5.- Salir\n\n");
     printf("Escoge una opcion: ");fflush(stdout);
}
 
void anadir_elemento() {
     struct _agenda *nuevo;
 
     /* reservamos memoria para el nuevo elemento */
     nuevo = (struct _agenda *) malloc(sizeof(struct _agenda));
     if (nuevo==NULL) printf( "No hay memoria disponible!\n");
 
     printf("\nNuevo elemento:\n");
     printf("Nombre: "); fflush(stdout);
     gets(nuevo->nombre);
     printf("Telefono: "); fflush(stdout);
     gets(nuevo->telefono);
     printf("Equipo: "); fflush(stdout);
     gets(nuevo->equipo);
 
     /* el campo siguiente va a ser NULL por ser el último elemento
        de la lista */

     nuevo->siguiente = NULL;
 
 
     if (primero==NULL) {
        printf( "Primer elemento\n");
        primero = nuevo;
        ultimo = nuevo;
        }
     else {
          /* el que hasta ahora era el último tiene que apuntar al nuevo */
          ultimo->siguiente = nuevo;
          /* hacemos que el nuevo sea ahora el último */
          ultimo = nuevo;
     }
}
 
 
 
void mostrar_lista() {
     struct _agenda *auxiliar;
     int i;
 
     i=0;
     auxiliar = primero;
     printf("\nMostrando la lista completa:\n");
     while (auxiliar!=NULL) {
           printf( "Nombre: %s \n Telefono: %s \n equipo: %s\n",
                   auxiliar->nombre,auxiliar->telefono,auxiliar->equipo);
           auxiliar = auxiliar->siguiente;
           i++;
     }
     if (i==0) printf( "\nLa agenda esta vacia!!\n" );
}
 
 
 
void mostrar_magallanes() {
 
     int x;
           struct _agenda *auxiliar;
     printf("\nLos contacto magallaneros son: \n");
 
     for(x=0; x < 5; x++)
         {
     if(strcmp(primero->equipo[x],"magallanero") == 0)
        {
     printf("los contactos magallanero son");
   printf("\nEl nombre es: %s \n",auxiliar->nombre[x]);
   printf ("el telefono: %s  \n",auxiliar->telefono[x]);
 
          }
          }
          }
 
 
void borrar_elemento(){
 
 free(primero=NULL);
 
                    }
 
int main() {
    char opcion;
 
    primero = (struct _agenda *) NULL;
    ultimo = (struct _agenda *) NULL;
    do {
        mostrar_menu();
        opcion = getch();
            switch ( opcion ) {
               case '1': anadir_elemento();
                      break;
               case '2':  borrar_elemento();
                       break;
               case '3': mostrar_lista(primero);
                       break;
               case '4': mostrar_magallanes();
               break;
 
               case '5': exit( 1 );
               default: printf( "Opción no válida\n" );
                        break;
            }
    } while (opcion!='5');
}
 
 
 


http://pastebin.com/SvxGbaRZ

en la linea 75 a 91 esta la funcion que mas o menos quiero pero no se trabajar con punteros


« Última modificación: 24 Noviembre 2011, 18:14 por attackers » En línea
satu

Desconectado Desconectado

Mensajes: 263

Siempre aprendiendo


Ver Perfil WWW
Re: mostrar contactos de una agenda por equipo
« Respuesta #1 en: 24 Noviembre 2011, 19:20 »

Hola

Te pongo sólo el código de la función
Código
void mostrar_magallanes()
{
   struct _agenda *auxiliar = primero;
   printf("\nLos contacto magallaneros son: \n");
 
   while(auxiliar != NULL)
   {
       if(strcmp(auxiliar->equipo,"magallanero") == 0)
       {
           printf("\nEl nombre es: %s \n",auxiliar->nombre);
           printf ("el telefono: %s  \n",auxiliar->telefono);
       }
       auxiliar = auxiliar->siguiente;
   }
}
 

Saludos


En línea

Breakbeat como forma de vida
attackers

Desconectado Desconectado

Mensajes: 37


Ver Perfil
Re: mostrar contactos de una agenda por equipo
« Respuesta #2 en: 24 Noviembre 2011, 21:50 »

amigo y para eliminar un contacto en especifico por que como yo lo tengo borra TODOS los contactos  me podrias pasar esa funcion ??
En línea
satu

Desconectado Desconectado

Mensajes: 263

Siempre aprendiendo


Ver Perfil WWW
Re: mostrar contactos de una agenda por equipo
« Respuesta #3 en: 24 Noviembre 2011, 22:20 »

Hola

Para borrar un único elemento sería algo así:

Código
void borrar_elemento()
{
   int borrado = 0;
   char nombre[20];
   struct _agenda *auxiliar1 = primero, *auxiliar2 = NULL;
 
   printf("Introduce el nombre:");
   scanf("%s", nombre);
   while(getchar() != '\n'); //Limpiamos el buffer
 
   while((auxiliar1 != NULL) && (borrado == 0))
   {
       if(strcmp(auxiliar1->nombre, nombre) == 0)
           borrado = 1;
       else
       {
           auxiliar2 = auxiliar1;
           auxiliar1 = auxiliar1->siguiente;
       }
   }
 
   if(borrado == 1)
   {
       if(auxiliar1 == primero)
       {
           primero = primero->siguiente;
           auxiliar1->siguiente = NULL;
           free(auxiliar1);
       }
       else
           if(auxiliar1 == ultimo)
           {
               ultimo = auxiliar2;
               ultimo->siguiente = NULL;
               free(auxiliar1);
           }
           else
           {
               auxiliar2->siguiente = auxiliar1->siguiente;
               auxiliar1->siguiente = NULL;
               free(auxiliar1);
           }
       printf("El elemento con nombre %s ha sido borrado\n", nombre);
   }
   else
       printf("El elemento con nombre %s no se encuentra\n", nombre);
}
 

Lo he hecho a ojo sin probarlo pero los tiros van por ahí.

Saludos
En línea

Breakbeat como forma de vida
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mostrar contactos del messenger
Desarrollo Web
Belem 2 322 Último mensaje 1 Septiembre 2006, 05:23
por Belem
Mostrar el icono del mostrar escritorio en la barra de tareas en windows vista
Windows
weeping_willow 2 4,664 Último mensaje 20 Noviembre 2007, 12:42
por Randomize
Sincronizar agenda y contactos outlook
Redes
OssoH 4 3,586 Último mensaje 17 Julio 2009, 11:52
por OssoH
Necesito agenda de contactos en red
Software
frex2002 1 939 Último mensaje 26 Junio 2009, 22:25
por ssccaann43 ©
agenda en c... problema con mostrar contactos y buscar contacto en especifico
Programación C/C++
attackers 7 595 Último mensaje 21 Noviembre 2011, 19:53
por s00rk
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines