lista_t* operacao_remove_cliente(lista_t* operacoes, lista_t* contas, cliente_t* cliente) { operacao_t *operacao; lista_t *item; lista_t *item_operacao; conta_t *conta; bool teste_transferencia = false; item = contas; while (!lista_vazia(item)) { conta = (conta_t*)item->dado; if (strcmp(conta->cliente_cpf, cliente->cpf) == 0) { item_operacao = operacoes; while (!lista_vazia(item_operacao)) { operacao = (operacao_t*)item_operacao->dado; // Se a conta recebeu uma transferencia, a operação também é removida. teste_transferencia = (operacao->tipo == Transferencia) && (operacao->conta_destino_numero == conta->numero); if (teste_transferencia || (operacao->conta_numero == conta->numero)) { printf("Aviso: A operacao %d do cliente %s sera removida.\n", operacao->codigo, cliente->cpf); operacoes = lista_remove(operacoes, operacao, compara_operacao); } item_operacao = item_operacao->prox; } } item = item->prox; } return operacoes; }
lista_t* operacao_remove(lista_t *operacoes) { bool done = false; char *str; operacao_t *operacao = (operacao_t*)malloc(sizeof(operacao_t)); printf("--- Remover Operacao ---\n"); while (!done) { printf("Informe o codigo da operacao que deseja remover:\n"); str = string_get(OPERACAO_CODIGO_MAX_LEN); if (check_cancelar(str)) { free(str); return operacoes; } operacao->codigo = (unsigned int)atoi(str); free(str); str = NULL; if (!lista_busca(operacoes, operacao, compara_operacao)) { printf("O operacao nao existe, codigo: %d\n", operacao->codigo); } else { done = true; } } operacoes = lista_remove(operacoes, operacao, compara_operacao); printf("Operacao %d removida.\n", operacao->codigo); free(operacao); return operacoes; }
lista_t* cliente_remove(lista_t *clientes, cliente_t *cliente) { lista_t* novo; novo = lista_remove(clientes, cliente, compara_cliente); printf("Cliente %s removido.\n", cliente->cpf); free(cliente); return novo; }
lista_t* conta_remove(lista_t *contas, conta_t *conta) { lista_t* novo; novo = lista_remove(contas, conta, compara_conta); printf("Conta %d removida.\n", conta->numero); free(conta); return novo; }
void *thash_remove( thash *t, unsigned int *sz, char *key ) { unsigned int index = hash( key, t->size, SHIFT ); lista *selected = *(t->table + index); void *res = lista_find( selected, sz, key ); if( res ) selected = lista_remove( selected, key ); return res; }
lista_t* operacao_remove_agencia(lista_t* operacoes, agencia_t* agencia) { operacao_t *operacao; lista_t *item; item = operacoes; while (!lista_vazia(item)) { operacao = (operacao_t*)item->dado; if (operacao->agencia_codigo == agencia->codigo) { printf("Aviso: A operacao %d da agencia %d sera removida.\n", operacao->codigo, agencia->codigo); operacoes = lista_remove(operacoes, operacao, compara_operacao); } item = item->prox; } return operacoes; }
lista_t* conta_remove_cliente(lista_t* contas, cliente_t* cliente) { conta_t *conta; lista_t *item; item = contas; while (!lista_vazia(item)) { conta = (conta_t*)item->dado; if (strcmp(conta->cliente_cpf, cliente->cpf) == 0) { printf("Aviso: A conta %d do cliente %s sera removida.\n", conta->numero, cliente->cpf); contas = lista_remove(contas, conta, compara_conta); } item = item->prox; } return contas; }
lista_t* conta_remove_agencia(lista_t* contas, agencia_t* agencia) { conta_t *conta; lista_t *item; item = contas; while (!lista_vazia(item)) { conta = (conta_t*)item->dado; if (conta->agencia_codigo == agencia->codigo) { printf("Aviso: A conta %d da agencia %d sera removida.\n", conta->numero, agencia->codigo); contas = lista_remove(contas, conta, compara_conta); } item = item->prox; } return contas; }
lista_t* operacao_remove_conta(lista_t* operacoes, conta_t *conta) { operacao_t *operacao; lista_t *item; bool teste_transferencia = false; while (!lista_vazia(item)) { operacao = (operacao_t*)item->dado; // Se a conta recebeu uma transferencia, a operação também é removida. teste_transferencia = (operacao->tipo == Transferencia) && (operacao->conta_destino_numero == conta->numero); if (teste_transferencia || (operacao->conta_numero == conta->numero)) { printf("Aviso: A operacao %d da conta %d sera removida.\n", operacao->codigo, conta->numero); operacoes = lista_remove(operacoes, operacao, compara_operacao); } item = item->prox; } return operacoes; }