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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  estructuras dinamicas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: estructuras dinamicas  (Leído 3,037 veces)
MessageBoxA

Desconectado Desconectado

Mensajes: 229


ayudame a ayudarte


Ver Perfil WWW
estructuras dinamicas
« en: 2 Noviembre 2014, 04:06 am »

SALUDOS A TODOS!!!!  ;D
bien quiero informar que se que aqui no se hacen tareas pero cuando la persona que solicita ayuda por lo menos ya a adelantado parte de su proyecto entonces se hace la ecepcion y se ayuda en algo a la persona y yo soy uno de esas personas, estoy haciendo un codigo y bueno e realizado parte de el pero estoy algo trancado y solicito de su ayuda colegas programadores

aqui el enunciado (algo largo)

Código
  1. La empresa disquera "TEMPTATIONS" desea obtener información rápida de sus CD´s e Intérpretes, es decir; que por el titulo de un CD desea conocer el interprete y, dado un intérprete conocer todos los CD´s que él posee.
  2. Se sabe que están disponibles las siguientes estructuras de listas, almacenadas en forma dinámica:
  3. LISTAS DE INTÉRPRETES: Sus nodos contienen la siguiente información:
  4. - Nombre del intérprete,
  5. - Apuntador al principio de la lista de CD´s que posee el interprete,
  6. - Apuntador al final de la lista de CD´s que posee ese interprete,
  7. - Apuntador al sucesor de la lista del intérprete.
  8. LISTAS DE CD´s: Sus nodos contienen la siguiente información:
  9. - Nombre del CD,
  10. - Apuntador al sucesor de la lista de CD´s de ese interprete.
  11. LISTA DE DISQUERAS:
  12. - Nombre de la Disquera,
  13. - Apuntador al sucesor de la lista de Disquera de ese CD.
  14. Nota: Suponga que un CD consta de un único interprete y de una sola disquera, y un intérprete puede tener uno o más CD´s y haber grabado con una o más disqueras.
  15. Basado en la información anterior:
  16. Diseñe un algoritmo y un programa en C, muestre un menú cuya primera opción sea para agregar los elementos de la lista, la segunda opción debe mostrar el nombre de los intérpretes y todos sus CD´s y estos a su vez la disquera, si este existe o envíe un mensaje de error en caso contrario, la opción de eliminar elementos de la lista y la última opción de salir.

y aqui mi code
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. typedef struct TEMPTATIONS
  8. {
  9.  char interprete[20];
  10.  char CDs[15];
  11.  TEMPTATIONS *siguiente;
  12.  } TEMPTATIONS;
  13.  
  14.  
  15. void mostrar_menu();
  16. void agregar_elemento();
  17. void mostrar_lista();
  18. void eliminar();
  19.  
  20. TEMPTATIONS *primero, *ultimo;
  21.  
  22. int main()
  23. {
  24.    char opcion;
  25.    primero=(TEMPTATIONS *)NULL;
  26.    ultimo=(TEMPTATIONS *)NULL;
  27.    do
  28.    {
  29.       mostrar_menu();
  30.       opcion=getche();
  31.       switch(opcion)
  32.       {
  33.  
  34.           case '1': agregar_elemento();
  35.           break;
  36.           case '2': mostrar_lista();
  37.           break;
  38.           case '3': eliminar();
  39.           break;
  40.           case '4': exit(1);
  41.  
  42.           default: printf("Opcion no valida\n");
  43.           break;
  44.       }
  45.    }while(opcion!='4');
  46.  
  47. }  
  48.  
  49.  
  50.   void mostrar_menu()
  51.   {
  52.      printf("1.- Anadir Interprete \n");
  53.  printf("2.- Mostrar Lista de Interpretes?\n");    
  54.  printf("3.- Eliminar Interprete?\n");
  55.      printf("4.- Salir\n\n");
  56.      printf("Escoge una opcion: \n");
  57.      fflush(stdin);
  58.  
  59.  
  60.   }
  61.  
  62.  void agregar_elemento()
  63.  {
  64.    TEMPTATIONS *nuevo;
  65.    nuevo=(TEMPTATIONS *)malloc(sizeof(TEMPTATIONS));
  66.    if(nuevo==NULL)
  67.     printf("No hay memoria disponible!!! \n");
  68.  
  69.     else
  70.     {
  71.             printf("\n");
  72.      printf("Agregar \n");
  73.      printf("Interprete: ");
  74.      fflush(stdin);
  75.      gets(nuevo->interprete);
  76.      printf("CDs: ");
  77.      fflush(stdin);
  78.      gets(nuevo->CDs);
  79.      nuevo->siguiente=NULL;
  80.  
  81.  
  82.       if(primero==NULL)
  83.       {
  84.  
  85.  
  86.  
  87.        primero=nuevo;
  88.        ultimo=nuevo;
  89.  
  90.       }
  91.       else
  92.       {                        
  93.       ultimo->siguiente=nuevo;
  94.       ultimo=nuevo;
  95.       }
  96.      }
  97.       system("pause");
  98.        system("cls");
  99.  }
  100.  
  101.  void mostrar_lista()
  102.  {
  103.    TEMPTATIONS *auxiliar;
  104.    int i;
  105.    i=0;
  106.    auxiliar=primero;
  107.    printf("\n Mostrando la lista completa:\n");
  108.    while(auxiliar!=NULL){    
  109.       printf("Interprete: %s, CDs: %s\n",auxiliar->interprete, auxiliar->CDs);
  110.       auxiliar= auxiliar->siguiente;
  111.       i++;
  112.  
  113.    }  
  114.    if(i==0){
  115.    printf("\nLa lista esta vacia!!\n");
  116.    }
  117.  }
  118.  
  119.   void eliminar()
  120.   {
  121.    TEMPTATIONS *aux2, *aux1, *auxiliar1;
  122.    int j, borralo;
  123.  
  124. auxiliar1=primero;
  125.     j=1;
  126.  
  127.      if(auxiliar1==NULL)
  128.      {
  129.        printf("--->La lista esta vacia\n");
  130.       }
  131.   else
  132.       {
  133.        while(auxiliar1!=NULL)
  134.        {
  135.     printf("\n %d Interprete: %s y su CDs es:%s \n",j,auxiliar1->interprete,auxiliar1->CDs);
  136.     auxiliar1=auxiliar1->siguiente;
  137.     j++;
  138.        }
  139.         printf("Cual desea eliminar\n");
  140.         scanf("%d",&borralo);
  141.         aux2=primero;
  142.        for(j=1;j<borralo-1;j++)
  143.        {
  144.           aux2=aux2->siguiente;
  145.        }
  146.         if(borralo==1)
  147.         {
  148.            primero=aux2->siguiente;
  149.            aux2->siguiente=NULL;
  150.         }
  151.                   else
  152.                   {
  153.                       aux1=aux2;
  154.                       aux2=aux2->siguiente;
  155.                       aux1->siguiente=aux2->siguiente;
  156.                       aux2->siguiente=NULL;
  157.                    }
  158.  
  159.        }
  160.         }


En línea

SI LA MATRIX FUERA PERFECTA.... ESTARÍA ESCRITA EN C++
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: estructuras dinamicas
« Respuesta #1 en: 2 Noviembre 2014, 11:00 am »

Hola MessageBoxA, está bien que des el código que llevas hasta ahora pero tiene que ser una duda concreta, ¿en que parte te quedas trabado?

Aprovecho para decirte que tu estructura no está completa si no me equivoco. Además, el enunciado te pide el programa en lenguaje C y tu has hecho una mezcla de C y C++ en tu código agregando la biblioteca conio.h que NO es portable.

Saludos.


« Última modificación: 2 Noviembre 2014, 11:02 am por avesudra » En línea

Regístrate en
MessageBoxA

Desconectado Desconectado

Mensajes: 229


ayudame a ayudarte


Ver Perfil WWW
Re: estructuras dinamicas
« Respuesta #2 en: 2 Noviembre 2014, 13:15 pm »

bueno mi duda seria como hago las otras dos estructuras, en el enunciado dice que tengo que hacer una lista para los CDs y una lista para la disqueras y como la relaciono con la primera que hice que es la de "interprete"
En línea

SI LA MATRIX FUERA PERFECTA.... ESTARÍA ESCRITA EN C++
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: estructuras dinamicas
« Respuesta #3 en: 3 Noviembre 2014, 11:12 am »

Nota inicial 1: El programa tienes que hacerlo en C, no en C++, por tanto sobra "using namespace".
Nota inicial 2: "fflush" está pensado para buffers de salida, no de entrada. fflush(stdin) puede dar resultados inesperados.

Necesitas crear 3 listas:

Código
  1. typedef struct Disquera
  2. {
  3.  char nombre[20];
  4.  struct Disquera* siguiente;
  5. } Disquera;
  6.  
  7. typedef struct Cd
  8. {
  9.  char nombre[20];
  10.  Disquera* disquera;
  11.  struct Cd* siguiente;
  12. } Cd;
  13.  
  14. typedef struct Interprete
  15. {
  16.  char nombre[20];
  17.  Cd* inicioListaCds;
  18.  Cd* finListaCds;
  19.  struct  Interprete* siguiente;
  20. } Interprete;

Al final la estructura que queda es la que sigue:

Tienes una lista de intérpretes, cada intérprete tiene su propia lista de Cds. De forma paralela hay una lista de disqueras, de tal forma que cada CD acaba apuntando a la disquera que le corresponde.

De esto se deduce que tu estructura TEMPTATIONS no es correcta, ya que ahí estás forzando a que la relación intérprete-cd sea 1-1.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
estructuras dinamicas
Java
SAGA-gl 0 1,552 Último mensaje 26 Abril 2014, 21:22 pm
por SAGA-gl
Compilación C# - Estructuras Dinamicas
.NET (C#, VB.NET, ASP)
Castiel 6 5,998 Último mensaje 14 Febrero 2015, 23:52 pm
por Castiel
C# - Estructuras dinámicas: Listas tipo Pila - Problema de aplicación
Dudas Generales
Nolohagan 5 5,274 Último mensaje 15 Julio 2016, 22:48 pm
por ivancea96
ESTRUCTURAS DINAMICAS DE DATOS TIPO PILA
Programación C/C++
macabro5000 0 1,830 Último mensaje 23 Noviembre 2016, 01:25 am
por macabro5000
Estructuras Dinamicas
Programación C/C++
luiszoket 1 2,531 Último mensaje 19 Octubre 2017, 16:37 pm
por srWhiteSkull
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines