Olá, estou com um problema que meu professor da faculdade passou para estudar para prova que é o seguinte:
Criar um programa que contenha uma estrutura para representar informações de um produto, como o código a descrição, o valor, a quantidade disponível em estoque e um status para conter informação se o produto é ativo ou não. Criar uma segunda estrutura que representa um carrinho de de compras, com as seguintes informações: Número do item, a quantidade, o código do produto (representada na primeira estrutura), o valor unitário e o valor total. O programa principal deve ter dois menus principais como apresentado abaixo:
1- Cadastro do Produto
2- Abrir Venda
9 - Sair
***1-Cadastro do Produto***
1- Inserir
2-Procurar
3-Alterar
4-Listar
9-Sair
***2. Abrir Venda***
1- Incluir Item
2-Fechar Venda
9-Sair
O programa deve funcionar da seguinte forma: O cadastro de produtos pode armazenar no máximo 100 produtos, use um vetor de ponteiros e alocação dinâmica para definí-lo. Ao abrir uma venda, você poderá inserir itens no seu carrinho de compras, para tanto use o código do produto para trazer o preço unitário (campo valor da primeira estrutura). Ao fechar a venda deverá apresentar em tela todos os itens do carrinho e o valor total a pagar, exemplo:
ITEM Cód. Produto Descrição Vlr. Unit. Total ITEM 1 10 Coca-Cola 2.90 29.00
2 20 Fanta 4.00 40.00
Total Compra--> 69.00
Acredito que eu tenha resolvido uns 70% do exercício. Eu estou com dificuldades de inserir os produtos no carrinho.
Eu consegui desenvolver até essa parte:
#include <stdio.h>
#include <stdlib.h>
struct Produto{
int cod_prod;
int vlr_prod;
int quant;
char nome_prod[51];
};
struct Carrinho{
int num_item;
int quant;
int cod_prod;
int vlr_unit;
int vlr_total;
};
#define MAX 100
typedef struct Produto *ptr_prod;
ptr_prod p_prod[MAX];
int p; //variavel para controlar posicao
void inserir();
void procurar(int cod_prodproc);
void alterar(int cod_prodproc);
void listar();
void imprimir(int i);
void inicializa();
void inserir(){
if(p<MAX){
p_prod[p] = (ptr_prod) malloc(sizeof(struct Produto));
printf("Digite o codigo: \n");
scanf("%d", &p_prod[p]->cod_prod);
fflush(stdin);
printf("Digite o nome_prod do Produto: \n");
gets(p_prod[p]->nome_prod);
printf("Inserido com sucesso...\n");
system("pause");
p++;
}else{
printf("Memoria Cheia..\n");
system("pause");
}
}
void procurar(int cod_prodproc){
int i;
for(i=0; i<p; i++){
if(cod_prodproc == p_prod[i]->cod_prod){
printf("Registro encontrado \n");
imprimir(i);
system("pause");
}
}
}
void alterar(int cod_prodproc){
int i;
for(i=0; i<p; i++){
if(cod_prodproc == p_prod[i]->cod_prod){
printf("Registro encontrado \n");
imprimir(i);
printf("Digite o novo nome: \n");
fflush(stdin);
gets(p_prod[i]->nome_prod);
printf("Nome alterado com sucesso..\n");
system("pause");
}
}
}
void listar(){
int i;
for(i=0; i<p; i++){
imprimir(i);
}
system("pause");
}
void imprimir(int i){
printf("codigo do Produto: %d \n", p_prod[i]->cod_prod);
printf("Nome do Produto: %s \n", p_prod[i]->nome_prod);
printf("-------------------------------------\n");
}
void inicializa(){
int i;
for(i=0; i<MAX; i++){
p_prod[i] = NULL;
}
}
int main()
{
inicializa();
p=0;
int opc=0;
int cod_prodproc=0;
while(opc!=9){
system("cls");
printf("1. Cadastro do Produto \n");
printf("2. Abrir Venda \n");
printf("Escolha sua opcao: ");
scanf("%d", &opc);
switch(opc){
case 1:
while(opc!=9){
system("cls");
printf("1. Inserir \n");
printf("2. Procurar \n");
printf("3. Alterar \n");
printf("4. Listar \n");
printf("9. Voltar \n");
printf("Escolha sua opcao: ");
scanf("%d", &opc);
switch(opc){
case 1:
inserir();
break;
case 2:
printf("Digite o codigo a ser encontrado: ");
scanf("%d", &cod_prodproc);
procurar(cod_prodproc);
break;
case 3:
printf("Digite o codigo a ser alterado: ");
scanf("%d", &cod_prodproc);
alterar(cod_prodproc);
break;
case 4:
listar();
break;
case 9:
main();
break;
default:
printf("Opcao invalida \n");
}
}
break;
case 2:
printf("VENDA\nEscolha a opcao:");
while(opc!=9){
system("cls");
printf("1. Incluir Item \n");
printf("2. Fechar Venda \n");
printf("9. Voltar\n");
printf("Escolha sua opcao: \n");
scanf("%d", &opc);
switch(opc){
case 1:
printf("Ïnserir venda\n");
inserir();
break;
case 2:
printf("Fechar Venda\n");
break;
case 9:
main();
break;
default:
printf("Opcao invalida \n");
}
}
}
}
return 0;
}
Preciso de ajuda para pensar em uma maneira de armazenar os produtos que eu cadastrei no carrinho mas não sei como.