fseek(arquivoLocacoes, 0, SEEK_SET);
while (fread(&locacao, sizeof(struct Locacao), 1, arquivoLocacoes) == 1)
{
fseek(arquivoClientes, (locacao.codigoCliente - 1) * sizeof(struct Cliente), SEEK_SET);
fread(&cliente, sizeof(struct Cliente), 1, arquivoClientes);
// Calcular pontos de fidelidade
int pontos = locacao.quantidadeDias * 10;
// Atualizar pontos de fidelidade do cliente
cliente.pontosFidelidade += pontos;
// Atualizar arquivo de clientes
fseek(arquivoClientes, (locacao.codigoCliente - 1) * sizeof(struct Cliente), SEEK_SET);
fwrite(&cliente, sizeof(struct Cliente), 1, arquivoClientes);
}
}
EXPLICAÇÃO DO CÓDIGO:
Declaração de Estruturas:
struct Locacao: Armazena informações sobre uma locação.
struct Cliente: Contém detalhes sobre um cliente.
Inicialização dos Ponteiros:
Inicia o ponteiro do arquivo de locações (arquivoLocacoes) no início do arquivo.
Iteração sobre as Locações:
Utiliza um loop para percorrer todas as locações no arquivo de locações.
Leitura da Locação Atual:
Lê os dados da locação atual do arquivo de locações.
Leitura do Cliente Associado à Locação:
Utiliza o código do cliente associado à locação para posicionar o ponteiro no arquivo de clientes e lê os dados do cliente.
Cálculo dos Pontos de Fidelidade:
Calcula os pontos de fidelidade com base na quantidade de dias da locação (10 pontos por dia).
Atualização dos Pontos de Fidelidade do Cliente:
Atualiza os pontos de fidelidade do cliente somando os pontos calculados.
Atualização do Arquivo de Clientes:
Posiciona o ponteiro no início do registro do cliente no arquivo de clientes.
Escreve os dados atualizados do cliente de volta no arquivo de clientes.
Continuação do Loop:
Retorna ao início do loop para processar a próxima locação.
Conclusão do Processo:
Quando todas as locações foram processadas, a função é concluída.
void calcularPontosFidelidade(FILE arquivoLocacoes, FILE arquivoClientes) { struct Locacao locacao; struct Cliente cliente;
}
EXPLICAÇÃO DO CÓDIGO: Declaração de Estruturas:
struct Locacao: Armazena informações sobre uma locação. struct Cliente: Contém detalhes sobre um cliente. Inicialização dos Ponteiros:
Inicia o ponteiro do arquivo de locações (arquivoLocacoes) no início do arquivo. Iteração sobre as Locações:
Utiliza um loop para percorrer todas as locações no arquivo de locações. Leitura da Locação Atual:
Lê os dados da locação atual do arquivo de locações. Leitura do Cliente Associado à Locação:
Utiliza o código do cliente associado à locação para posicionar o ponteiro no arquivo de clientes e lê os dados do cliente. Cálculo dos Pontos de Fidelidade:
Calcula os pontos de fidelidade com base na quantidade de dias da locação (10 pontos por dia). Atualização dos Pontos de Fidelidade do Cliente:
Atualiza os pontos de fidelidade do cliente somando os pontos calculados. Atualização do Arquivo de Clientes:
Posiciona o ponteiro no início do registro do cliente no arquivo de clientes. Escreve os dados atualizados do cliente de volta no arquivo de clientes. Continuação do Loop:
Retorna ao início do loop para processar a próxima locação. Conclusão do Processo:
Quando todas as locações foram processadas, a função é concluída.