Mascara 0 Denunciar post Postado Abril 19, 2007 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
skimo-solar 0 Denunciar post Postado Abril 19, 2007 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
Myho 2 Denunciar post Postado Abril 21, 2007 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
skimo-solar 0 Denunciar post Postado Abril 21, 2007 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
Myho 2 Denunciar post Postado Abril 22, 2007 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 sucedidaAqui deu tudo certo esse mesmo codigo. Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Abril 23, 2007 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
heppys 0 Denunciar post Postado Abril 23, 2007 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
Myho 2 Denunciar post Postado Abril 24, 2007 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