Advertisement
gmmmarcos

Practico 3- Funciones - con correcciones

Apr 17th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 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;
  9. inicpila(&DADA);
  10.  
  11.  
  12. CargarPila (&DADA);
  13. AgregarOrden (&DADA, 4);
  14.  
  15.  
  16. printf("\n\t PILA DADA\n");
  17. mostrar (&DADA);
  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. int MENOR;
  74. Pila AUXDADA;
  75. //inicpila(&MENOR);
  76. inicpila(&AUXDADA);
  77.  
  78. MENOR= desapilar (DADA);
  79.  
  80. while (!pilavacia(DADA))
  81. {
  82. if (tope(DADA)< MENOR)
  83. {
  84. apilar (&AUXDADA, MENOR);
  85. MENOR=desapilar(DADA);
  86. }
  87. else
  88. {
  89. apilar (&AUXDADA, desapilar (DADA));
  90. }
  91. }
  92.  
  93. while (!pilavacia(&AUXDADA))
  94. {
  95. apilar (DADA, desapilar (&AUXDADA));
  96. }
  97. return MENOR;
  98.  
  99. }
  100.  
  101.  
  102. /* 5. Hacer una función que pase los
  103. elementos de una pila a otra, de manera que se genere una nueva pila ordenada.
  104. Usar la función del ejercicio 4. */
  105.  
  106. void OrdenarPila (Pila *DADA, Pila *Ordenada)
  107. {
  108. while (!pilavacia (DADA))
  109. {
  110. apilar (Ordenada, BuscarMenor(DADA));
  111. }
  112. }
  113.  
  114. /* 6. Hacer una función que inserte en una pila ordenada un nuevo elemento, conservando el orden de esta. */
  115.  
  116. void AgregarOrden (Pila *DADA, int nuevo)
  117. {
  118. Pila POTATO;
  119. inicpila (&POTATO);
  120.  
  121. while (!pilavacia(DADA)&& tope(DADA)> nuevo)
  122. {
  123. apilar (&POTATO, desapilar (DADA));
  124. }
  125.  
  126. apilar (DADA, nuevo);
  127.  
  128. while (!pilavacia(&POTATO))
  129. {
  130. apilar (DADA, desapilar (&POTATO));
  131. }
  132. }
  133.  
  134. /*7. Hacer una función que pase los elementos de una pila a otra,
  135. de manera que se genere una nueva pila ordenada. Usar la función del ejercicio 6*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement