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

Programa em C com erro


RS25

Pergunta

Estou precisando de ajuda neste programa em C

Numa fábrica trabalham homens e mulheres divididos em três classes:

A – os que fazem até 30 peças por mês

B – os que fazem de 31 a 35 peças por mês

C – os que fazem mais de 35 peças por mês

A classe A recebe salário-mínimo, a classe B recebe salário-mínimo e mais 3% do salário-mínimo por peça, acima das 30 iniciais. A classe C recebe salário mínimo e mais 5% do salário mínimo por peça acima das 30 iniciais.

Fazer um algoritmo que leia o salário mínimo que é igual para todos os trabalhadores independente da classe, e em seguida:

a)Leia várias linhas contendo cada uma

O numero do operário

O número de peças fabricadas por mês

O sexo do operário

b)Calcule e escreva para um conjunto de 10 funcionários:

O salário de cada operário

O total da folha mensal de pagamento da fábrica

O número total de peças fabricadas por mês

A média de peças fabricadas pelos homens em cada classe

A média de peças fabricadas pelas mulheres em cada classe

O numero do operário de maior salário

Segue o que eu consegui implementar com erro.

Os erros são: Não consigo digitar o nome do operário, os ifs estão com erro e o programa não finaliza da maneira correta.

Alguém poderia me ajudar?

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

main() 
{

float salario_minimo,folha_mensal,salario,maior_salario;
int numero_total_pecas,pecas,total_homens_a,total_homens_b,total_homens_c,total_mulher_a,total_mulher_b,total_mulher_c;
int total_peca_homens_a,total_peca_homens_b,total_peca_homens_c,total_peca_mulher_a,total_peca_mulher_b,total_peca_mulher_c;
char nome,sexo,resposta,operario_maior_salario;

numero_total_pecas = 0;
folha_mensal = 0;
total_homens_a = 0;
total_homens_b = 0;
total_homens_c = 0;
total_mulher_a = 0;
total_mulher_b = 0;
total_mulher_c = 0;
total_peca_homens_a = 0;
total_peca_homens_b = 0;
total_peca_homens_c = 0;
total_peca_mulher_a = 0;
total_peca_mulher_b = 0;
total_peca_mulher_c = 0;

printf("Informe o salario minimo:"); 
scanf("%d", &salario_minimo);

do {

printf("Nome do funcionario: ");
scanf("%c", &nome);
printf("Entre com as pecas fabricadas por mes: ");
scanf("%d", &pecas);
printf("Sexo do funcionario: ");
scanf("%c", &sexo);

numero_total_pecas = numero_total_pecas + pecas;

         if (pecas <= 30) 
         salario = salario_minimo; 
            if (sexo == 'M') {
            total_homens_a = total_homens_a + 1;
            total_peca_homens_a = total_peca_homens_a + pecas;  }
             else
            total_mulher_a = total_mulher_a + 1;
            total_peca_mulher_a = total_peca_mulher_a + pecas; 
             if (pecas>=31 && pecas<=35) {
             salario = salario_minimo + pecas * (0.03 * salario_minimo); }
             else
              salario = salario_minimo + pecas * (0.05 * salario_minimo); 
               if (sexo == 'M') {
                     total_homens_b = total_homens_b + 1;
                     total_peca_homens_b = total_peca_homens_b + pecas; }
                     else 
                     total_mulher_b = total_mulher_b + 1;
                     total_peca_mulher_b = total_peca_mulher_b + pecas; 
                         if (sexo == 'M')  {
                         total_homens_c = total_homens_c + 1;
                         total_peca_homens_c = total_peca_homens_c + pecas; }
                         else 
                         total_mulher_c = total_mulher_c + 1;
                         total_peca_mulher_c = total_peca_mulher_c + pecas; 

folha_mensal = folha_mensal + salario;

             if (salario > maior_salario) {
             operario_maior_salario = nome; } 

printf("Deseja inserir novos dados: S - Sim ou N - não:");
scanf("%c",&resposta);
} while(resposta != 'N');

printf("Salario do funcionario: %f \n",salario); 
printf("Total da folha mensal: %f \n",folha_mensal);
printf("Total de pecas fabricadas: %d \n",numero_total_pecas );
printf("Media de pecas homens classe A: %f \n",total_peca_homens_a / total_homens_a);
printf("Media de pecas homens classe B: %f \n",total_peca_homens_b / total_homens_B);
printf("Media de pecas homens classe C: %f \n",total_peca_homens_c / total_homens_c);
printf("Media de pecas mulheres classe A:: %f \n",total_peca_mulher_a / total_mulher_a);
printf("Media de pecas mulheres classe B: %f \n",total_peca_mulher_b / total_mulher_b);
printf("Media de pecas mulheres classe C: %f \n",total_peca_mulher_c / total_mulher_c);
printf("Nome do operario com o maior salário: %c \n ",operario_maior_salario);

system("pause");


}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Aconselho a colocar chaves sempre que possível, também aconselho fazer uso de uma identação padrão, isso reduz consideravelmente o número de erros...

E ó, aconselho você a dar uma olhada em vetores, ficaria 70% mais fácil usa-los.

if( condição )
{
    façaalgumacoisa;
    façaoutracoisa;
    for( bla; ble; bli )
    {
        ++variavellegal;
    }
    if( nossa )
    {
        vaipralonge;
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver este problema

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

int main(void)
{

    float salario_minimo = 0;
    float folha_mensal = 0;
    float salario = 0;
    float maior_salario = 0;
    float media = 0;

    int numero_total_pecas = 0;
    int pecas = 0;
    int total_homens_a = 0;
    int total_homens_b = 0;
    int total_homens_c = 0;
    int total_mulher_a = 0;
    int total_mulher_b = 0;
    int total_mulher_c = 0;
    int total_peca_homens_a = 0;
    int total_peca_homens_b = 0;
    int total_peca_homens_c = 0;
    int total_peca_mulher_a = 0;
    int total_peca_mulher_b = 0;
    int total_peca_mulher_c = 0;

    char nome[50]; 
    char sexo;
    char resposta;
    char operario_maior_salario[50]; 

    printf("Informe o salario minimo:");
    scanf("%f", &salario_minimo);

    do
    {

        printf("Nome do funcionario: ");
        fflush(stdin); 
        scanf("%s", nome); 
        printf("Pecas fabricados no mes: ");
        fflush(stdin); 
        scanf("%d", &pecas);
        printf("Sexo do funcionario: ");
        fflush(stdin); 
        scanf("%c", &sexo);

        numero_total_pecas = numero_total_pecas + pecas;

        // Classe A
        if ( pecas <= 30 )
        {

            salario = salario_minimo;

            if ( sexo == 'M' || sexo == 'm' )
            {
                total_homens_a = total_homens_a + 1;
                total_peca_homens_a = total_peca_homens_a + pecas;
            }
            else
            {

                total_mulher_a = total_mulher_a + 1;
                total_peca_mulher_a = total_peca_mulher_a + pecas;
            }

        }
        else
        {

            // Classe B
            if ( pecas >= 31 && pecas <= 35 )
            {

                salario = salario_minimo + ( pecas - 30 ) * (0.03 * salario_minimo);

                if ( sexo == 'M' || sexo == 'm' )
                {
                    total_homens_b = total_homens_b + 1;
                    total_peca_homens_b = total_peca_homens_b + pecas;
                }
                else
                {
                    total_mulher_b = total_mulher_b + 1;
                    total_peca_mulher_b = total_peca_mulher_b + pecas;
                    salario = salario_minimo + pecas * (0.05 * salario_minimo);
                }

            }
            else
            {

                // Classe C
                salario = salario_minimo + ( pecas - 30 ) * (0.05 * salario_minimo);

                if ( sexo == 'M' || sexo == 'm' )
                {
                    total_homens_c = total_homens_c + 1;
                    total_peca_homens_c = total_peca_homens_c + pecas;
                }
                else
                {
                    total_mulher_c = total_mulher_c + 1;
                    total_peca_mulher_c = total_peca_mulher_c + pecas;
                }

            }
        }

        folha_mensal = folha_mensal + salario;

        if ( salario > maior_salario )
            strcpy(operario_maior_salario, nome); 

        printf("Salario do funcionario: %0.f\n", salario);

        printf("Deseja inserir novos dados? S - Sim ou N - não: ");
        fflush(stdin); 
        scanf("%c",&resposta);

    }
    while ( resposta != 'N' && resposta != 'n' );

    printf("Folha mensal de pagamentos: %0.f\n", folha_mensal);
    printf("Total de peças fabricadas no mes: %0.d\n", numero_total_pecas );

    media = 0;
    if ( total_homens_a > 0)
        media = (total_peca_homens_a / total_homens_a);
    printf("Media de pecas de homens da classe A: %0.f\n", media ); 

    media = 0;
    if ( total_homens_b > 0)
        media = (total_peca_homens_b / total_homens_b);
    printf("Media de pecas de homens da classe B: %0.f\n", media ); 

    media = 0;
    if ( total_homens_c > 0)
        media = (total_peca_homens_c / total_homens_c);
    printf("Media de pecas de homens da classe C: %0.f\n", media ); 

    media = 0;
    if ( total_mulher_a > 0)
        media = (total_peca_mulher_a / total_mulher_a);
    printf("Media de pecas de mulheres da classe A: %0.f\n", media ); 

    media = 0.0;
    if ( total_mulher_b > 0)
        media = (total_peca_mulher_b / total_mulher_b);
    printf("Media de pecas de mulheres da classe B: %0.f\n", media ); 

    media = 0;
    if ( total_mulher_c > 0)
        media = (total_peca_mulher_c / total_mulher_c);
    printf("Media de pecas de mulheres da classe C: %0.f\n", media ); 

    printf("Operario com o maior salario da empresa: %s\n", operario_maior_salario); 

    system("pause");
    return 0;

}
Tópico resolvido
Aconselho a colocar chaves sempre que possível, também aconselho fazer uso de uma identação padrão, isso reduz consideravelmente o número de erros... E ó, aconselho você a dar uma olhada em vetores, ficaria 70% mais fácil usa-los.
if( condição )
{
    façaalgumacoisa;
    façaoutracoisa;
    for( bla; ble; bli )
    {
        ++variavellegal;
    }
    if( nossa )
    {
        vaipralonge;
    }
}

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...