0
Hello, this progrgrama is a stock control, what he asks this in the first printf
of the program, a stock and sale controller only with struct. Cases 3 and 4 are in trouble, because I can’t get information from registered items. Case 2 also has a problem but I don’t know why. In case someone wants to test run the program I would be grateful. The most recent (Falcon C++ IDE I use) does not identify any errors,
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
struct produto
{
char cod;
float compra;
float venda;
float preco;
int qdt;
float lucro;
char descricao[100];
char nome[50];
};
int main()
{
int opc;
int i;
int per;
float lucro;
int ven;
struct produto cadastrar[40];
setlocale(LC_ALL, "Portuguese");
printf("1-Cadatrar produto\n2-Lucro total\n3-Conferir estoque\n4-Venda\n0-Sair\n");
scanf("%d", &opc);
fflush(stdin);
switch(opc)
{
case 1:
puts("Olá, cadastre um item");
for(i=0; i<40; i++)
{
puts("Nome:");
gets(cadastrar[i].nome);
fflush(stdin);
puts("Código:");
scanf("%s", &cadastrar[i].cod);
fflush(stdin);
puts("Descrição:");
gets(cadastrar[i].descricao);
fflush(stdin);
puts("Quantidade:");
scanf("%d", &cadastrar[i].qdt);
fflush(stdin);
puts("Valor da compra:");
scanf("%f", &cadastrar[i].compra);
fflush(stdin);
puts("Preço:");
scanf("%f", &cadastrar[i].preco);
fflush(stdin);
puts("gostaria de cadastrar outro produto?");
puts("1-sim\t2-nao");
scanf("%d", &per);
if(per!=1)
{
system("cls");
printf("finalização de cadastramento de produto\n");
return main();
}
else if(per==1)
{
system("cls");
}
fflush(stdin);
}
return main();
case 2:
for(i=0; i<40; i++)
{
if(cadastrar[i].venda==0)
{
fflush(stdin);
system("cls");
printf("Não foi feito nenhuma venda:\n");
return main();
}
else if(cadastrar[i].venda>0)
{
fflush(stdin);
printf("%.2f", cadastrar[i].venda);
}
}
case 3:
for(i=0;i<40;i++)
{
fflush(stdin);
puts("Código do produto:");
scanf("%s", &cadastrar[i].cod);//toda vez que é digitado substitui o codigo do item, e zera o resto das variaveis na possição
fflush(stdin);
if(cadastrar[i].qdt<12)
{
printf("%s", cadastrar[i].nome);
fflush(stdin);
printf("Produto no fim:\t\t%d\n\n", cadastrar[i].qdt);
system("pause");
}
else if(cadastrar[i].qdt>11)
{
puts(cadastrar[i].nome);
fflush(stdin);
printf("Qtd:t\t%d\n\n", cadastrar[i].qdt);
system("pause");
}
if(cadastrar[i].qdt==0)
{
puts(cadastrar[i].nome);
fflush(stdin);
printf("Item em falta");
}
fflush(stdin);
puts("gostaria de cadastrar outro produto?");
puts("1-sim\t2-nao");
scanf("%d", &per);
if(per!=1)
{
system("cls");
printf("finalização de cadastramento de produto\n");
return main();
}
else if(per==1)
{
system("cls");
}
fflush(stdin);
}
return main();
case 4:
for(i=0; i<40; i++)
{
puts("Código do produto:");//toda vez que é digitado substitui o codigo do item, e zera o resto das variaveis na possição
scanf("%s", &cadastrar[i].cod);
fflush(stdin);
printf("Preço:\t\t%.2f", cadastrar[i].preco);
printf("Qtd:\t\t%d", cadastrar[i].qdt);
fflush(stdin);
ven=0;
printf("Vender?/n1-sim 2-não:\n");
scanf("%d", &ven);
fflush(stdin);
if(ven==1)
{
cadastrar[i].qdt--;
cadastrar[i].venda=cadastrar[i].preco;
lucro=cadastrar[i].venda;
}
else if(ven==2)
{
return main();
}
fflush(stdin);
per=0;
puts("gostaria de cadastrar outro produto?");
puts("1-sim\t2-nao");
scanf("%d", &per);
if(per!=1)
{
system("cls");
printf("finalização de cadastramento de produto\n");
return main();
}
else if(per==1)
{
system("cls");
}
fflush(stdin);
fflush(stdin);
}
case 0:
fflush(stdin);
system("cls");
break;
default:
fflush(stdin);
printf("opção invalida, digite outra opção\n");w
return main();
}
return 0;
}
my doubt is the second, when I register a product and then I will sell or check stock, regardless of the code I will type is not the same
Editable code:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
#include <string.h>
struct produto
{
char cod;
float compra;
float venda;
float preco;
int qdt;
float lucro;
char descricao[100];
char nome[50];
};
int main()
{
int opc;
int i;
int per;
float lucro;
int ven;
struct produto cadastrar[40];
setlocale(LC_ALL, "Portuguese");
while(opc!=0)
{
printf("1-Cadatrar produto\n2-Lucro total\n3-Conferir estoque\n4-Venda\n0-Sair\n");
scanf("%d", &opc);
fflush(stdin);
switch(opc)
{
case 1:
puts("Olá, cadastre um item");
for(i=0; i<40; i++)
{
puts("Nome:");
gets(cadastrar[i].nome);
fflush(stdin);
puts("Código:");
scanf("%s", &cadastrar[i].cod);
fflush(stdin);
puts("Descrição:");
gets(cadastrar[i].descricao);
fflush(stdin);
puts("Quantidade:");
scanf("%d", &cadastrar[i].qdt);
fflush(stdin);
puts("Valor da compra:");
scanf("%f", &cadastrar[i].compra);
fflush(stdin);
puts("Preço:");
scanf("%f", &cadastrar[i].preco);
fflush(stdin);
puts("gostaria de cadastrar outro produto?");
puts("1-sim\t2-nao");
scanf("%d", &per);
if(per!=1)
{
system("cls");
printf("finalização de cadastramento de produto\n");
break;
}
else if(per==1)
{
system("cls");
}
fflush(stdin);
}
break;
case 2:
for(i=0; i<40; i++)
{
if(cadastrar[i].venda==0)
{
fflush(stdin);
system("cls");
printf("Não foi feito nenhuma venda:\n");
break;
}
else if(cadastrar[i].venda>0)
{
fflush(stdin);
printf("%.2f", cadastrar[i].venda);
}
}
break;
case 3:
for(i=0;i<40;i++)
{
fflush(stdin);
puts("Código do produto:");
scanf("%s", &cadastrar[i].cod);
fflush(stdin);
if(cadastrar[i].qdt<12)
{
printf("%s", cadastrar[i].nome);
fflush(stdin);
printf("Produto no fim:\t\t%d\n\n", cadastrar[i].qdt);
system("pause");
}
else if(cadastrar[i].qdt>11)
{
puts(cadastrar[i].nome);
fflush(stdin);
printf("Qtd:t\t%d\n\n", cadastrar[i].qdt);
system("pause");
}
if(cadastrar[i].qdt==0)
{
puts(cadastrar[i].nome);
fflush(stdin);
printf("Item em falta");
system("pause");
}
fflush(stdin);
puts("gostaria de pesquisar outro produto?");
puts("1-sim\t2-nao");
scanf("%d", &per);
if(per!=1)
{
system("cls");
printf("finalização de cadastramento de produto\n");
break;
}
else if(per==1)
{
system("cls");
}
fflush(stdin);
}
break;
case 4:
for(i=0; i<40; i++)
{
puts("Código do produto:");
scanf("%s", &cadastrar[i].cod);
fflush(stdin);
printf("Preço:\t\t%.2f", cadastrar[i].preco);
printf("Qtd:\t\t%d", cadastrar[i].qdt);
fflush(stdin);
ven=0;
printf("Vender?/n1-sim 2-não:\n");
scanf("%d", &ven);
fflush(stdin);
if(ven==1)
{
cadastrar[i].qdt--;
cadastrar[i].venda=cadastrar[i].preco;
lucro=cadastrar[i].venda;
}
else if(ven==2)
{
break;
}
fflush(stdin);
per=0;
puts("gostaria de cadastrar outro produto?");
puts("1-sim\t2-nao");
scanf("%d", &per);
if(per!=1)
{
system("cls");
printf("finalização de cadastramento de produto\n");
break;
}
else if(per==1)
{
system("cls");
}
fflush(stdin);
}
break;
case 0:
fflush(stdin);
system("cls");
break;
default:
fflush(stdin);
printf("opção invalida, digite outra opção\n");
break;
}
}
return 0;
}
I put an editable code area
– Leonardo V. De Gasperin
Only boot
opc
for something other than0
.– Lucas Virgili
but
opc
is already different from 0– Leonardo V. De Gasperin
Not when the program starts. You use the value of
opc
no while giving value to it.– Lucas Virgili
I think now I intendi was barely dyslexic so in case I press enter will come out?
– Leonardo V. De Gasperin
no, it depends on the value you have in the memory location that it gains when it is declared. as this is kind of random, it is always good you put a value.
– Lucas Virgili
OK thank you very much
– Leonardo V. De Gasperin