Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal , tenho uma duvida , tenho um trabalho de programação para fazer , porém o problema é um  tanto complexo.

Um programa que receba o salário e o número de dependentes dos funcionários, determine o valor de IR individual e:
• A média dos salários;
• A média de número de dependentes;
• A média dos valores de IR calculados;
• O número de funcionários por faixa de IR.

A minha dúvida é :como faço pra armazenar e calcular a media dos salários , dos dependentes , dos valores de ir e o numero de funcionários por faixa.

Por enquanto só consegui calcular o valor de ir , porém não faço ideia de como atender os requisitos acima.

Segue o meu código :

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main(){
    float salario,inss,bcalculo,aliquota,deducao,ir;
    int dependentes;
    scanf("%f",&salario);
    
    if(salario<=1751.81)
    {
        inss=salario*0.08;
        printf("%.2f\n",inss);
    }
    else if(salario>=1751.82 && salario<=2919.72)
    {
        inss=salario*0.09;
        printf("%.2f\n",inss);
    }
    else if(salario>=2919.73 && salario<=5839.45)
    {
        inss=salario*0.11;
        printf("%.2f\n",inss);
    }
    else{
        inss=642.34;
        printf("%.2f\n",inss);
    }
    scanf("%d",&dependentes);
    bcalculo=salario-inss-(dependentes*189.59);
    printf("%.2f\n",bcalculo);
    if(bcalculo<=1903.98)
    {
        aliquota=1;
        deducao=0;
        ir=bcalculo*aliquota-deducao;
        printf("%.1f\n%.2f\n%.2f", aliquota,deducao,ir);
    }
    else if(bcalculo>=1903.99 && bcalculo<=2826.65)
    {
        aliquota=0.75;
        deducao=142.80;
        ir=bcalculo*aliquota-deducao;
        printf("%.1f\n%.2f\n%.2f", aliquota,deducao,ir);
    }
    else if(bcalculo>=2826.66 && bcalculo<=3751.05)
    {
        aliquota=0.15;
        deducao=354.80;
        ir=bcalculo*aliquota-deducao;
        printf("%.1f\n%.2f\n%.2f", aliquota,deducao,ir);
    }
    else if(bcalculo>=3751.06 && bcalculo<=4664.68)
    {
        aliquota=0.225;
        deducao=636.13;
        ir=bcalculo*aliquota-deducao;
        printf("%.1f\n%.2f\n%.2f", aliquota,deducao,ir);
    }
    else{
        aliquota=0.275;
        deducao=869.36;
        ir=bcalculo*aliquota-deducao;
        printf("%.1f\n%.2f\n%.2f", aliquota,deducao,ir);
    }
    
    
    
    return 0;
}

 

Será que alguém poderia me ajudar , por favor

  • Curtir 1
Postado

Fica mais fácil se você usar um estrutura e um array desta estrutura.

struct cadastrofuncionario {
	float salario,inss,bcalculo,aliquota,deducao,ir;
    int dependentes;
};

cadastrofuncionario funcionarios[30];

Coloquei 30, mas pode ser maior/menor.

Depois de cadastrados todos os funcionários, você faz pode calcular as médias e outros parâmetros.

  • Curtir 1
Postado
1 hora atrás, Flávio Pedroza disse:

Fica mais fácil se você usar um estrutura e um array desta estrutura.


struct cadastrofuncionario {
	float salario,inss,bcalculo,aliquota,deducao,ir;
    int dependentes;
};

cadastrofuncionario funcionarios[30];

Coloquei 30, mas pode ser maior/menor.

Depois de cadastrados todos os funcionários, você faz pode calcular as médias e outros parâmetros.

Mas então , como eu faço pra armazenar o primeiro salário , somar com o segundo digitado (assim por diante ),e depois tirar a media de todos?

  • Curtir 1
Postado

O exemplo abaixo lê 5 salarios e soma o total na variável auxiliar soma_salarios.

No final é só dividir por 5 para ter a média.

Para o resto (média dependentes, IR, etc.) o princípio é o mesmo.

#include <stdio.h>

struct cadastrofuncionario {
	float salario,inss,bcalculo,aliquota,deducao,ir;
    int dependentes;
};
cadastrofuncionario funcionarios[5];
float soma_salarios;

int main() {
	for (int i=0; i < 5; i++) {
	   printf ("Entre o salario:");
       scanf ("%f", &funcionarios[i].salario);
       fflush(stdin);
       soma_salarios += funcionarios[i].salario;                 
    }
    //calcule e mostre a media aqui
}

 

  • Curtir 1
Postado

sim , mas no caso seriam valores indefinidos , de acordo com a quantidade  de salários que o usuário digitar

 

  • Curtir 1
Postado

você pode então não armazenar as informações digitadas, apenas os resultados:

O programa abaixo lê os salários e soma até o usuário digitar um salário com valor menor ou igual a zero;

#include <stdio.h>

struct cadastrofuncionario {
	float salario,inss,bcalculo,aliquota,deducao,ir;
    int dependentes;
};
cadastrofuncionario funcionario;
float soma_salarios;

int main() {
	do {
	   printf ("Entre o salario:");
       scanf ("%f", &funcionario.salario);
       fflush(stdin);
       if (funcionario.salario <=0) break;
       soma_salarios += funcionario.salario;                 
    } while (1);
    //calcule e mostre a media aqui
}

 

  • Curtir 1
Postado
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main(){
    float salario,inss,bcalculo,aliquota,deducao,ir,cont=0,cont2=0,cont3=0,aux,aux2,aux3,mediasal,mediadep,mediair,vsal,soma;
    int dependentes;
	aux=0;
	aux2=0;
	aux3=0;
   
	while(1){
	vsal=salario;
	printf("Digite o salario:\n");
	scanf("%f",&salario);
	soma=salario+vsal;
	aux+=salario;
	if(salario<=0){
		break;
	}	
	if(salario<=1751.81)
	{
		inss=salario*0.08;
		printf("%.2f\n",inss);
		cont++;
	}
	else if(salario>=1751.82 && salario<=2919.72)
	{
		
		inss=salario*0.09;
		printf("%.2f\n",inss);
		cont++;
	}
	else if(salario>=2919.73 && salario<=5839.45)
	{
		
		inss=salario*0.11;
		printf("%.2f\n",inss);
		cont++;
	}
	else{
		
		inss=642.34;
		printf("%.2f\n",inss);
		cont++;
	}	
    aux=salario;
	printf("Digite o numero de dependentes:\n ");
	scanf("%d",&dependentes);
	bcalculo=salario-inss-(dependentes*189.59);
	printf("%.2f\n",bcalculo);
	if(bcalculo<=1903.98)
	{
		aliquota=1;
		deducao=0;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else if(bcalculo>=1903.99 && bcalculo<=2826.65)
	{
		aliquota=0.75;
		deducao=142.80;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else if(bcalculo>=2826.66 && bcalculo<=3751.05)
	{
		aliquota=0.15;
		deducao=354.80;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else if(bcalculo>=3751.06 && bcalculo<=4664.68)
	{
		aliquota=0.225;
		deducao=636.13;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else{
		aliquota=0.275;
		deducao=869.36;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	if(cont>1){
	mediasal=soma/cont;
}
	printf("media salarios\n");
	printf("%.2f\n", mediasal);	
}

	
	
	return 0;
}

consegui modificar pra armazenar e fazer a media dos salários , alguma ideia de como calcular o número de funcionários por faixa de IR?

  • Curtir 1
Postado

Use as variáveis cont, cont1, cont2 e cont3 que você já declarou.

Para cada faixa você incrementa uma diferente.

Elas contam quantos funcionários tem em cada faixa salarial.

 

ex.:

if(salario<=1751.81)
	{
		inss=salario*0.08;
		printf("%.2f\n",inss);
		cont++;
	}
	else if(salario>=1751.82 && salario<=2919.72)
	{
		
		inss=salario*0.09;
		printf("%.2f\n",inss);
		cont1++;
	}
etc.

 

  • Curtir 1
Postado
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main(){
    float salario,inss,bcalculo,aliquota,deducao,ir,cont=0,cont2=0,cont3=0,aux,aux2,aux3,mediasal,mediadep,mediair,vsal,soma,x;
    int dependentes;
	aux=0;
	aux2=0;
	aux3=0;
   
	while(1){
	vsal=salario;
	printf("Digite o salario:\n");
	scanf("%f",&salario);
	soma=salario+vsal;
	aux+=salario;
	if(salario<=0){
		break;
	}	
	if(salario<=1751.81)
	{
		inss=salario*0.08;
		printf("%.2f\n",inss);
		cont++;
	}
	else if(salario>=1751.82 && salario<=2919.72)
	{
		
		inss=salario*0.09;
		printf("%.2f\n",inss);
		cont++;
	}
	else if(salario>=2919.73 && salario<=5839.45)
	{
		
		inss=salario*0.11;
		printf("%.2f\n",inss);
		cont++;
	}
	else{
		
		inss=642.34;
		printf("%.2f\n",inss);
		cont++;
	}	
    aux=salario;
	printf("Digite o numero de dependentes:\n ");
	scanf("%d",&dependentes);
	bcalculo=salario-inss-(dependentes*189.59);
	printf("%.2f\n",bcalculo);
	if(bcalculo<=1903.98)
	{
		aliquota=1;
		deducao=0;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else if(bcalculo>=1903.99 && bcalculo<=2826.65)
	{
		aliquota=0.75;
		deducao=142.80;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else if(bcalculo>=2826.66 && bcalculo<=3751.05)
	{
		aliquota=0.15;
		deducao=354.80;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else if(bcalculo>=3751.06 && bcalculo<=4664.68)
	{
		aliquota=0.225;
		deducao=636.13;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	else{
		aliquota=0.275;
		deducao=869.36;
		ir=bcalculo*aliquota-deducao;
		printf("%.1f\n%.2f\n%.2f\n", aliquota,deducao,ir);
		aux2=ir;
	}
	if(cont>1){
	mediasal=soma/cont;
}
	printf("media salarios\n");
	printf("%.2f\n", mediasal);	
}

	
	
	return 0;
}

alguém pode me ajudar a ver o que ta errado ?, ate o segundo salario ele calcula a media normal , mas quando é mais de 2 ele zoa a media

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!