Ir para conteúdo
Fórum Script Brasil

Soniq

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Soniq

  • Data de Nascimento 28/04/1993

Contatos

  • Website URL
    http://
  • ICQ
    0

Soniq's Achievements

0

Reputação

  1. Tenho que entregar um trabalho na faculdade com a seguinte descrição: Suponha dois vetores, um de registros de estudantes e outro de registros de funcionários. Cada registro de estudante contém campos para o último nome, o primeiro nome e um índice de pontos de graduação. Cada registro de funcionário contém membros para o último nome, primeiro nome e o salário. Ambos os vetores são classificados em ordem alfabética pelo último e pelo primeiro nome. Dois registros com o último e o primeiro nome iguais não aparecem no mesmo vetor. Faça um programa em C para conceder um aumento de 10% a todo funcionário que tenha um registro de estudante cujo índice de pontos de graduação seja maior que 3.0. ØObs: Não é necessário implementar a ordenação. Considere que os dados já são entrados pelo usuário na ordem correta. Criei esse código, mas não consigo fazer com que funcione e travei totalmente :/ tenho q entregar esse trabalho até as 23h55 de segunda feira, se alguém poder me ajudar agradeço muito *-* #include <stdio.h> #include <stdlib.h> typedef struct{ char ultimo_nome[25]; char primeiro_nome[25]; float pontos_de_graduacao; } aluno; typedef struct{ char ultimo_nome[25]; char primeiro_nome[25]; float salario; } funcionario; void cadastro_funcionario(funcionario *cad_funcionario[], int numero_de_funcionarios) { int i; for (i=0; i < numero_de_funcionarios; i++) { printf("\n%iºFuncionário\n\n", i+1); printf("Digite o ultimo nome do funcionário: "); scanf("%s", cad_funcionario[i]->ultimo_nome); printf("Digite o primeiro nome do funcionário: "); scanf("%s", cad_funcionario[i]->primeiro_nome); printf("Digite salario do funcionário: "); scanf("%f", &cad_funcionario[i]->salario); printf("\n"); } } void cadastro_graduados(aluno *cad_aluno[], int numero_de_graduados) { int i; for (i=0; i < numero_de_graduados; i++) { printf("\n%iºFuncionário Graduado\n\n", i+1); printf("Digite o ultimo nome do funcionário graduado: "); scanf("%s", cad_aluno[i]->ultimo_nome); printf("Digite o primeiro nome do funcionário graduado: "); scanf("%s", cad_aluno[i]->primeiro_nome); printf("Digite o índice de graduação (0.00 - 5.00): "); scanf("%f", &cad_aluno[i]->pontos_de_graduacao); } } /*/void pesquisa(funcionario *cad_funcionario[], aluno *cad_aluno[], int numero_pesquisa, int numero_de_funcionarios, int numero_de_graduados) { }//*/ int main() { int numero_de_funcionarios, numero_de_graduados, numero_pesquisa, i,j; printf("Quantos funcionários deseja cadastrar em seu banco de dados (máximo 100): "); scanf("%d", &numero_de_funcionarios); funcionario *cad_funcionario[numero_de_funcionarios]; for (i=0; i<numero_de_funcionarios; i++) cad_funcionario[i] = NULL; for (i=0; i<numero_de_funcionarios; i++) cad_funcionario[i] = malloc (sizeof(cad_funcionario)); cadastro_funcionario(cad_funcionario, numero_de_funcionarios); printf("\n|||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n\n"); printf("Quantos funcionários graduados deseja cadastrar em seu banco de dados (máximo 100): "); scanf("%d", &numero_de_graduados); printf("\n|||||||||||CADASTRO DE FUNCIONARIOS GRADUADOS||||||||||||\n"); aluno *cad_aluno[numero_de_graduados]; for (i=0; i<numero_de_graduados; i++) cad_aluno[i] = NULL; for (i=0; i<numero_de_graduados; i++) cad_aluno[i] = malloc (sizeof(cad_aluno)); cadastro_graduados(cad_aluno, numero_de_graduados); //pesquisa(cad_funcionario, cad_aluno, numero_pesquisa, numero_de_funcionarios, numero_de_graduados); int f,a; for (f = 0; f < numero_de_funcionarios; f++){ int posicao = -1; for (a = 0; a < numero_de_graduados; a++){ int compUltimo = strcmp(cad_funcionario[f]->ultimo_nome, cad_aluno[a]->ultimo_nome); if (compUltimo == 0){ int compPrimeiro = strcmp(cad_funcionario[f]->primeiro_nome, cad_aluno[a]->primeiro_nome); if (compPrimeiro == 0){ posicao = a; //memoriza a posicao do aluno break; } else if (compPrimeiro < 0){ // break; } } else if (compUltimo < 0){ // se o nome vem depois não tem porque continuar a busca para este funcionario break; } } if (posicao >= 0){ //quer dizer que achou o registro de aluno if (cad_aluno[posicao]->pontos_de_graduacao >= 3){ float antigo = cad_funcionario[f]->salario; cad_funcionario[f]->salario *= 1.1; //aumento de 10% no salario printf("Funcionario %s, %s possui %.2f pontos de graduacao, seu salario passou de %.2f para %.2f\n", cad_funcionario[f]->ultimo_nome, cad_funcionario[f]->primeiro_nome, cad_aluno[posicao]->pontos_de_graduacao, antigo, cad_funcionario[f]->salario); } else{ printf("Funcionario %s, %s não possui pontos de graduacao suficientes (%.2f pontos)\n", cad_funcionario[f]->ultimo_nome, cad_funcionario[f]->primeiro_nome, cad_aluno[posicao]->pontos_de_graduacao); } } else{ printf("Funcionario %s, %s não graduado\n", cad_funcionario[f]->ultimo_nome, cad_funcionario[f]->primeiro_nome); } } printf ("FUNCIONARIOS DEPOIS DO AUMENTO %d\n", numero_de_funcionarios); for (i=0; i < numero_de_funcionarios; i++){ printf ("%s %s %.2f\n", cad_funcionario[i]->ultimo_nome, cad_funcionario[i]->primeiro_nome, cad_funcionario[i]->salario); } }
×
×
  • Criar Novo...