Gonçalo Almeida
Membro
tenho uma questao sobre outro trabalho que estou a desenvolver sobre o calculo do iva.
espero k m possam ajudar!!!!
o problema esta na funcao assinalada a vermelho!!
quando o programa pede ao utilizador introduzir o codigo do produto, o preço e a quantidade que o programa so aceitasse numeros reais e nao letras .... o que devo fazer!!
abaixo encontra-se o codigo!!!!!
_______________________________________________________________________________
// ******** Definição de cabeçalhos e bibliotecas **********************************
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <winbase.h> // Contem a função HANDLE GetStdHandle(DWORD nStdHandle);
#include <math.h>
float preco,quant,iva1=0.05, iva2=0.12, iva3=0.21;
// ******** Apresentação das funções usadas ****************************************
void define_cor(int cor_letra);
//***********Funções para o calculo do Iva********************************************
float calculo_iva(int op)
{
float preco_final=0.0, preco=0.0;
int quant=0;
printf("\n\t- Pre%co sem IVA: ", char(135));
scanf(" %f", &preco);
printf("\n\t- Quantidade: ");
scanf(" %d", &quant);
if(op>0 && op<= 3)
preco_final = quant*preco*(1+iva1);
else
if(op>3 && op<=6)
preco_final = quant*preco*(1+iva2);
else
preco_final = quant*preco*(1+iva3);
return preco_final;
}
void calculos(void)
{
float preco_iva[6], soma_iva5=0.0, soma_iva12=0.0, soma_iva21=0.0, soma=0.0, aux=0.0;
int i, produtos[9], opcao;
for(i=0;i<9;i++)
produtos=i;
for(i=1; i<6; i++)
{
opcao=0;
while ((opcao<=0) || (opcao>=10))
{
printf("\t__________________________________\n");
printf("\n\t- Digite o c%cdigo do %d%c produto:", char(162), i, char(167));
scanf(" %d", &opcao);
fflush(stdin);
if (opcao<=0 || opcao>=10)
{
printf("\n\tOp%c%co Inv%clida!!!\n", char(135), char(132), char(160));
// opcao=0;
fflush(stdin); // Limpa o buffer de entrada (teclado)
}
}
preco_iva=calculo_iva(opcao);
// calculo_iva(opcao);
if(opcao>0 && opcao<=3)
{
aux=preco_iva/(1+iva1);
soma_iva5 = soma_iva5+(preco_iva-aux);
}
else
{
if(opcao>=4 && opcao<=6)
{
aux=preco_iva/(1+iva2);
soma_iva12 = soma_iva12+(preco_iva-aux);
}
else
{
aux=preco_iva/(1+iva3);
soma_iva21 = soma_iva21+(preco_iva-aux);
}
}
soma=soma_iva5+soma_iva12+soma_iva21;
}
printf("\t__________________________________\n\t__________________________________\n");
for(i=1;i<6;i++)
printf("\n\t%d%c Produto - Pre%co Total = %.2f\n\n", i, char(167), char(135), preco_iva);
printf("\t__________________________________\n\t__________________________________\n");
printf("\n\t - IVA 5%c = %.2f\n", char(37), soma_iva5);
printf("\n\t - IVA 12%c = %.2f\n", char(37), soma_iva12);
printf("\n\t - IVA 21%c = %.2f\n", char(37), soma_iva21);
printf("\t__________________________________");
putchar('\n');
printf("\n\t - IVA Total = %.2f\n", soma);
printf("\t__________________________________\n\t__________________________________\n");
getch();
}
// ******** Função menu principal **************************************************
void menu_principal(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
int i;
char car;
car=char(201); printf("\t\t%c",car);//tipo de caracter do canto superior esquerdo
for (i=20;i<=65;i++)//tamanho da barra superior//
{car=char(205); printf("%c",car); }//tipo de caracter da barra superior
car=char(187); printf("%c",car);//tipo de caracter do canto superior direito
car=char(186);//tipo de caracteres das barras laterais
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c C%clculo do IVA %c",car,char (160),car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 1-Consultar tabela de IVA %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 2-Consultar tabela de Produtos %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 3-C%clculo do IVA %c",car,char (160),car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 4-Cr%cditos %c",car,char (130),car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 9- Sair %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c %c",car,car);
car=char(200); printf("\n\t\t%c",car);//tipo de caracter do canto inferior esquerdo
for (i=20;i<=65;i++)//tamanho das barras inferiores
{car=char(205); printf("%c",car); }//tipo de caracter da barra inferiores
car=char(188); printf("%c",car);//tipo de caracter do canto inferior direito
fflush(stdin);//apaga o conteudo do teclado
}
// ******** Função Consultar tabela de IVA *****************************************************
void consultartabeladeiva(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n\n\n");
printf("\n\t\7----------------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Tabela de IVA *");
printf("\n\t* *");
printf("\n\t----------------------------------------------------------");
printf("\n\t* C%cdigo IVA * Tipo de Bens * Taxa de IVA *", char(162));
printf("\n\t----------------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* 1 * Bens %c taxa reduzida * %.0f%c *", char(160),(float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* 2 * Bens %c taxa interm%cdia * %.0f%c *", char(160), char(130) ,(float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* 3 * Bens %c taxa normal * %.0f%c *", char(160),(float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t----------------------------------------------------------\n");
printf("\n\t Carregue numa tecla p/ ");
printf("\n\t voltar ao menu principal ");
}
// ******** Função Consultar tabela de Produtos *************************************************
void consultartabeladeprodutos(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf("\n\t\7---------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Tabela de produtos *");
printf("\n\t* *");
printf("\n\t---------------------------------------------------");
printf("\n\t* Produto * C%cdigo Produto * Taxa IVA *", char(162));
printf("\n\t---------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* Agua * 1 * %.0f%c *", (float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* P%co * 2 * %.0f%c *",132,(float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Carne * 3 * %.0f%c *", (float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t---------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* Margarina * 4 * %.0f%c *", (float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Caf%c * 5 * %.0f%c *",130,(float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Compota * 6 * %.0f%c *", (float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t---------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* Sumos * 7 * %.0f%c *", (float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Rebu%cados * 8 * %.0f%c *",135,(float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Detergente* 9 * %.0f%c *", (float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t---------------------------------------------------\n");
printf("\n\t Carregue numa tecla p/ ");
printf("\n\t voltar ao menu principal ");
}
// ******** Função Calculo do IVA **********************************************************
void calculodoiva(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n");
printf("\n\t\7---------------------------------------------------");
printf("\n\t* *");
printf("\n\t* C%clculo do IVA *", char(160));
printf("\n\t* *");
printf("\n\t---------------------------------------------------\n");
calculos();
}
// ******** Função creditos *************************************************
void creditos(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n\n\n");
printf("\n\t\7---------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Cr%cditos *",char (130));
printf("\n\t* *");
printf("\n\t----------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Tiago Lopes n%c6709 *", char(167));
printf("\n\t* *");
printf("\n\t* Ariana Rodrigues n%c7558 *", char(167));
printf("\n\t* *");
printf("\n\t---------------------------------------------------\n");
printf("\n\t Carregue numa tecla p/ ");
printf("\n\t voltar ao menu principal");
}
//********************************SUBALGORITMO CORES**************************************/
void define_cor(int cor_letra)
{
HANDLE handle;
handle = GetStdHandle ( STD_OUTPUT_HANDLE );
switch(cor_letra){
case 1: //Fundo cinzento;Letra vermelha
SetConsoleTextAttribute ( handle, FOREGROUND_RED | FOREGROUND_RED| BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_GREEN );
break;
}
}
// ******** Função principal *******************************************************
void main(void)
{
int opcao;
do {
menu_principal();
printf("");
printf("\n\tDigite a sua op%c%co: ",char (135), char(132));
scanf("%d",&opcao);
switch (opcao) {
case 1:
consultartabeladeiva();
break;
case 2:
consultartabeladeprodutos();
break;
case 3:
calculodoiva();
break;
case 4:
creditos();
break;
case 9:
printf("\n\tA sua op%c%co foi: Sair",char (135), char (132));
break;
default:
printf("\n\tEscolha uma op%c%co correcta", char(135), char(132));
} while (!kbhit()); /* Enquanto não clicar numa tecla , espera ... */
system("cls");
} while (opcao!=9);
}
espero k m possam ajudar!!!!
o problema esta na funcao assinalada a vermelho!!
quando o programa pede ao utilizador introduzir o codigo do produto, o preço e a quantidade que o programa so aceitasse numeros reais e nao letras .... o que devo fazer!!
abaixo encontra-se o codigo!!!!!
_______________________________________________________________________________
// ******** Definição de cabeçalhos e bibliotecas **********************************
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <winbase.h> // Contem a função HANDLE GetStdHandle(DWORD nStdHandle);
#include <math.h>
float preco,quant,iva1=0.05, iva2=0.12, iva3=0.21;
// ******** Apresentação das funções usadas ****************************************
void define_cor(int cor_letra);
//***********Funções para o calculo do Iva********************************************
float calculo_iva(int op)
{
float preco_final=0.0, preco=0.0;
int quant=0;
printf("\n\t- Pre%co sem IVA: ", char(135));
scanf(" %f", &preco);
printf("\n\t- Quantidade: ");
scanf(" %d", &quant);
if(op>0 && op<= 3)
preco_final = quant*preco*(1+iva1);
else
if(op>3 && op<=6)
preco_final = quant*preco*(1+iva2);
else
preco_final = quant*preco*(1+iva3);
return preco_final;
}
void calculos(void)
{
float preco_iva[6], soma_iva5=0.0, soma_iva12=0.0, soma_iva21=0.0, soma=0.0, aux=0.0;
int i, produtos[9], opcao;
for(i=0;i<9;i++)
produtos=i;
for(i=1; i<6; i++)
{
opcao=0;
while ((opcao<=0) || (opcao>=10))
{
printf("\t__________________________________\n");
printf("\n\t- Digite o c%cdigo do %d%c produto:", char(162), i, char(167));
scanf(" %d", &opcao);
fflush(stdin);
if (opcao<=0 || opcao>=10)
{
printf("\n\tOp%c%co Inv%clida!!!\n", char(135), char(132), char(160));
// opcao=0;
fflush(stdin); // Limpa o buffer de entrada (teclado)
}
}
preco_iva=calculo_iva(opcao);
// calculo_iva(opcao);
if(opcao>0 && opcao<=3)
{
aux=preco_iva/(1+iva1);
soma_iva5 = soma_iva5+(preco_iva-aux);
}
else
{
if(opcao>=4 && opcao<=6)
{
aux=preco_iva/(1+iva2);
soma_iva12 = soma_iva12+(preco_iva-aux);
}
else
{
aux=preco_iva/(1+iva3);
soma_iva21 = soma_iva21+(preco_iva-aux);
}
}
soma=soma_iva5+soma_iva12+soma_iva21;
}
printf("\t__________________________________\n\t__________________________________\n");
for(i=1;i<6;i++)
printf("\n\t%d%c Produto - Pre%co Total = %.2f\n\n", i, char(167), char(135), preco_iva);
printf("\t__________________________________\n\t__________________________________\n");
printf("\n\t - IVA 5%c = %.2f\n", char(37), soma_iva5);
printf("\n\t - IVA 12%c = %.2f\n", char(37), soma_iva12);
printf("\n\t - IVA 21%c = %.2f\n", char(37), soma_iva21);
printf("\t__________________________________");
putchar('\n');
printf("\n\t - IVA Total = %.2f\n", soma);
printf("\t__________________________________\n\t__________________________________\n");
getch();
}
// ******** Função menu principal **************************************************
void menu_principal(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
int i;
char car;
car=char(201); printf("\t\t%c",car);//tipo de caracter do canto superior esquerdo
for (i=20;i<=65;i++)//tamanho da barra superior//
{car=char(205); printf("%c",car); }//tipo de caracter da barra superior
car=char(187); printf("%c",car);//tipo de caracter do canto superior direito
car=char(186);//tipo de caracteres das barras laterais
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c C%clculo do IVA %c",car,char (160),car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 1-Consultar tabela de IVA %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 2-Consultar tabela de Produtos %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 3-C%clculo do IVA %c",car,char (160),car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 4-Cr%cditos %c",car,char (130),car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c 9- Sair %c",car,car);
printf("\n\t\t%c %c",car,car);
printf("\n\t\t%c %c",car,car);
car=char(200); printf("\n\t\t%c",car);//tipo de caracter do canto inferior esquerdo
for (i=20;i<=65;i++)//tamanho das barras inferiores
{car=char(205); printf("%c",car); }//tipo de caracter da barra inferiores
car=char(188); printf("%c",car);//tipo de caracter do canto inferior direito
fflush(stdin);//apaga o conteudo do teclado
}
// ******** Função Consultar tabela de IVA *****************************************************
void consultartabeladeiva(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n\n\n");
printf("\n\t\7----------------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Tabela de IVA *");
printf("\n\t* *");
printf("\n\t----------------------------------------------------------");
printf("\n\t* C%cdigo IVA * Tipo de Bens * Taxa de IVA *", char(162));
printf("\n\t----------------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* 1 * Bens %c taxa reduzida * %.0f%c *", char(160),(float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* 2 * Bens %c taxa interm%cdia * %.0f%c *", char(160), char(130) ,(float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* 3 * Bens %c taxa normal * %.0f%c *", char(160),(float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t----------------------------------------------------------\n");
printf("\n\t Carregue numa tecla p/ ");
printf("\n\t voltar ao menu principal ");
}
// ******** Função Consultar tabela de Produtos *************************************************
void consultartabeladeprodutos(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf("\n\t\7---------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Tabela de produtos *");
printf("\n\t* *");
printf("\n\t---------------------------------------------------");
printf("\n\t* Produto * C%cdigo Produto * Taxa IVA *", char(162));
printf("\n\t---------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* Agua * 1 * %.0f%c *", (float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* P%co * 2 * %.0f%c *",132,(float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Carne * 3 * %.0f%c *", (float (iva1)*100), char(37));
printf("\n\t* * * *");
printf("\n\t---------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* Margarina * 4 * %.0f%c *", (float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Caf%c * 5 * %.0f%c *",130,(float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Compota * 6 * %.0f%c *", (float (iva2)*100), char(37));
printf("\n\t* * * *");
printf("\n\t---------------------------------------------------");
printf("\n\t* * * *");
printf("\n\t* Sumos * 7 * %.0f%c *", (float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Rebu%cados * 8 * %.0f%c *",135,(float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t* Detergente* 9 * %.0f%c *", (float (iva3)*100), char(37));
printf("\n\t* * * *");
printf("\n\t---------------------------------------------------\n");
printf("\n\t Carregue numa tecla p/ ");
printf("\n\t voltar ao menu principal ");
}
// ******** Função Calculo do IVA **********************************************************
void calculodoiva(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n");
printf("\n\t\7---------------------------------------------------");
printf("\n\t* *");
printf("\n\t* C%clculo do IVA *", char(160));
printf("\n\t* *");
printf("\n\t---------------------------------------------------\n");
calculos();
}
// ******** Função creditos *************************************************
void creditos(void)
{
define_cor(1);//Fundo cinzento;Letra vermelha
system("cls");
printf("\n\n\n\n\n\n");
printf("\n\t\7---------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Cr%cditos *",char (130));
printf("\n\t* *");
printf("\n\t----------------------------------------------------");
printf("\n\t* *");
printf("\n\t* Tiago Lopes n%c6709 *", char(167));
printf("\n\t* *");
printf("\n\t* Ariana Rodrigues n%c7558 *", char(167));
printf("\n\t* *");
printf("\n\t---------------------------------------------------\n");
printf("\n\t Carregue numa tecla p/ ");
printf("\n\t voltar ao menu principal");
}
//********************************SUBALGORITMO CORES**************************************/
void define_cor(int cor_letra)
{
HANDLE handle;
handle = GetStdHandle ( STD_OUTPUT_HANDLE );
switch(cor_letra){
case 1: //Fundo cinzento;Letra vermelha
SetConsoleTextAttribute ( handle, FOREGROUND_RED | FOREGROUND_RED| BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_GREEN );
break;
}
}
// ******** Função principal *******************************************************
void main(void)
{
int opcao;
do {
menu_principal();
printf("");
printf("\n\tDigite a sua op%c%co: ",char (135), char(132));
scanf("%d",&opcao);
switch (opcao) {
case 1:
consultartabeladeiva();
break;
case 2:
consultartabeladeprodutos();
break;
case 3:
calculodoiva();
break;
case 4:
creditos();
break;
case 9:
printf("\n\tA sua op%c%co foi: Sair",char (135), char (132));
break;
default:
printf("\n\tEscolha uma op%c%co correcta", char(135), char(132));
} while (!kbhit()); /* Enquanto não clicar numa tecla , espera ... */
system("cls");
} while (opcao!=9);
}