elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 2,453 veces)
attackers

Desconectado Desconectado

Mensajes: 38


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

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
  1.  
  2. #include <stdio.h>
  3.  
  4. struct _agenda {
  5.        char nombre[20];
  6.        char telefono[12];
  7.        char equipo[20];
  8.        struct _agenda *siguiente;
  9.        };
  10.  
  11. struct _agenda *primero, *ultimo;
  12.  
  13. void mostrar_menu() {
  14.      system("cls");
  15.      printf("\n\nMenu:\n=====\n\n");
  16.      printf("1.- Agregar elementos\n");
  17.      printf("2.- Borrar elementos\n");
  18.      printf("3.- Mostrar contacto\n");
  19.      printf("4.- Mostrar contacto magallanero\n");
  20.      printf("5.- Salir\n\n");
  21.      printf("Escoge una opcion: ");fflush(stdout);
  22. }
  23.  
  24. void anadir_elemento() {
  25.      struct _agenda *nuevo;
  26.  
  27.      /* reservamos memoria para el nuevo elemento */
  28.      nuevo = (struct _agenda *) malloc(sizeof(struct _agenda));
  29.      if (nuevo==NULL) printf( "No hay memoria disponible!\n");
  30.  
  31.      printf("\nNuevo elemento:\n");
  32.      printf("Nombre: "); fflush(stdout);
  33.      gets(nuevo->nombre);
  34.      printf("Telefono: "); fflush(stdout);
  35.      gets(nuevo->telefono);
  36.      printf("Equipo: "); fflush(stdout);
  37.      gets(nuevo->equipo);
  38.  
  39.      /* el campo siguiente va a ser NULL por ser el último elemento
  40.          de la lista */
  41.      nuevo->siguiente = NULL;
  42.  
  43.  
  44.      if (primero==NULL) {
  45.         printf( "Primer elemento\n");
  46.         primero = nuevo;
  47.         ultimo = nuevo;
  48.         }
  49.      else {
  50.           /* el que hasta ahora era el último tiene que apuntar al nuevo */
  51.           ultimo->siguiente = nuevo;
  52.           /* hacemos que el nuevo sea ahora el último */
  53.           ultimo = nuevo;
  54.      }
  55. }
  56.  
  57.  
  58.  
  59. void mostrar_lista() {
  60.      struct _agenda *auxiliar;
  61.      int i;
  62.  
  63.      i=0;
  64.      auxiliar = primero;
  65.      printf("\nMostrando la lista completa:\n");
  66.      while (auxiliar!=NULL) {
  67.            printf( "Nombre: %s \n Telefono: %s \n equipo: %s\n",
  68.                    auxiliar->nombre,auxiliar->telefono,auxiliar->equipo);
  69.            auxiliar = auxiliar->siguiente;
  70.            i++;
  71.      }
  72.      if (i==0) printf( "\nLa agenda esta vacia!!\n" );
  73. }
  74.  
  75.  
  76.  
  77. void mostrar_magallanes() {
  78.  
  79.      int x;
  80.            struct _agenda *auxiliar;
  81.      printf("\nLos contacto magallaneros son: \n");
  82.  
  83.      for(x=0; x < 5; x++)
  84.          {
  85.      if(strcmp(primero->equipo[x],"magallanero") == 0)
  86.         {
  87.      printf("los contactos magallanero son");
  88.    printf("\nEl nombre es: %s \n",auxiliar->nombre[x]);
  89.    printf ("el telefono: %s  \n",auxiliar->telefono[x]);
  90.  
  91.           }
  92.           }
  93.           }
  94.  
  95.  
  96. void borrar_elemento(){
  97.  
  98.  free(primero=NULL);
  99.  
  100.                     }
  101.  
  102. int main() {
  103.     char opcion;
  104.  
  105.     primero = (struct _agenda *) NULL;
  106.     ultimo = (struct _agenda *) NULL;
  107.     do {
  108.         mostrar_menu();
  109.         opcion = getch();
  110.             switch ( opcion ) {
  111.                case '1': anadir_elemento();
  112.                       break;
  113.                case '2':  borrar_elemento();
  114.                        break;
  115.                case '3': mostrar_lista(primero);
  116.                        break;
  117.                case '4': mostrar_magallanes();
  118.                break;
  119.  
  120.                case '5': exit( 1 );
  121.                default: printf( "Opción no válida\n" );
  122.                         break;
  123.             }
  124.     } while (opcion!='5');
  125. }
  126.  
  127.  
  128.  


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 pm por attackers » En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


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

Hola

Te pongo sólo el código de la función
Código
  1. void mostrar_magallanes()
  2. {
  3.    struct _agenda *auxiliar = primero;
  4.    printf("\nLos contacto magallaneros son: \n");
  5.  
  6.    while(auxiliar != NULL)
  7.    {
  8.        if(strcmp(auxiliar->equipo,"magallanero") == 0)
  9.        {
  10.            printf("\nEl nombre es: %s \n",auxiliar->nombre);
  11.            printf ("el telefono: %s  \n",auxiliar->telefono);
  12.        }
  13.        auxiliar = auxiliar->siguiente;
  14.    }
  15. }
  16.  

Saludos


En línea

Breakbeat como forma de vida
attackers

Desconectado Desconectado

Mensajes: 38


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

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: 301

Siempre aprendiendo


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

Hola

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

Código
  1. void borrar_elemento()
  2. {
  3.    int borrado = 0;
  4.    char nombre[20];
  5.    struct _agenda *auxiliar1 = primero, *auxiliar2 = NULL;
  6.  
  7.    printf("Introduce el nombre:");
  8.    scanf("%s", nombre);
  9.    while(getchar() != '\n'); //Limpiamos el buffer
  10.  
  11.    while((auxiliar1 != NULL) && (borrado == 0))
  12.    {
  13.        if(strcmp(auxiliar1->nombre, nombre) == 0)
  14.            borrado = 1;
  15.        else
  16.        {
  17.            auxiliar2 = auxiliar1;
  18.            auxiliar1 = auxiliar1->siguiente;
  19.        }
  20.    }
  21.  
  22.    if(borrado == 1)
  23.    {
  24.        if(auxiliar1 == primero)
  25.        {
  26.            primero = primero->siguiente;
  27.            auxiliar1->siguiente = NULL;
  28.            free(auxiliar1);
  29.        }
  30.        else
  31.            if(auxiliar1 == ultimo)
  32.            {
  33.                ultimo = auxiliar2;
  34.                ultimo->siguiente = NULL;
  35.                free(auxiliar1);
  36.            }
  37.            else
  38.            {
  39.                auxiliar2->siguiente = auxiliar1->siguiente;
  40.                auxiliar1->siguiente = NULL;
  41.                free(auxiliar1);
  42.            }
  43.        printf("El elemento con nombre %s ha sido borrado\n", nombre);
  44.    }
  45.    else
  46.        printf("El elemento con nombre %s no se encuentra\n", nombre);
  47. }
  48.  

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:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines