#include #include #include #include #define MAXIMO 100 float totalnovo; float salario[MAXIMO]; float novosal[MAXIMO]; char nome[MAXIMO][50]; int apagado[MAXIMO]; int entrada_de_dados(int qtde) { int i; int resp; printf ("## SUB-ROTINA DE ENTRADA DE DADOS ##\n"); i=qtde; while (1) { printf ("Digite o nome: "); scanf ("%s",nome[i]); printf ("Digite o salario: "); scanf ("%f",&salario[i]); apagado[i]=0; i++; printf ("Deseja entrar mais dados? (0=nao, 1=sim) "); scanf ("%d",&resp); if (resp==0) return(i); if (i == MAXIMO) { printf ("## Numero maximo de dados excedido! ##\n"); return(i); } } } lista_dados(int ndados) { int i; printf("\n## SUB-ROTINA DE LISTA SALARIOS (%d) ##\n",ndados); printf ("LISTA DE SALARIOS\n"); for (i=0; i < ndados; i++) { if (apagado[i]==0) printf ("O funcionario %s tem o salario: %.2f \n",nome[i],salario[i]); } } float total_salario(int qtde) { int i; float soma; printf ("\n## SUB-ROTINA CALCULA TOTAL DE SALARIOS ##\n"); printf ("TOTAL DE SALARIOS\n"); soma=0.0; for (i=0; i < qtde; i++) { if (apagado[i]==0) soma = soma + salario[i]; } return(soma); } float media_salario(int qtde) { int i; int conta; float soma; printf ("\n## SUB-ROTINA CALCULA A MEDIA DE SALARIOS ##\n"); printf ("MEDIA DE SALARIOS\n"); soma=0.0; conta=0; for (i=0; i < qtde; i++) { if (apagado[i]==0) { soma = soma + salario[i]; conta++; } } return(soma/conta); } float desvio_salario(int qtde) { int i; int conta; float media; float soma; float total; float desvpadp; printf ("\n## SUB-ROTINA CALCULA A DESVIO PADRAO DE SALARIOS ##\n"); media=media_salario(qtde); conta=0; soma=0.0; for (i=0; i < qtde; i++) { if (apagado[i]==0) { soma = soma + (salario[i] - media) * (salario[i] - media); conta++; } } total = soma / conta; desvpadp = sqrt(total); return(desvpadp); } media_e_desvio(int nrofunc, float *media, float *desvio) { *media=media_salario(nrofunc); *desvio=desvio_salario(nrofunc); } maior_salario(int qtde, float *max, int *indice) { int i; printf ("\n## SUB-ROTINA CALCULA DETERMINA O MAIOR SALARIO ##\n"); if (qtde > 0) { *max=salario[0]; *indice=0; } else *max=0.0; for (i=0; i < qtde; i++) { if ((salario[i] >= *max) && (apagado[i] == 0)) { *max=salario[i]; *indice=i; } } } menor_salario(int qtde, float *min, int *indice) { int i; printf ("\n## SUB-ROTINA CALCULA DETERMINA O MENOR SALARIO ##\n"); if (qtde > 0) { *min=salario[0]; *indice=0; } else *min=0.0; for (i=0; i < qtde; i++) { if ((salario[i] <= *min) && (apagado[i] == 0)) { *min=salario[i]; *indice=i; } } } apaga_um_dado(int totdados) { int i; char nomeapaga[30]; printf("Qual funcionario deseja apagar? "); scanf("%s",nomeapaga); for (i=0; i < totdados; i++) { if (strcmp(nomeapaga,nome[i]) == 0) apagado[i]=1; } } int main() { int opcao, resp; int ind; int totdados=0; float totalsalario; float mediasalario; float dp; float maior,menor; /* Laco de leitura e processamento de dados */ printf ("\n\n> Controle de Salarios ACME <\n\n"); totdados=0; while(1) { printf ("\nMENU:\n"); printf ("1. Ler dados dos funcionarios\n"); printf ("2. Soma dados (salarios)\n"); printf ("3. Media dados (salarios)\n"); printf ("4. Desvio padrao\n"); printf ("5. Maior dado\n"); printf ("6. Menor dado\n"); printf ("7. Listar dados\n"); printf ("8. Apagar TODOS dados\n"); printf ("9. Apagar UM UNICO dado\n"); printf ("0: SAIR\n"); printf ("Digite a sua opcao: "); scanf ("%d",&opcao); printf ("\n"); if (opcao == 1) { totdados=entrada_de_dados(totdados); printf("Total de dados digitados = %d\n",totdados); } else if (opcao == 2) { totalsalario=total_salario(totdados); printf("Total de salarios = %.2f\n",totalsalario); media_e_desvio(totdados,&mediasalario,&dp); printf("Media = %.2f - DesvPad = %.2f\n",mediasalario,dp); } else if (opcao == 3) { mediasalario=media_salario(totdados); printf("Media de salarios = %.2f\n",mediasalario); } else if (opcao == 4) { dp=desvio_salario(totdados); printf("Desvio padrao = %.4f\n",dp); } else if (opcao == 5) { maior_salario(totdados,&maior,&ind); printf("Maior salario = %.2f\n",maior); printf("Nome do funcionario eh: %s\n",nome[ind]); } else if (opcao == 6) { menor_salario(totdados,&menor,&ind); printf("Menor salario = %.2f\n",menor); printf("Nome do funcionario eh: %s\n",nome[ind]); } else if (opcao == 7) { lista_dados(totdados); } else if (opcao == 8) { printf("Confirma: apagar todos os dados? (0=nao, 1=sim) "); scanf ("%d",&resp); if (resp==1) { totdados=0; printf("# Dados APAGADOS!\n"); } else printf("# Dados PRESERVADOS!\n"); } else if (opcao == 9) { apaga_um_dado(totdados); } else if (opcao == 0) { printf("Confirma: Deseja finalizar o programa? (0=nao, 1=sim) "); scanf ("%d",&resp); if (resp==1) break; } else printf("\n## Opcao invalida ##\n"); } printf("FIM!\n"); system("pause"); return 0; }