Advertisement
Guest User

pilha kenia ufs

a guest
Jan 23rd, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. Veja o algoritmo a seguir para uma pilha de números reais:
  2.  
  3. #include
  4.  
  5. struct Pilha {
  6.  
  7. int topo; /* posição elemento topo */
  8. int capa;
  9. float *pElem;
  10.  
  11. };
  12.  
  13. void criarpilha( struct Pilha *p, int c ){
  14.  
  15. p->topo = -1;
  16. p->capa = c;
  17. p->pElem = (float*) malloc (c * sizeof(float));
  18.  
  19. }
  20. int estavazia ( struct Pilha *p ){
  21.  
  22. if( p-> topo == -1 )
  23.  
  24. return 1; // true
  25.  
  26. else
  27.  
  28. return 0; // false
  29.  
  30. }
  31.  
  32. int estacheia ( struct Pilha *p ){
  33.  
  34. if (p->topo == p->capa - 1)
  35.  
  36. return 1;
  37.  
  38. else
  39.  
  40. return 0;
  41.  
  42. }
  43.  
  44. void empilhar ( struct Pilha *p, float v){
  45.  
  46. p->topo++;
  47. p->pElem [p->topo] = v;
  48.  
  49. }
  50.  
  51. float desempilhar ( struct Pilha *p ){
  52.  
  53. float aux = p->pElem [p->topo];
  54. p->topo--;
  55. return aux;
  56.  
  57. }
  58.  
  59. float retornatopo ( struct Pilha *p ){
  60.  
  61. return p->pElem [p->topo];
  62.  
  63. }
  64.  
  65. int main(){
  66.  
  67. struct Pilha minhapilha;
  68. int capacidade, op;
  69. float valor;
  70.  
  71. printf( "\nCapacidade da pilha? " );
  72. scanf( "%d", &capacidade );
  73.  
  74. criarpilha (&minhapilha, capacidade);
  75.  
  76. while( 1 ){ /* loop infinito */
  77.  
  78. printf("\n1- empilhar (push)\n");
  79. printf("2- desempilhar (POP)\n");
  80. printf("3- Mostrar o topo \n");
  81. printf("4- sair\n");
  82. printf("\nopcao? ");
  83. scanf("%d", &op);
  84.  
  85. switch (op){
  86.  
  87. case 1: //push
  88.  
  89. if( estacheia( &minhapilha ) == 1 )
  90.  
  91. printf("\nPILHA CHEIA! \n");
  92.  
  93. else {
  94.  
  95. printf("\nVALOR? ");
  96. scanf("%f", &valor);
  97. empilhar (&minhapilha, valor);
  98.  
  99. }
  100. break;
  101.  
  102. case 2: //pop
  103. if ( estavazia(&minhapilha) == 1 )
  104.  
  105. printf( "\nPILHA VAZIA! \n" );
  106.  
  107. else{
  108.  
  109. valor = desempilhar (&minhapilha);
  110. printf ( "\n%.1f DESEMPILHADO!\n", valor );
  111.  
  112. }
  113. break;
  114.  
  115. case 3: // mostrar o topo
  116. if ( estavazia (&minhapilha) == 1 )
  117.  
  118. printf( "\nPILHA VAZIA!\n" );
  119.  
  120. else {
  121.  
  122. valor = retornatopo (&minhapilha);
  123. printf ( "\nTOPO: %.1f\n", valor );
  124.  
  125. }
  126. break;
  127.  
  128. case 4:
  129. exit(0);
  130.  
  131. default: printf( "\nOPCAO INVALIDA! \n" );
  132. }
  133. }
  134.  
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement