MateusFBL / TP_Locadora6

0 stars 0 forks source link

Implemente uma função que calcule a quantidade de pontos de fidelidade de um cliente. #7

Open MateusFBL opened 7 months ago

Vikatormfc commented 7 months ago

void calcularPontosFidelidade(FILE arquivoLocacoes, FILE arquivoClientes) { struct Locacao locacao; struct Cliente cliente;

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.