claudiaferreira Posted September 22, 2022 at 07:30 AM Report Share #627363 Posted September 22, 2022 at 07:30 AM Bom dia a todos, Tenho mais uma duvida num programa que realizei, que não consigo que faça a parte do "if" para indicar se existe mulher ou homem, indica sempre o valor da média igual nas duas categorias. Abaixo apresento o que me aparece quando compilo. Citação Indique o número do 1º operário: 20 Indique o número de peças fabricadas no mês pelo 1º operário: 32 Indique o sexo do operário (F-Feminino ou M-Masculino): M O número do operário é de Classe 2 e o seu salário é de 636,00. Indique o número do 2º operário: 32 Indique o número de peças fabricadas no mês pelo 2º operário: 56 Indique o sexo do operário (F-Feminino ou M-Masculino): M O número do operário é de Classe 3 e o seu salário é de 1380,00. O total da folha de pagamentos da fábrica é de 2016,00. O número total de peças fabricadas no mês é de 88. A média de peças fabricadas por homens é de 44,00. A média de peças fabricadas por mulheres é de 44,00. O número do operário com maior salário é 32,00. Press any key to continue . . . Já pensei se era da função igual que utilizo no "if" mas se colocar apenas um igual, não dá qualquer valor, já tentei de diversas formas, mas sinceramente não estou a conseguir descodificar o problema, será que me podem ajudar, se faz favor? Envio abaixo o código que fiz: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> #include<ctype.h> #include<math.h> int main(){ setlocale(LC_ALL, "Portuguese"); int numero, num_pecas, operario, total_pecas=0, cont_M=0, cont_F=0; char sexo; float salario_minimo=600.0, salario, total_pag=0, media_M=0, media_F=0, salario_maior=0, maior; for(operario=1;operario<=2;operario++){ printf("Indique o número do %dº operário: ", operario); scanf("%d",&numero); printf("Indique o número de peças fabricadas no mês pelo %dº operário: ", operario); scanf("%d",&num_pecas); printf("Indique o sexo do operário (F-Feminino ou M-Masculino): "); scanf("%c%*c",&sexo); if(num_pecas<=30.00){ printf("\nO número do operário é de Classe 1 e "); salario=salario_minimo; } if(num_pecas>30.0 && num_pecas<=50.0){ printf("\nO número do operário é de Classe 2 e "); salario=salario_minimo+(salario_minimo*(3.0/100.0)*(num_pecas-30.0)); } if(num_pecas>50.0){ printf("\nO número do operário é de Classe 3 e "); salario=salario_minimo+(salario_minimo*(5.0/100.0)*(num_pecas-30.0)); } printf("o seu salário é de %.2f.\n", salario); printf("\n"); total_pag+=salario; total_pecas+=num_pecas; if(sexo='M'){ media_M+=num_pecas; cont_M++; } if(sexo='F'){ media_F+=num_pecas; cont_F++; } if(operario==1){ salario_maior=salario; maior=numero; }else{ if(salario>salario_maior){ salario_maior=salario; maior=numero; } } } printf("\nO total da folha de pagamentos da fábrica é de %.2f.\n", total_pag); printf("O número total de peças fabricadas no mês é de %d.\n",total_pecas); if(cont_M==0){ printf("Não há nenhum homem!\n"); }else{ media_M=media_M/cont_M; printf("A média de peças fabricadas por homens é de %.2f.\n",media_M); } if(cont_F==0){ printf("Não há nenhuma mulher!\n"); }else{ media_F=media_F/cont_F; printf("A média de peças fabricadas por mulheres é de %.2f.\n",media_F); } printf("O número do operário com maior salário é %.2f.\n", maior); system("pause"); return 0; } Obrigada. Link to comment Share on other sites More sharing options...
Rui Carlos Posted September 23, 2022 at 05:18 PM Report Share #627386 Posted September 23, 2022 at 05:18 PM A utilização de = para comparações está errada. Depois de corrigir isso, podes usar um debugger para executar o programa passo a passo, e ver onde está o problema. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Luis Ribeiro Posted September 24, 2022 at 11:40 AM Report Share #627387 Posted September 24, 2022 at 11:40 AM Pois pelo que percebo deverias ter usado == para efetuar as comparações, de outra maneira confundes o programa com variáveis =. Julgo que o Rui carlos queria dizer isso. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now