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);
}
}
Pergunta
Soniq
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 *-*
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.