Galera é o seguinte, alguém poderia me dizer onde está o erro desse programa. (NÃO CONSEGUI INSERIR NA CODEBOX - ERROR 404)
Obs1.: O programa está bem bagunçado. Estou começando em C e a inda não pequei as "manhas" em organização.
Obs2.: Estou compilando no Dev-C++ 4.9.9.2
Obs3.: O compilador me retorna a mensagem: invalid digit "8" in octal constant. Na parte destinada ao código do produto eu estou colocando coisas do tipo, 009, faço isso porque preciso que o código do produto tenha três dígitos.
Obs4.: Antes da função main(), dentro de /*definição das estruturas e/ou inicialização - inicio*/, há essa expressão paga.produtosCONT=0; , não sei o que está errada com ela (quando eu retiro a expressão, o erro indicado pelo compilador é o da Obs3.
Obs5.: O erro do "octal" provavelmente é porque estou usando valores do tipo 001, como mencionei acima. Como eu contorno essa situação, lembrando que o código do produto precisa ter 3 dígitos.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define QUANTIDADE 10
#define LIMITA 1000
#define NOME 100
/*protótipo da função inicia()*/
void iniciar(void);
/*protótipo da função pagamento()*/
void pagamento(void);
/*protótipo da função cupom()*/
void cupom(void);
/*declaração das estruturas*/
struct armazena
{
char nome[NOME];
float prec;
int cod;
};
struct pagamento
{
float totalB;
float totalL;
float precPARCELA;
float DescJur;
int parcelas;
int produtos[LIMITA];
int produtosCONT;
char ProdNome[NOME];
};
/*Explicação sobre algumas variáveis
produtosCONT = contador de produtos comprados
*/
/*declaração das estruturas - fim*/
/*definição das estruturas e/ou inicialização - inicio*/
struct armazena produto[] = {
{"Red Bull",7.99,001},{"Bisc. Passa Tempo",2.29,002},{"Banana Prata Kg",1.52,003},{"Hamburguer Sadia Frango", 8.75,004},
{"Azeite Oliva Galo 500ml",16.10,005},{"Atum Coqueiro lata 120g",4.05,006},{"Macarrao Galo 500g",4.20,007},{"Pao Seven Boys 500g",3.49,008},
{"Catchup Arisco 390g",3.20,009},{ "Leite Batavo integral 1L",2.20,010},''
};
struct pagamento paga;
paga.produtosCONT=0;
/*definição das estruturas e/ou inicialização - fim*/
float totalFinal=0;
/*Declaração de variáveis genéricas*/
int verdade=1, n=QUANTIDADE, fim;
char ch;
main()
{
while (verdade)
{
printf("Selecione a opcao desejada: ");
printf("\nTecle I para iniciar o caixa");
printf("\n F para finalizar");
switch (ch)
{
case 'I':
iniciar();
pagamento();
cupom();
break;
case 'F':
printf("\nValor arrecadado no dia: %f\n",paga.totalL);
verdade=0;
break;
default:
break;
}
}
system("PAUSE");
return 0;
}
/*definição da função iniciar*/
void iniciar(void)
{
/*cod=código, codS=código simples (inteiro), subT=subtotal temporário*/
int quant,i,codS,j=0;
float subT,subTT;
char cod[4];
/* teste string e teste simple, um recebe 000 e o outro termina o laço */
int teste;
int testeS;
int t=0;
while (teste)
{
printf("\nDigite o código do produto: ");
gets(cod);
codS=atoi(cod);
if(cod[0] == 0 && cod[1] == 0 && cod[2] == 0)
{
teste=0;
break;
}
else
{
for(i=0; i<n; i++)
{
if(codS == produto[i].cod)
{
paga.produtos[i]=produto[i].cod;
paga.produtosCONT++;
j=i;
i=n;
t++;
}
}
if(t == 0)
{
printf("Código inexistente. Por favor, digite um codigo correto");
break;
}
}
printf("\nDigite a quantida do produto: ");
scanf("%d", &quant);
subTT=(quant*produto[j].prec);
subT+=subTT;
printf("\nO subtotal da compra = %0.2f",subT);
}
paga.totalB=subT;
return;
}
/*definição da função pagamento()*/
void pagamento(void)
{
int parc;
int verdade2=1;
printf("\nPAGAMENTO");
printf("\nObservações:");
printf("\nO número máximo de parcelas é 12.");
printf("\nHá um desconto de 5%% sobre pagamentos avista.");
printf("\n\nDigite os dados a seguir.");
while (verdade2)
{
printf("\n\nQuantidade de parcelas (1 para pagamentos avista): ");
scanf("%d", &parc);
if(parc == 0)
{
printf("O valor 0 (zero) não é válido como parcela. Digite outro valor.");
break;
}
else
{
if(parc <= 12)
verdade2=0;
else
{
printf("\nValor inválido. Digite um número menor que 12 e maior que 0 (zero)");
break;
}
}
}
if(parc == 1 )
{
paga.totalL=(paga.totalB*0.95);
paga.DescJur=5;
}
else
{
paga.totalL=(paga.totalB*(parc*1.03));
paga.DescJur=(parc*1.03);
}
paga.precPARCELA=(paga.totalL/parc);
paga.parcelas=parc;
}
/*definição da função cupom()*/
void cupom(void)
{
int i=0,j=0,c=0,d=0;
system("CLS");
printf("\nCupom Fiscal");
printf("\nProdutos comprados:");
j=paga.produtosCONT;
for (i=0; i<j; i++)
{
for(c=0; c<n; c++)
{
if(paga.produtos[i] == produto[c].cod)
printf("\n%d\t%s\t%f",paga.produtos[i],produto[c].nome,produto[c].prec);
}
}
printf("\nPreço total da compra: %f", paga.totalL);
if(paga.parcelas != 1)
{
printf("\nPreço das parecelas : %f",paga.precPARCELA);
printf("\nJuros: %f",paga.DescJur);
}
else
if(paga.parcelas == 1)
{
printf("\nPagamento realizado a vista, parecela única");
printf("\nDesconto 5%");
}
totalFinal = (float)(totalFinal+paga.totalL);
}
Pergunta
dark_max
Galera é o seguinte, alguém poderia me dizer onde está o erro desse programa. (NÃO CONSEGUI INSERIR NA CODEBOX - ERROR 404)
Obs1.: O programa está bem bagunçado. Estou começando em C e a inda não pequei as "manhas" em organização.
Obs2.: Estou compilando no Dev-C++ 4.9.9.2
Obs3.: O compilador me retorna a mensagem: invalid digit "8" in octal constant. Na parte destinada ao código do produto eu estou colocando coisas do tipo, 009, faço isso porque preciso que o código do produto tenha três dígitos.
Obs4.: Antes da função main(), dentro de /*definição das estruturas e/ou inicialização - inicio*/, há essa expressão paga.produtosCONT=0; , não sei o que está errada com ela (quando eu retiro a expressão, o erro indicado pelo compilador é o da Obs3.
Obs5.: O erro do "octal" provavelmente é porque estou usando valores do tipo 001, como mencionei acima. Como eu contorno essa situação, lembrando que o código do produto precisa ter 3 dígitos.
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.