Advertisement
gmmmarcos

Practico 3- Funciones - Ejercicio 6 (con anotaciones)

Apr 17th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "pila.h"
  4.  
  5. int main()
  6. {
  7.  
  8. Pila DADA, PATATA;
  9. inicpila(&DADA);
  10. inicpila (&PATATA);
  11.  
  12. CargarPila (&DADA);
  13. AgregarOrden (&DADA, &PATATA);
  14.  
  15.  
  16. printf("\n\t PILA PATATA\n");
  17. mostrar (&PATATA);
  18.  
  19. return 0;
  20. }
  21.  
  22. /*1. Hacer una función que permita ingresar varios elementos a una Pila, tantos como quiera el usuario*/
  23.  
  24. void CargarPila (Pila* a)
  25. {
  26.  
  27. char OP='s';
  28. while (OP=='s')
  29. {
  30. // para ponerle nombre a la pila en el printf necesito strings //
  31. printf("INGRESE UN VALOR A LA PILA\n");
  32. leer (a);
  33. printf("\n DESEA INGRESAR OTRO? s/n\n");
  34. fflush(stdin);
  35. scanf("%c",&OP);
  36. }
  37. }
  38.  
  39. /*2. Hacer una función que pase todos los elementos de una pila a otra*/
  40.  
  41. void PasarElementosIgual (Pila* a, Pila* b)
  42. {
  43. Pila TEMP;
  44. inicpila (&TEMP);
  45.  
  46. while (!pilavacia(a))
  47. {
  48. apilar (&TEMP, desapilar (a));
  49. }
  50.  
  51. while (!pilavacia(&TEMP))
  52. {
  53. apilar (b, desapilar (&TEMP));
  54. }
  55. }
  56.  
  57.  
  58. /* 3. Hacer una función que pase todos los elementos de una pila a otra, pero conservando el orden.*/
  59.  
  60. void PasarElementos (Pila* a, Pila* b)
  61. {
  62. while (!pilavacia(a))
  63. {
  64. apilar (b, desapilar (a));
  65. }
  66. }
  67.  
  68.  
  69. /*4. Hacer una función que encuentre el menor elemento de una pila y lo retorne.*/
  70.  
  71. int BuscarMenor (Pila* DADA)
  72. {
  73. Pila MENOR, AUXDADA;
  74. inicpila(&MENOR);
  75. inicpila(&AUXDADA);
  76.  
  77. apilar (&MENOR, desapilar (DADA));
  78.  
  79. while (!pilavacia(DADA))
  80. {
  81. if (tope(DADA)< tope(&MENOR))
  82. {
  83. apilar (&AUXDADA, desapilar (&MENOR));
  84. apilar (&MENOR, desapilar(DADA));
  85. }
  86. else
  87. {
  88. apilar (&AUXDADA, desapilar (DADA));
  89. }
  90. }
  91.  
  92. while (!pilavacia(&AUXDADA))
  93. {
  94. apilar (DADA, desapilar (&AUXDADA));
  95. }
  96. return tope(&MENOR);
  97.  
  98. }
  99.  
  100.  
  101. /* 5. Hacer una función que pase los
  102. elementos de una pila a otra, de manera que se genere una nueva pila ordenada.
  103. Usar la función del ejercicio 4. */
  104.  
  105. void OrdenarPila (Pila *DADA, Pila *Ordenada)
  106. {
  107.  
  108. while (!pilavacia (DADA))
  109. {
  110. apilar (Ordenada, BuscarMenor(DADA));
  111. }
  112.  
  113.  
  114. }
  115.  
  116. /* 6. Hacer una función que inserte en una pila ordenada un nuevo elemento, conservando el orden de esta. */
  117.  
  118. int AgregarOrden (Pila *DADA, Pila *MENOR)
  119. {
  120.  
  121. leer (DADA);
  122. OrdenarPila (DADA, MENOR);
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement