Advertisement
gonzalob

Untitled

May 9th, 2022
761
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "pila.h"
  4.  
  5. void cargarPila(Pila * duracell);
  6. int pasarPilaToArreglo(Pila duracell, int arreglo[20]);
  7. int mayorElemento(int arreglo[20], int validos);
  8. int menorPila(Pila * pila);
  9. float promedio(int arreglo[20],int validos);
  10.  
  11. int main()
  12. {
  13.     Pila tripleA;
  14.     inicpila(&tripleA);
  15.     cargarPila(&tripleA);
  16.  
  17.     mostrar(&tripleA);
  18.  
  19.     int arreglo[20] = {0};
  20.     int validos = pasarPilaToArreglo(tripleA,arreglo);
  21.  
  22.     for (int i=0;i<validos;i++)
  23.     {
  24.         printf("Elemento: %d\n",arreglo[i]);
  25.     }
  26.  
  27.     int mayor =  mayorElemento(arreglo,validos);
  28.  
  29.     printf("Elemento mayor: %d\n",mayor);
  30.  
  31.     float promedioCalculado = promedio(arreglo,validos);
  32.  
  33.     printf("Promedio Calculado mayor: %f\n",promedioCalculado);
  34.  
  35.     return 0;
  36. }
  37.  
  38. /*
  39. 1. Hacer una función que cargue una pila de números enteros mientras el usuario así lo desea.
  40. La pila se envía por parámetro.
  41.  
  42. */
  43.  
  44.  
  45. void cargarPila(Pila * duracell)
  46. {
  47.     char mander = 's';
  48.     while (mander == 's')
  49.     {
  50.         leer(duracell);
  51.  
  52.         printf("Desea continuar? \n");
  53.         fflush(stdin);
  54.         scanf("%c",&mander);
  55.     }
  56. }
  57.  
  58. /*
  59. Copiar los elementos impares de la pila a un arreglo. Dicho arreglo es de dimensión 20.
  60. Controlar que no se puedan pasar más elementos. Los elementos deben quedar en la pila.
  61. */
  62.  
  63. int pasarPilaToArreglo(Pila duracell, int arreglo[20])
  64. {
  65.     int contador = 0;
  66.     int elemento;
  67.     while ((!pilavacia(&duracell)) && (contador<20))
  68.     {
  69.         elemento = desapilar(&duracell);
  70.         if (elemento % 2 !=0)
  71.         {
  72.             arreglo[contador] = elemento;
  73.             contador++;
  74.         }
  75.     }
  76.     return contador;
  77. }
  78.  
  79. /*
  80. 3. Buscar y retornar el mayor elemento del arreglo del punto anterior.
  81. */
  82.  
  83.  
  84. int mayorElemento(int arreglo[20], int validos)
  85. {
  86.     int mayor = arreglo[0];
  87.     for (int i=1;i<validos;i++)
  88.     {
  89.         if (mayor < arreglo[i])
  90.         {
  91.             mayor = arreglo[i];
  92.         }
  93.     }
  94.     return mayor;
  95. }
  96.  
  97. /*
  98.  
  99. 4. Buscar el menor elemento de la pila del punto 2 y quitarlo de la pila.
  100. La pila debe quedar en orden.
  101.  
  102. */
  103.  
  104. int menorPila(Pila * pila)
  105. {
  106.     int menor = tope(pila);
  107.     int elemento;
  108.     Pila aux;
  109.     inicpila(&aux);
  110.  
  111.     while (!pilavacia(pila))
  112.     {
  113.         elemento = tope(pila);
  114.         apilar(&aux,desapilar(pila));
  115.  
  116.         if (elemento < menor)
  117.         {
  118.             menor = elemento;
  119.         }
  120.     }
  121.  
  122.     while (!pilavacia(&aux))
  123.     {
  124.         if (tope(&aux) == menor)
  125.         {
  126.             desapilar(&aux);
  127.         }
  128.         else
  129.         {
  130.             apilar(pila,desapilar(&aux));
  131.         }
  132.     }
  133.  
  134.     return menor;
  135. }
  136.  
  137. /*
  138.  
  139. 5. Realizar una función que saque el promedio de los elementos del arreglo.
  140.  
  141. */
  142.  
  143. float promedio(int arreglo[20],int validos)
  144. {
  145.     float promedioCalculado = 0;
  146.     int suma = 0;
  147.     for (int i=0;i<validos;i++)
  148.     {
  149.         suma = suma + arreglo[i];
  150.     }
  151.  
  152.     promedioCalculado = (float)(suma / validos);
  153.  
  154.     return promedioCalculado;
  155. }
  156.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement