// Verificar se o par�metro � um c�digo ou um nome
int isCodigo = (codigoOuNomeCliente >= 1000); // Assumindo que c�digos de cliente s�o maiores que 1000
fseek(arquivoClientes, 0, SEEK_SET);
// Encontrar o cliente pelo c�digo ou nome
while (fread(&cliente, sizeof(struct Cliente), 1, arquivoClientes) == 1)
{
if ((isCodigo && cliente.codigo == codigoOuNomeCliente) || (!isCodigo && strcmp(cliente.nome, codigoOuNomeCliente) == 0))
{
// Cliente encontrado, agora mostrar suas loca�es
fseek(arquivoLocacoes, 0, SEEK_SET);
printf("Locacoes do cliente %s (Codigo: %d):\n", cliente.nome, cliente.codigo);
while (fread(&locacao, sizeof(struct Locacao), 1, arquivoLocacoes) == 1)
{
if (locacao.codigoCliente == cliente.codigo)
{
// Mostrar informa�es da loca�o
// Aqui voc� pode personalizar a exibi�o conforme necess�rio
printf("Codigo da Locacao: %d\n", locacao.codigo);
// ... outras informa�es da loca�o ...
}
}
printf("Fim das locacoes do cliente %s.\n", cliente.nome);
return; // Saindo da fun�o ap�s mostrar as loca�es do cliente encontrado
}
}
// Se chegou aqui, o cliente n�o foi encontrado
printf("Cliente nao encontrado.\n");
}
EXPLICAÇÃO DO CÓDIGO:
Parâmetros da Função:
FILE arquivoLocacoes: Ponteiro para o arquivo de locações.
FILE arquivoClientes: Ponteiro para o arquivo de clientes.
int codigoOuNomeCliente: Parâmetro que indica se o valor fornecido representa um código de cliente ou um nome.
Verificação do Tipo de Identificação (Código ou Nome):
Utiliza o valor do parâmetro codigoOuNomeCliente para determinar se é um código ou um nome de cliente.
Assume que valores maiores que 1000 representam códigos de cliente (pode variar dependendo da implementação).
Busca do Cliente:
Itera sobre o arquivo de clientes para encontrar o cliente com base no código ou nome fornecido.
Se o cliente é encontrado, exibe uma mensagem inicial com o nome e código do cliente.
Exibição das Locações do Cliente Encontrado:
Itera sobre o arquivo de locações para encontrar todas as locações associadas ao cliente encontrado.
Exibe as informações relevantes de cada locação, como o código da locação.
A exibição das informações da locação está incompleta no código fornecido, sendo indicado onde você pode personalizar essa parte conforme necessário.
Mensagem de Conclusão:
Exibe uma mensagem indicando o término das locações do cliente.
Cliente Não Encontrado:
Se o cliente não é encontrado, exibe uma mensagem indicando que o cliente não foi encontrado.
Retorno Antecipado:
A função retorna imediatamente após mostrar as locações do cliente encontrado, evitando continuar a busca desnecessariamente.
void mostrarLocacoesCliente(FILE arquivoLocacoes, FILE arquivoClientes, int codigoOuNomeCliente) { struct Cliente cliente; struct Locacao locacao;
}
EXPLICAÇÃO DO CÓDIGO: Parâmetros da Função:
FILE arquivoLocacoes: Ponteiro para o arquivo de locações. FILE arquivoClientes: Ponteiro para o arquivo de clientes. int codigoOuNomeCliente: Parâmetro que indica se o valor fornecido representa um código de cliente ou um nome. Verificação do Tipo de Identificação (Código ou Nome):
Utiliza o valor do parâmetro codigoOuNomeCliente para determinar se é um código ou um nome de cliente. Assume que valores maiores que 1000 representam códigos de cliente (pode variar dependendo da implementação). Busca do Cliente:
Itera sobre o arquivo de clientes para encontrar o cliente com base no código ou nome fornecido. Se o cliente é encontrado, exibe uma mensagem inicial com o nome e código do cliente. Exibição das Locações do Cliente Encontrado:
Itera sobre o arquivo de locações para encontrar todas as locações associadas ao cliente encontrado. Exibe as informações relevantes de cada locação, como o código da locação. A exibição das informações da locação está incompleta no código fornecido, sendo indicado onde você pode personalizar essa parte conforme necessário. Mensagem de Conclusão:
Exibe uma mensagem indicando o término das locações do cliente. Cliente Não Encontrado:
Se o cliente não é encontrado, exibe uma mensagem indicando que o cliente não foi encontrado. Retorno Antecipado:
A função retorna imediatamente após mostrar as locações do cliente encontrado, evitando continuar a busca desnecessariamente.