Ir para conteúdo

Arquivado

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

Mascara

Programa Calculo Imposto de Renda

Recommended Posts

Bom Dia será que algém poderia me dá uma força para que eu possa terminar esse programa ele e simples e imprime na tela três funcionarios com Nome, CPF, Salário , e desconta o imposto de renda e imprime na tela só que preciso calcular o valor dos três contribuintes e imprimir também gostaria que algém fizesse o favor de revisar e postar uma solução para o meu problema.obrigado segui o código#include<stdio.h>main(){ struct irpf { char nome[40]; char cpf[12]; float salario; }; struct irpf contribuinte; float desc; printf("Calculo do IRF \n\n"); for(int i= 0; i < 3; i++) { printf("Informe o Nome:" ); gets(contribuinte.nome); printf("Informe o CPF:"); gets(contribuinte.cpf); printf("Informe o Salario:"); scanf("%f", &contribuinte.salario); printf("\n\n"); printf("Sr. %s \n",contribuinte.nome); printf("CPF nº %s\n", contribuinte.cpf); printf("Salario R$ %6.2f\n",contribuinte.salario); desc = 27.5*contribuinte.salario/100; printf("Desconto IRPF: %5.2f\n",desc); } }

Compartilhar este post


Link para o post
Compartilhar em outros sites

for(int i= 0; i < 3; i++)
Este tipo de declaração vai gerar um erro, declare o i junto com as outras variáveis.

 

Outro problema é que no final da exibição, quando você pressiona o <ENTER>, este ENTER já está entrando no primeiro gets do loop.

Você pode fazer uma gambiarra pra resolver isso declarando uma variável char lixo e colocando um scanf("%c",&lixo) no final do loop;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola

 

coloque um getchar(); logo abaixo do scanf("%f", &contribuinte.salario); eu testei aqui e resolveu o problema.

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=368

nesse link esta comentado o porque o erro acontecia e a recomendação do getchar();

 

 

E nao tem problema nenhum declarar

for(int i= 0; i < 3; i++)
contando q voce nao utilize a variavel declarada, no caso i, para mais nada. *** contando que o compilador usado aceite tambem (dev e visual C++ aceitam, outros nunca testei) ***

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque um getchar(); logo abaixo do scanf("%f", &contribuinte.salario); eu testei aqui e resolveu o problema.http://www.vivaolinux.com.br/dicas/verDica.php?codigo=368nesse link esta comentado o porque o erro acontecia e a recomendação do getchar();

Aqui você fez a mesma coisa que eu fiz só que eu fiz com o scanf, mas tá valendo. :)

E nao tem problema nenhum declararfor(int i= 0; i < 3; i++)contando q voce nao utilize a variavel declarada, no caso i, para mais nada.

Aqui no meu gcc não pode não.
main() { for(int i=0; i<3; i++) printf("1"); return 0; }

teste.c: In function `main':teste.c:1: parse error before `int'teste.c:1: `i' undeclared (first use in this function)teste.c:1: (Each undeclared identifier is reported only onceteste.c:1: for each function it appears in.)teste.c:1: parse error before `)'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi mau, nem tinha visto q ja estava respondido, mas fica como outra alternativa.E quanto a declarar variavel dentro do for, nunca usei o gcc, uso o Dev-cpp ou o Visual c++, e em ambos nao a problema nenhum. E eu acostumei a usar assim, entao é quase automatico pra mim fazer isso no FOR.

#include <stdio.h>main() { 	  for(int i=0; i<3; i++) 	  printf("1"); 	  	  	  getchar();	  return 0; }

Compilador: Default compilerBuilding Makefile: "D:\Dev-Cpp\234124124\Makefile.win"Executando make...make.exe -f "D:\Dev-Cpp\234124124\Makefile.win" allg++.exe -c main.cpp -o main.o -I"d:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"d:/Dev-Cpp/include/c++/3.4.2/backward" -I"d:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"d:/Dev-Cpp/include/c++/3.4.2" -I"d:/Dev-Cpp/include" g++.exe main.o -o "Projeto3.exe" -L"d:/Dev-Cpp/lib" Execução terminadaCompilação bem sucedida

Aqui deu tudo certo esse mesmo codigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então pra explicar.Em C esta declaração vai gerar um erro enquanto em C++ ela é aceitável como uma variável local.Fica aí pro autor do tópico estas observações que devem ser levadas em consideração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abaixo desta linha: printf("Desconto IRPF: %5.2f\n",desc);coloquei:getchar();clrscr();E retirei: for(int i= 0; i < 3; i++)Rodou legal isso no Turbo C.Bom tbm coloquei isso aki:coloque um getchar(); logo abaixo do scanf("%f", &contribuinte.salario);q o Myho indicou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas sem o for como você vai ler os 3 registros necessarios? Retirando o for ele vai ler um registro, calcular o irpf e sair.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.