Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ricardo gomes araujo

[Resolvido] If

Recommended Posts

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 50 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

 

Eu fiz só que esta dando erro não sei o que fiz de errado.

Segue o código abaixo

 

#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("Pecas fabricados no 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; 
             else   if (pecas >= 31) && (pecas <= 35) 
				salario = salario_minimo + pecas * (0.03 * salario_minimo);  
				else 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; 
                     else 
                     salario = salario_minimo + pecas * (0.05 * salario_minimo); 
                         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("Salario do funcionario: %f",salario); 

printf("Deseja inserir novos dados? S - Sim ou N - Nao");
scanf("%c",&resposta);

} while(resposta = 'N');

printf("Folha mensal de pagamentos: %f ",folha_mensal);
printf("Total de peças fabricadas no mes: %d ",numero_total_pecas );
printf("Media de pecas de homens da classe A: %f ",total_peca_homens_a / total_homens_a);
printf("Media de pecas de homens da classe B: %f ",total_peca_homens_b / total_homens_B);
printf("Media de pecas de homens da classe C: %f ",total_peca_homens_c / total_homens_c);
printf("Media de pecas de mulheres da classe A: %f ",total_peca_mulher_a / total_mulher_a);
printf("Media de pecas de mulheres da classe B: %f ",total_peca_mulher_b / total_mulher_B);
printf("Media de pecas de mulheres da classe C: %f ",total_peca_mulher_c / total_mulher_c);
printf("Operario com o maior salario: %c ",operario_maior_salario);

system("pause");
getch();

}

Alguém poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom é melhor você dizer q erro q é, para melhor ajudá-lo!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

O programa não deixa eu digitar o nome do funcionario e nem o sexo

já pula direto para pedir para inserir novos dados.

 

E no hora de mostrar a resposta o programa não finaliza

 

e alterei a seguinte linha:

 

 if (pecas>=31 && (pecas<=35) 

para

 

 if (pecas>=31 && pecas<=35) 

E coloquei as chaves de abertura e fechamento que estavam faltando

 

E o programa ainda da erro na hora da entrada de dados e na finalização

 

Segue o código alterado

 

#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("INFORME O NOME DO FUNCIONARIO: ");
scanf("%c", &nome);
printf("INFORME O NUMERO DE PECAS FABRICADOS POR MES: ");
scanf("%d", &pecas);
printf("INFORME O 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 - Nao:");
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");
getch();

}

Bom é melhor você dizer q erro q é, para melhor ajudá-lo!

 

[]s

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver

 

#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 - Nao: ");
        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

o nome é soh 1 caracter?

veja esse tópico e tente adaptar o q esta nele no seu programa: http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/

 

[]s

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.