Ir para conteúdo
Fórum Script Brasil
  • 0

Desafio em C++, ajudinha


Valeriabahia

Pergunta

Olá Pessoal, alguém poderia me ajudar a inserir o cálculo do INSS???

Não estou conseguindo

Fazer um sistema que:
  • Calcule quanto um individuo deve pagar de imposto de renda;
  • As informações coletadas são:
  • Ganho anual;
  • Dedução do INSS (gerada a partir do ganho anual);
  • Demais deduções;
  • Exibir todos os cálculos realizados;
Todos os cálculos realizados devem ser armazenados em um arquivo.
Segue abaixo o que já consegui fazer, vejam:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void menu();//menu de opções
void impostoderenda();
struct menu{
int escolha;
int argc;
char *argv[];
};
struct imposto {
float salariobruto,salarioliquido;
float Nd;
float Od;
char nome[200];
float imposto;
};
int main(struct menu p) {
menu();//vai para o menu
system("PAUSE");
return 0;
}
void menu(){
struct menu p;
printf("Escolha: \n 1- Calcular deducao de imposto de renda \n 2- Sair\n");
scanf("%d",&p.escolha);
if(p.escolha==1){
impostoderenda();
}
//sai do programa
else{
exit(0);//sai do programa
}
}
//função para digitar o numero
void impostoderenda(){
struct imposto p;
FILE *arq;
arq=fopen("calculo.txt","w");
system("cls");//limpa a tela
printf("\nDigite seu nome completo [maximo de 200 caracteres]:\n");
fflush(stdin);//limpa o buffer de saida
scanf("%[^\n]",&p.nome);//captura toda a linha digitada
printf("\nDigite o valor do seu salario bruto anual:\n");
scanf("%f",&p.salariobruto);
printf("tem dependentes?se sim,quantos?\n");
scanf("%f",&p.Nd);
printf("tem outras deducoes?se sim digite o valor:\n");
scanf("%f",&p.Od);
if(21453.24>=p.salariobruto){
printf(" \n não paga parcela");
}
else if (p.salariobruto<=32151.48){
p.imposto = (p.salariobruto-p.Nd*189.59-p.Od )*0.075;
printf(" \n \n o valor da parcela a deduzir do imposto de renda em reais é:\n\n%.2f",p.imposto);
}
else if(p.salariobruto<=42869.1615){
p.imposto=(p.salariobruto-p.Nd*189.59-p.Od)*0.15;
printf(" \n \n o valor da parcela a deduzir do imposto de renda em reais é:\n\n%.2f",p.imposto);
}
else if (p.salariobruto<=53565.72){
p.imposto =(p.salariobruto-p.Nd*189.59-p.Od)*0.225;
printf(" \n \n o valor da parcela a deduzir do imposto de renda em reais é:\n\n%.2f",p.imposto);
}else{
p.imposto =(p.salariobruto-p.Nd*189.59-p.Od)*0.275;
printf(" \n \n o valor da parcela a deduzir do imposto de renda em reais é:\n\n%.2f",p.imposto);
}
fprintf(arq," o nome do usuario:%s\n salario anual:%.f\numero de dependentes:%f\ntaxa do imposto a pagar:\n%.2f",p.nome,p.salariobruto,p.Nd,p.imposto);
fclose(arq);
printf("\n \n");
printf("Dados gravados com sucesso!");
printf("\n \n ");
system("PAUSE");//pausa o programa
system("cls");//limpa a tela
menu();//volta pro menu
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

o unico erro que vejo é na hora de ler o nome na linha 62 mais ou menos. trocar scanf("%[^\n]",&p.nome); por scanf("%[^\n]",p.nome);. você esta lendo um string e não um int, float, ou char por botar exemplos.

O próprio nome de um array é considerado um ponteiro, e quando lemos ponteiro não pomos o operador de indireção(&) adiante da variável. Não se esqueça que um array é um conjunto de chars de forma consecutiva na memoria que é acessível somente através um ponteiro, esse ponteiro inicia sempre apontando a primeira letra do nosso string ou seja p.nome[0]. Para ter uma ideia isso scanf("%[^\n]",p.nome); é a mesca coisa que isso scanf("%[^\n]",&p.nome[0]);, scanf quer saber apartir de que letra tem que começar, podemos começar pelo meio, tipo scanf("%[^\n]",&p.nome[100]);, ou pelo inicio scanf("%[^\n]",&p.nome[0]);, que é a mesma coisa que scanf("%[^\n]",p.nome). Espero que seja entendível a explicação.

Então sabendo o anterior um exemplo é char palavra[100]; o próprio nome palavra é considerado um ponteiro, é como si fosse possível fazer:

char palavra[100];

char *palavra = &palavra[0];

É lógico que isso não existe pois não é possível fazer isso, vai dar erro, más esse é o efeito que tem char palavra[100];.

Sorte Valeria da Bahia. =)

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...