Jump to content
Fórum Script Brasil
  • 0

Desafio em C++, ajudinha


Valeriabahia
 Share

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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. =)

Edited by vangodp
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...