Enviado em 07/04/2018 - 10:36h
Pessoal estou precisando de uma ajuda, pois estou com bastante dificuldade em fazer este programa. O programa pede que seja inserido um produto que contém código, nome e preço. Inicialmente é solicitado ao usuário quantos produtos serão inseridos na pilha. Lembre-se que além da pilha, este valor lido anteriormente deve ser passado para as funções servindo de auxílio para#include <stdio.h>
#include <stdlib.h>
#define MAX 50
typedef struct{
int cod;
char nome[MAX];
float preco;
} tp_produto;
typedef struct _pilha{
tp_produto *info;
int topo;
}tp_pilha;
int cheia(tp_pilha *c, int num){ //verifica se a pilha está cheia;
if(c->topo == num-1){
return 1;
} else{
return 0;
}
}
int vazia(tp_pilha *v, int num){//verifica se a pilha está vazia
if(v->topo == -1){
return 1;
} else{
return 0;
}
}
void empilhar(tp_pilha *i, int valor){ //insere um elemento na pilha
if (cheia(i, valor)){
printf("Pilha Cheia!\n");
printf("Esvaziar Pilha!\n\n");
} else{
for(int j = 0; j < valor; j++){
printf("Digite o codigo: ");
scanf("%d", &(i+j)->info->cod);
printf("Digite o nome do produto: ");
fgets((i+j)->info->nome, 50, stdin);
printf("Digite o preço: ");
scanf("%f", (&(i+j)->info->preco));
//*(i->info+i->topo)=valor;
i->topo++;
}
}
}
int desempilhar(tp_pilha *e, int valor){//excluir um elemento da pilha
int aux;
if (vazia(e, valor)){
printf("Pilha Vazia!!\n\n");
} else{
aux = *(e->info+e->topo);
e->topo--;
}
return aux;
}
void display(tp_pilha *d, int valor){//mostra os elementos da Pilha
int i;
for(i = 0; i < valor; i++){
printf("Cod: %d\n", (d->info->cod+i));
printf("Nome: %s", (d->info->nome+i));
printf("Preço: %.2f\n", (d->info->preco+i));
}
printf("\n");
}
int main(){
tp_pilha *p = (tp_pilha *) malloc(sizeof(tp_pilha));
int op, num;
int valor;
printf("Quantos produtos quer cadastrar: ");
scanf("%d", &num);
tp_produto *prod = (tp_produto *) malloc(num * sizeof(tp_produto));
cheia(prod, num);
do {
printf("\tOPÇÕES\n");
printf("1 - Empilhar\n");
printf("2 - Desempilhar\n");
printf("3 - Mostrar\n");
printf("Digite uma opção (0 para sair)--> ");
scanf("%d", &op);
switch (op) {
case 1:
empilhar(p, num);
break;
case 2:
desempilhar(p, num);
break;
case 3:
display(p, num);
break;
case 0:
break;
default:
printf("Opção Inválida\n");
break;
}
} while(op != 0);
free(p);
}
Vou voltar moderar conteúdos de Dicas e Artigos (0)
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Instalação Uefi com o instalador clássico do Mageia (1)
Vou voltar moderar conteúdos de Dicas e Artigos (0)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta