Ir ao conteúdo
  • Cadastre-se
marvelous2502

C folha de pagamento em c

Posts recomendados

alguem pode me ajudar?tenho  q escrever uma folha de pagamento a entrada e o nome, salario  e comissão e a saida e o salario+ comissão e  o nome da pessoa, caso o salario seja igual tem q sair o nome das pessoas e o salario a abaixo, e tudo em ordem crescente e alfabetica, e para sair do looping e digitando "FIM"

 

EX

ENTRADA

Guilherme Silva 

1000.00

2000.00

Ana patricia

5000.00

200.00

Luis fabiano

3000.00

0.00

FIM

 

SAIDA

olha de Pagamento Salario no Mes: R$ 3000.00

- Guilherme Silva 

- Luis fabiano

- Pedro Paulo

Salario no Mes: R$ 5200.00

- Ana patricia

mas n sei o que estou errado, me ajudem por favor

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

   


int main()
{
  typedef struct estrutura
   {

      char nome[102];
      float salario;
      float comissao;
      float total;
   }trabalhadores;
 int contador = 0;
 
 
  trabalhadores pagamento [100];
 for(int funcionarios= 0;funcionarios<100;funcionarios++)
    {

     fgets(pagamento[funcionarios].nome,102,stdin);

      if (strcmp (pagamento[funcionarios].nome, "FIM\n") == 0)
           break;

     scanf("%f\n",&pagamento[funcionarios].salario);

     scanf("%f\n",&pagamento[funcionarios].comissao);
     
   
     
     pagamento[funcionarios].total = pagamento[funcionarios].comissao + pagamento[funcionarios].salario;
    
  for(funcionarios=0;funcionarios<contador;funcionarios++)
    {
        if(pagamento[funcionarios].nome[100]!=0)
        {
            if(pagamento[funcionarios].total!=pagamento[funcionarios-1].total)
            {
                printf("Salario no Mes: R$ %.2f\n",pagamento[funcionarios].total);
                printf("- %s", pagamento[funcionarios].nome);
            }else
            {
                printf("- %s", pagamento[funcionarios].nome);
            }
        }
    }
  }

  return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 horas atrás, marvelous2502 disse:

mas n sei o que estou errado

No scanf do salário e da comissão remova os \n,

 

scanf("%f",&pagamento[funcionarios].salario);

 

E no loop interno como você não especificou o tipo o programa está usando a mesma variável do outro loop. Resolva isso colocando int (como fez no outro), p.ex

 

for(int funcionarios=0;funcionarios<contador;funcionarios++)
    {
        if(pagamento[funcionarios].nome[100]!=0)
        {
            if(pagamento[funcionarios].total!=pagamento[funcionarios-1].total)
            {
...

Além disso você pode ter problema na entrada de fgets o scanf, se o programa estiver pulando alguma dessas linhas procure uma forma de limpar o buffer do teclado. No fórum deve ter tópicos sobre isso.

 

Para facilitar a identificação do que deve ser digitado você pode usar um printf antes dos inputs, p.ex.

 

printf("Nome: ");
fgets(pagamento[funcionarios].nome,102,stdin);
...
printf("Salário: ");
scanf("%f",&pagamento[funcionarios].salario);
...
printf("Comissão: ");
scanf("%f",&pagamento[funcionarios].comissao);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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...

Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!