Exercícios - 04-12
Enviado: 08 Dez 2024, 22:57
1) Faça um programa que realize o cadastro de contas bancárias com as seguintes informações: número da conta, nome do cliente e saldo. O banco permitirá o cadastramento de apenas 15 contas e não poderá haver mais que uma conta com o mesmo número. Crie o menu de opções a seguir.
Menu de opções:
1. Cadastrar contas.
2. Visualizar todas as contas de determinado cliente.
3. Excluir a conta com menor saldo (supondo a não existência de saldos iguais).
4. Sair.
Menu de opções:
1. Cadastrar contas.
2. Visualizar todas as contas de determinado cliente.
3. Excluir a conta com menor saldo (supondo a não existência de saldos iguais).
4. Sair.
Código: Selecionar todos
#include <stdio.h>
#include <string.h>
#define MAX_CONTAS 15
#define MAX_NOME 50
typedef struct {
int numero;
char nomeCliente[MAX_NOME];
float saldo;
} ContaBancaria;
void cadastrarConta(ContaBancaria contas[], int *totalContas);
void visualizarContas(ContaBancaria contas[], int totalContas);
void excluirContaMenorSaldo(ContaBancaria contas[], int *totalContas);
int buscarContaPorNumero(ContaBancaria contas[], int totalContas, int numero);
int main() {
ContaBancaria contas[MAX_CONTAS];
int totalContas = 0;
int opcao;
do {
printf("\nMenu de opções:\n");
printf("1. Cadastrar contas\n");
printf("2. Visualizar todas as contas de determinado cliente\n");
printf("3. Excluir a conta com menor saldo\n");
printf("4. Sair\n");
printf("Escolha uma opção: ");
scanf("%d", &opcao);
switch (opcao) {
case 1:
cadastrarConta(contas, &totalContas);
break;
case 2:
visualizarContas(contas, totalContas);
break;
case 3:
excluirContaMenorSaldo(contas, &totalContas);
break;
case 4:
printf("Saindo...\n");
break;
default:
printf("Opção inválida! Tente novamente.\n");
}
} while (opcao != 4);
return 0;
}
void cadastrarConta(ContaBancaria contas[], int *totalContas) {
if (*totalContas >= MAX_CONTAS) {
printf("Não é possível cadastrar mais contas. Limite atingido!\n");
return;
}
ContaBancaria novaConta;
printf("Número da conta: ");
scanf("%d", &novaConta.numero);
if (buscarContaPorNumero(contas, *totalContas, novaConta.numero) != -1) {
printf("Erro: Já existe uma conta com este número.\n");
return;
}
printf("Nome do cliente: ");
scanf(" %[^\n]", novaConta.nomeCliente);
printf("Saldo inicial: ");
scanf("%f", &novaConta.saldo);
contas[*totalContas] = novaConta;
(*totalContas)++;
printf("Conta cadastrada com sucesso!\n");
}
void visualizarContas(ContaBancaria contas[], int totalContas) {
char nomeCliente[MAX_NOME];
int encontrado = 0;
printf("Digite o nome do cliente: ");
scanf(" %[^\n]", nomeCliente);
printf("Contas do cliente %s:\n", nomeCliente);
for (int i = 0; i < totalContas; i++) {
if (strcmp(contas[i].nomeCliente, nomeCliente) == 0) {
printf("Número da conta: %d | Saldo: %.2f\n", contas[i].numero, contas[i].saldo);
encontrado = 1;
}
}
if (!encontrado) {
printf("Nenhuma conta encontrada para este cliente.\n");
}
}
void excluirContaMenorSaldo(ContaBancaria contas[], int *totalContas) {
if (*totalContas == 0) {
printf("Não há contas cadastradas para excluir.\n");
return;
}
int indiceMenorSaldo = 0;
for (int i = 1; i < *totalContas; i++) {
if (contas[i].saldo < contas[indiceMenorSaldo].saldo) {
indiceMenorSaldo = i;
}
}
printf("Excluindo a conta com menor saldo:\n");
printf("Número: %d | Cliente: %s | Saldo: %.2f\n",
contas[indiceMenorSaldo].numero,
contas[indiceMenorSaldo].nomeCliente,
contas[indiceMenorSaldo].saldo);
for (int i = indiceMenorSaldo; i < *totalContas - 1; i++) {
contas[i] = contas[i + 1];
}
(*totalContas)--;
printf("Conta excluída com sucesso!\n");
}
int buscarContaPorNumero(ContaBancaria contas[], int totalContas, int numero) {
for (int i = 0; i < totalContas; i++) {
if (contas[i].numero == numero) {
return i;
}
}
return -1;
}