Buscar

Lab Pilha Finalizado

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include<stdio.h>
#include<stdlib.h>
typedef enum {false, true} bool;
typedef struct no
{
 int valor;
 struct no *prox;
} noCedula;
noCedula *pilha[7];
int valorCedula [7] = {1,2,5,10,20,50,100};
void inicializaPilha()
{
 int i;
 for (i=0; i<7; i++)
 {
 pilha[i] = NULL;
 }
}
void abastecePilha (int quant, int v)
{
 int i ;
 int pos;
 noCedula *novo;
 switch (v)
 {
 case 1 :
 pos = 0;
 break;
 case 2 :
 pos = 1;
 break;
 case 5 :
 pos = 2;
 break;
 case 10 :
 pos = 3;
 break;
 case 20 :
 pos = 4;
 break;
 case 50 :
 pos = 5;
 break;
 case 100 :
 pos = 6;
 break;
 default :
 printf("\n>>Valor da Cedula invalido!\n\n");
 }
 for (i=0; i<quant; i++)
 {
 novo = (noCedula*)(malloc(sizeof (noCedula)));
 novo -> prox = pilha[pos];
 pilha[pos] = novo;
 }
}
void imprimeSaldo()
{
 noCedula *atual;
 int i;
 int soma = 0;
 for(i=0; i<7; i++)
 {
 atual = pilha[i];
 while(atual!=NULL)
 {
 soma = soma + atual -> valor;
 atual = atual -> prox;
 }
 }
 printf("-> Saldo = %d \n", soma );
}
void imprimeSomaCedulas()
{
 noCedula *atual;
 int i;
 int soma = 0;
 for(i=0; i<7; i++)
 {
 atual = pilha[i];
 soma = 0;
 while(atual!=NULL)
 {
 soma = soma + atual ->valor;
 atual = atual -> prox;
 }
 printf("\n-> Saldo em notas de %d = %d \n",valorCedula[i], soma);
 }
 printf("\n");
}
bool saqueDisponivel(int valor)
{
 int i;
 noCedula *atual;
 for(i=7; i>=0; i--)
 {
 atual = pilha [i];
 while ((atual!=NULL)&&(valor/valorCedula[i]>=1))
 {
 valor = valor - atual -> valor;
 atual = atual -> prox;
 }
 }
 if (valor ==0)
 {
 return true;
 }
 else
 {
 return false;
 }
}
bool saque (int valor)
{
 int i;
 noCedula *atual;
 if(saqueDisponivel(valor == true))
 {
 for(i=6; i>=0; i--)
 {
 while((pilha[i]!= NULL)&&(valor /valorCedula[i])>=1)
 {
 valor = valor - pilha[i] -> valor;
 atual = pilha[i];
 pilha[i]= atual -> prox;
 free(atual);
 }
 }
 return true;
 }
 else
 {
 return false;
 }
}
int main ()
{
 int op, quant, valor, valor2;
 bool sacar;
 abastecePilha(80, 100);
 abastecePilha(70, 50);
 abastecePilha(150, 20);
 abastecePilha(200, 10);
 abastecePilha(30, 5);
 abastecePilha(55, 2);
 abastecePilha(100, 1);
 inicializaPilha();
 while(op!=5)
 {
 printf("BANCO\n\n");
 printf("1- Abastecer \n");
 printf("\n2- Sacar \n");
 printf("\n3- Imprimir saldo \n");
 printf("\n4- Imprimir soma de cedulas \n");
 printf("\n5- Sair \n");
 scanf("%d", &op);
 switch(op)
 {
 case 1:
 printf("Entre com a quantidade de cedulas: ");
 scanf("%d",&quant);
 printf("\n");
 printf("Entre com o valor: ");
 scanf("%d",&valor);
 printf("\n");
 abastecePilha(quant, valor);
 break;
 case 2:
 printf("Entre com o valor: ");
 scanf("%d",&valor2);
 printf("\n");
 sacar = saque(valor2);
 if(sacar)
 {
 printf("SUCESSO \n");
 }
 else
 {
 printf("ERRO \n");
 }
 break;
 case 3:
 imprimeSaldo();
 break;
 case 4:
 imprimeSomaCedulas();
 break;
 }
 system("pause");
 system("cls");
 }
 return 0;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais