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)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Problema al leer/mostrar lista simplemente enlazada en C en: 9 Abril 2017, 13:30 pm
Bueno chicos ocurre que al momento de querer mostrar la lista, el unico dato correcto es el ultimo int del struct de datos (int horac)

Quisiera saber que estoy haciendo mal. De antemano muchas gracias.

CODIGO:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. //Se tiene una lista simplemente enalzada que representa los canales de televisio de un cable operador. Se maneja el nombre de cada
  6. //canal, el tipo de canal, el n° asignado y la cantidad de horas en comerciales que permite. Se solicita:
  7. //A) Declare los struct a ser utilizados
  8. //B) Determine el promedio de comerciales que emiten los canales de television
  9. //C) Agregar un nuevo Canal
  10. //D) Eliminar el o los canales que emiten mayor cantidad de horas en comerciales, debe mostrar por pantalla el detalle de los canales eliminados
  11.  
  12. struct nodoCanales
  13. {
  14. struct DatosCanal *canal;
  15. struct nodoCanales *sig;
  16. };
  17.  
  18. struct DatosCanal
  19. {
  20. char nombre;
  21. char tipo
  22. int numero;
  23. int horac;
  24. };
  25.  
  26. struct nodoCanales *crear();
  27. void enlazarCanal(struct nodoCanales **, struct nodoCanales *);
  28. void mostrarCanal(struct nodoCanales *);
  29.  
  30. int main()
  31. {
  32. int i=0;
  33.  
  34. struct nodoCanales *lista = NULL;
  35. struct nodoCanales *aux = NULL;
  36.  
  37. for(i=0;i<1;i++)
  38. {
  39. enlazarCanal(&lista,crear());
  40. }
  41.  
  42. aux=lista;
  43.  
  44. while(aux)
  45. {
  46. mostrarCanal(aux);
  47. aux=aux->sig;
  48. }
  49.  
  50. return 0;
  51. }
  52.  
  53. struct nodoCanales *crear()
  54. {
  55. char buffer[50];
  56. int size=0;
  57.  
  58. struct nodoCanales *nuevo;
  59.  
  60. nuevo=(struct nodoCanales *)malloc(sizeof(struct nodoCanales));
  61.  
  62. printf("Ingrese el nombre del canal: \n");
  63. scanf(" %[^\n]",buffer);
  64. size=strlen(buffer);
  65. nuevo->canal->nombre=(char*)malloc(size*sizeof(char));
  66. strcpy(nuevo->canal->nombre,buffer);
  67.  
  68. printf("Ingrese el tipo de canal: \n");
  69. scanf(" %[^\n]",buffer);
  70. size=strlen(buffer);
  71. nuevo->canal->tipo=(char*)malloc(size*sizeof(char));
  72. strcpy(nuevo->canal->tipo,buffer);
  73.  
  74. printf("Ingrese el numero del canal: \n");
  75. scanf("%d",&nuevo->canal->numero);
  76.  
  77. printf("Ingrese la cantidad de horas en comerciales del canal: \n");
  78. scanf("%d",&nuevo->canal->horac);
  79.  
  80. nuevo->sig=NULL;
  81.  
  82. return nuevo;
  83. }
  84.  
  85. void enlazarCanal(struct nodoCanales **head, struct nodoCanales *nuevo)
  86. {
  87. struct nodoCanales *rec = *head;
  88.  
  89. if(!(*head))
  90. {
  91. *head = nuevo;
  92. }
  93.  
  94. else
  95. {
  96. while(rec)
  97. {
  98. if(!(rec->sig))
  99. {
  100. rec->sig = nuevo;
  101. rec = nuevo;
  102. }
  103. rec = rec->sig;
  104. }
  105. }
  106. }
  107.  
  108. void mostrarCanal(struct nodoCanales *nodo)
  109. {
  110. printf("%c \n",nodo->canal->nombre);
  111. printf("%c \n",nodo->canal->tipo);
  112. printf("%d \n",nodo->canal->numero);
  113. printf("%d \n",nodo->canal->horac);
  114. }
  115.  
  116.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines