Ir ao conteúdo

Pequeno problema em programão


f4ust4o

Posts recomendados

Postado

Então galerinha,

venho aqui no forum mais uma vez para pedir uma pequena ajuda em um codigo, provavelmente é a ultima pois esse é o projeto final.

O negocio é o seguinte, tenho que fazer um sistema para controlar estoque e vendas de uma loja de artigos esportivos que vende Camisetas, Meioes e Shorts.

No programa devem ser apresentadas as seguintes funçionalidades

1 - Registrar entrada de estoque

2 - Registrar vendas

3 - Emitir Relatorios de estoque

O meu problema está justamente nessa ultima, nessa funcionalidade uma das categorias, no caso a de camisetas, apresenta numeros absurdamente grandes no relatorio mesmo não se cadastrando nada

Segue o codigo:



#include <stdio.h>
/*Declaração de structs*/
struct CADCAMISA
{
int camisas;
int camisasP;
int camisasM;
int camisasG;
};

struct CADMEIOES
{
int meioes;
int meioesP;
int meioesM;
int meioesG;
};

struct CADSHORTS
{
int shorts;
int shortsP;
int shortsM;
int shortsG;
};
/*Fim declaração de structs*/


//Funcao cadrastro
void cadastro(struct CADCAMISA produto_camisas[500], struct CADMEIOES produto_meioes[500], struct CADSHORTS produto_shorts[500], int quantidade);
//Funcao relatorio
void relatorio(struct CADCAMISA produto_camisas[500], struct CADMEIOES produto_meioes[500], struct CADSHORTS produto_shorts[500], int quantidade);
//Funcao vendas
void vendas(struct CADCAMISA produto_camisas[500], struct CADMEIOES produto_meioes[500], struct CADSHORTS produto_shorts[500], int quantidade);

/*Função principal*/
int main()
{
int menu, qtd, indice;
struct CADCAMISA cadastro_camisa[500];
struct CADMEIOES cadastro_meioes[500];
struct CADSHORTS cadastro_shorts[500];
menuPrincipal:
while (menu < 4)
{

printf("1 - Cadastrar mercadoria no estoque\n");
printf("2 - Registrar vendas\n");
printf("3 - Revisar relatorio de estoque\n");
printf("4 - Sair\n");
printf("Selecione a opcao desejada -> ");
scanf("%d", &menu);

switch(menu)
{
case 1:
cadastro(cadastro_camisa, cadastro_meioes, cadastro_shorts, qtd);
break;
case 2:
vendas(cadastro_camisa, cadastro_meioes, cadastro_shorts, qtd);
break;
case 3:
relatorio(cadastro_camisa, cadastro_meioes, cadastro_shorts, qtd);
break;
}
system("cls");
}
}
/*Fim menu principal*/


/*Função para cadastro de produtos*/
void cadastro(struct CADCAMISA produto_camisas[500], struct CADMEIOES produto_meioes[500], struct CADSHORTS produto_shorts[500], int quantidade)
{
int opcao_cadastro, opcao_tamanho, qtd_P, qtd_M, qtd_G;
menuCadastro:
system("cls");
printf("------Cadastro de Produtos no Estoque------\n\n");
printf("1 - Cadastrar Camisetas\n");
printf("2 - Cadastrar Meioes\n");
printf("3 - Cadastrar Shorts\n");
printf("4 - Voltar ao menu principal\n");
scanf("%d", &opcao_cadastro);
system("cls");

while (opcao_cadastro < 4)
{
switch(opcao_cadastro)
{
/*Cadastro Camisetas*/
/*Seleção de tamanhos*/
case 1:
printf("Deseja cadastrar camisetas de qual tamanho?\n");
printf("1 - Tamanho P\n");
printf("2 - Tamanho M\n");
printf("3 - Tamanho G\n");
printf("4 - Para voltar para o menu de cadastro\n");
scanf("%d", &opcao_tamanho);
/*Seleção de quantidades*/
switch(opcao_tamanho)
{
case 1:
printf("Insira a quantidade de camisetas tamanho P ->");
scanf("%d", &qtd_P);

produto_camisas[quantidade].camisas += qtd_P;
produto_camisas[quantidade].camisasP += qtd_P;
break;

case 2:
printf("Insira a quantidade de camisetas tamanho M ->");
scanf("%d", &qtd_M);

produto_camisas[quantidade].camisas += qtd_M;
produto_camisas[quantidade].camisasM += qtd_M;
break;

case 3:
printf("Insira a quantidade de camisetas tamanho G ->");
scanf("%d", &qtd_G);

produto_camisas[quantidade].camisas += qtd_G;
produto_camisas[quantidade].camisasG += qtd_G;
break;

case 4:
goto menuCadastro;
break;
}

/*Cadastro Meioes*/
/*Seleção de Tamanhos*/
case 2:
printf("Deseja cadastrar meioes de qual tamanho?\n");
printf("1 - Tamanho P\n");
printf("2 - Tamanho M\n");
printf("3 - Tamanho G\n");
printf("4 - Para voltar para o menu de cadastro\n");
scanf("%d", &opcao_tamanho);
/*Seleção de quantidades*/
switch(opcao_tamanho)
{
case 1:
printf("Insira a quantidade de meioes tamanho P ->");
scanf("%d", &qtd_P);

produto_meioes[quantidade].meioes += qtd_P;
produto_meioes[quantidade].meioesP += qtd_P;
break;

case 2:
printf("Insira a quantidade de meioes tamanho M ->");
scanf("%d", &qtd_M);

produto_meioes[quantidade].meioes += qtd_M;
produto_meioes[quantidade].meioesM += qtd_M;
break;

case 3:
printf("Insira a quantidade de meioes tamanho G ->");
scanf("%d", &qtd_G);

produto_meioes[quantidade].meioes += qtd_G;
produto_meioes[quantidade].meioesG += qtd_G;
break;

case 4:
goto menuCadastro;
break;
}
/*Cadastro de Shorts*/
/*Seleção de Tamanho*/
case 3:
printf("Deseja cadastrar shorts de qual tamanho?\n");
printf("1 - Tamanho P\n");
printf("2 - Tamanho M\n");
printf("3 - Tamanho G\n");
printf("4 - Para voltar para o menu de cadastro\n");
scanf("%d", &opcao_tamanho);
/*Seleção de quantidades*/
switch(opcao_tamanho)
{
case 1:
printf("Insira a quantidade de shorts tamanho P ->");
scanf("%d", &qtd_P);

produto_shorts[quantidade].shorts += qtd_P;
produto_shorts[quantidade].shortsP += qtd_P;
break;

case 2:
printf("Insira a quantidade de shorts tamanho M ->");
scanf("%d", &qtd_M);

produto_shorts[quantidade].shorts += qtd_M;
produto_shorts[quantidade].shortsM += qtd_M;
break;

case 3:
printf("Insira a quantidade de shorts tamanho G ->");
scanf("%d", &qtd_G);

produto_shorts[quantidade].shorts += qtd_G;
produto_shorts[quantidade].shortsG += qtd_G;
break;

case 4:
goto menuCadastro;
break;
}

}
}
}/*Fim da função de cadastro*/

[B]/*Função para impressão dos relatorios de estoque*/
void relatorio(struct CADCAMISA produto_camisas[500], struct CADMEIOES produto_meioes[500], struct CADSHORTS produto_shorts[500], int quantidade)
{
system("cls");

printf("###Quantidade de camisetas###\n\n");

printf("Quantidade de Camisetas -> %d\n", produto_camisas[quantidade].camisas);
printf("Quantidade de Camisetas tamanho P -> %d\n", produto_camisas[quantidade].camisasP);
printf("Quantidade de Camisetas tamanho M -> %d\n", produto_camisas[quantidade].camisasM);
printf("Quantidade de Camisetas tamanho G -> %d\n\n", produto_camisas[quantidade].camisasG);

printf("###Quantidade de Meioes###\n\n");

printf("Quantidade de Meioes -> %d\n", produto_meioes[quantidade].meioes);
printf("Quantidade de Meioes tamanho P -> %d\n", produto_meioes[quantidade].meioesP);
printf("Quantidade de Meioes tamanho M -> %d\n", produto_meioes[quantidade].meioesM);
printf("Quantidade de Meioes tamanho G -> %d\n\n", produto_meioes[quantidade].meioesG);

printf("###Quantidade de Shortss###\n\n");

printf("Quantidade de Shorts -> %d\n", produto_shorts[quantidade].shorts);
printf("Quantidade de Shorts tamanho P -> %d\n", produto_shorts[quantidade].shortsP);
printf("Quantidade de Shorts tamanho M -> %d\n", produto_shorts[quantidade].shortsM);
printf("Quantidade de Shorts tamanho G -> %d\n\n", produto_shorts[quantidade].shortsG);

system("pause");

}/*Fim da função de relatorios*/
[/B]

/*Função para vendas de produtos*/
void vendas(struct CADCAMISA produto_camisas[500], struct CADMEIOES produto_meioes[500], struct CADSHORTS produto_shorts[500], int quantidade)
{
int opcao_venda, opcao_tamanho, qtd_venda, totalcamisas, totalmeioes, totalshorts;

menuVenda:
printf("------Venda de Produtos------\n\n");
printf("1 - Venda de Camisetas\n");
printf("2 - Venda de Meioes\n");
printf("3 - Venda de Shorts\n");
printf("4 - Voltar ao menu principal\n");
scanf("%d", &opcao_venda);
system("cls");

switch(opcao_venda)
{
/*Venda de camisetas*/
/*Seleção de quantidades e tamanhos*/
case 1:
if(produto_camisas[quantidade].camisas > 0) /*Verificar se há algum produto cadastrado nessa categoria*/
{
printf("###Camisetas###\n\n");
printf("Insira a quantidade -> ");
scanf("%d", &qtd_venda),
printf("###Tamanho###\n\n");
printf("1 - Tamanho P\n");
printf("2 - Tamanho M\n");
printf("3 - Tamanho G\n");
printf("4 - Voltar ao menu anterior\n");
fflush(stdin);
scanf("%d", &opcao_tamanho);

/*Switch para retirar do estoque o tamanho correto*/
switch(opcao_tamanho)
{
case 1:
if(produto_camisas[quantidade].camisasP >= qtd_venda)
{
produto_camisas[quantidade].camisasP -= qtd_venda;
totalcamisas = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_camisas[quantidade].camisas -= totalcamisas;
break;

case 2:
if(produto_camisas[quantidade].camisasM >= qtd_venda)
{
produto_camisas[quantidade].camisasM -= qtd_venda;
totalcamisas = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_camisas[quantidade].camisas -= totalcamisas;
break;

case 3:
if(produto_camisas[quantidade].camisasG >= qtd_venda)
{
produto_camisas[quantidade].camisasG -= qtd_venda;
totalcamisas = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_camisas[quantidade].camisas -= totalcamisas;
break;

case 4:
goto menuVenda;
break;
}/*Fim do switch para seleção de quantidades*/
}
else
{
system("cls");
printf("Produto não disponivel em estoque\n\n");/*Mensagem caso não tenha nenhum produto em estoque*/
system("pause");
}
break;
/*Venda de meioes*/
/*Seleção de quantidades e tamanhos*/
case 2:
if(produto_meioes[quantidade].meioes > 0)/*Verificar se há algum produto cadastrado nessa categoria*/
{
printf("###Camisetas###\n\n");
printf("Insira a quantidade -> ");
scanf("%d", &qtd_venda),
printf("###Tamanho###\n\n");
printf("1 - Tamanho P\n");
printf("2 - Tamanho M\n");
printf("3 - Tamanho G\n");
fflush(stdin);
scanf("%d", &opcao_tamanho);
/*Switch para retirar do estoque o tamanho correto*/
switch(opcao_tamanho)
{
case 1:
if(produto_meioes[quantidade].meioesP >= qtd_venda)
{
produto_meioes[quantidade].meioesP -= qtd_venda;
totalmeioes = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_meioes[quantidade].meioes -= totalmeioes;
break;

case 2:
if(produto_meioes[quantidade].meioesM >= qtd_venda)
{
produto_meioes[quantidade].meioesM -= qtd_venda;
totalmeioes = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_meioes[quantidade].meioes -= totalmeioes;
break;

case 3:
if(produto_meioes[quantidade].meioesG >= qtd_venda)
{
produto_meioes[quantidade].meioesG -= qtd_venda;
totalmeioes = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_meioes[quantidade].meioes -= totalmeioes;
break;

case 4:
goto menuVenda;
break;

}/*Fim do switch para seleção de quantidades*/
}
else
{
system("cls");
printf("Produto não disponivel em estoque\n\n");/*Mensagem caso não tenham produtos cadastrados nessa categoria*/
system("pause");
}
break;

/*Venda de meioes*/
/*Seleção de quantidades e tamanhos*/
case 3:
if(produto_meioes[quantidade].meioes > 0)/*Verificar se há algum produto cadastrado nessa categoria*/
{
printf("###Camisetas###\n\n");
printf("Insira a quantidade -> ");
scanf("%d", &qtd_venda),
printf("###Tamanho###\n\n");
printf("1 - Tamanho P\n");
printf("2 - Tamanho M\n");
printf("3 - Tamanho G\n");
fflush(stdin);
scanf("%d", &opcao_tamanho);
/*Switch para retirar do estoque o tamanho correto*/
switch(opcao_tamanho)
{
case 1:
if(produto_shorts[quantidade].shortsP >= qtd_venda)
{
produto_shorts[quantidade].shortsP -= qtd_venda;
totalshorts = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_shorts[quantidade].shorts -= totalmeioes;
break;

case 2:
if(produto_shorts[quantidade].shortsM >= qtd_venda)
{
produto_shorts[quantidade].shortsM -= qtd_venda;
totalshorts = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_shorts[quantidade].shorts -= totalmeioes;
break;

case 3:
if(produto_shorts[quantidade].shortsG >= qtd_venda)
{
produto_shorts[quantidade].shortsG -= qtd_venda;
totalshorts = qtd_venda;
system("cls");
printf("Venda Concluida\n\n");
system("pause");
}
else
{
system("cls");
printf("Produto não disponivel em estoque.\n\n");
system("pause");
}
produto_shorts[quantidade].shorts -= totalmeioes;
break;

case 4:
goto menuVenda;
break;
}/*Fim do switch para seleção de quantidades*/
}
else
{
system("cls");
printf("Produto não disponivel em estoque\n\n");/*Mensagem caso não tenham produtos cadastrados nessa categoria*/
system("pause");
}
break;
}
}

Desculpem-me o codigo grande demais

Para visualização do codigo defeituoso coloquei em negrito a parte da funcionalidade em questão

Se possivel peço por favor que sugiram melhorias para esse codigo

Obrigado e um abraço

Postado

Sua função de relatório recebe como parametro um inteiro chamado quantidade, e ela serve como indice para as matrizes de estrutura.

Mas o problema é que ela não é inicializada antes de ser chamada na função "relatorio", ou seja, é impossivel prever o que será impresso por seu programa.

Eu não sei bem qual a intenção do seu programa, mas gostaria de dar uma dica. Não precisa usar uma matriz para as suas estruturas. Pense bem, voce está armazenando a quantidade de produtos certo? Se sim, então basta apenas uma variavel para isso, mas voce armazena tambem a quantidade de camisas de tamanhos distintos, então para cada tamanho use apenas uma variável, que contera o valor da quantidade que existe desses tamanhos no estoque. Assim fica mais fácil controlar o estoque, se é isso que voce pretende com esse programa.

Qualquer duvida pode perguntar.

Até mais e boa sorte no seu projeto.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!