コード例 #1
0
int main(){
	no *inicio, *fim, *novo;

	//Inclusao na lista do primeiro elemento
	inicio = (no*) malloc(sizeof(no));
	inicio->ant = NULL;
	inicio->prox = NULL;

	printf("Entre com o valor do primeiro elemento: ");
	scanf("%d",&inicio->valor);

	fim = novo = inicio;

	while(novo->valor != -1){
	  novo = (no*) malloc(sizeof(no));
	  fim->prox = novo;
	  novo->ant = fim;
	  novo->prox = NULL;
	  fim = novo;
	  printf("Entre com o novo valor: ");
	  scanf("%d", &novo->valor);
	}

	//Consulta Lista
	consultar(inicio);
	remover(3, &inicio);
	remover(1, &inicio);
	consultar(inicio);
	system("pause>null");
}
コード例 #2
0
int consultar(arvore *aux,int numero,int achou){
	if(aux!=NULL && achou==0){
		if(aux->info==numero){
			achou=1;
		}
		else if(numero < aux->info)
			achou=consultar(aux->esq,numero,achou);
		else
			achou=consultar(aux->dir,numero,achou);
	}
	return achou;
}//método de consulta na árvore
コード例 #3
0
ファイル: tela_produto.cpp プロジェクト: jmessias1725/sexloja
void tela_produto::buscar_informacoes_his_saida(int id){
    conexao_bd conexao;
    QSqlDatabase bd;

    int id_venda;
    int quantidade;
    double valor_venda_uni;
    QString data;

    std::vector< his_saidas * > aux_his;

    //realiza conexão ao banco de dados
    if (conexao.conetar_bd()){

        //Retorna o banco de dados
        bd = conexao.retorna_bd();

        //Declara a variável que irá fazer a consulta
        QSqlQuery consultar(bd);

        //realiza a consulta
        consultar.exec("SELECT l.`id_venda`, l.`quantidade`, l.`valor_venda_uni`, c.`data_venda` FROM lista_venda l,venda c WHERE l.id_venda=c.id_venda AND l.id_produto = "+QString::number(id)+";");
        while(consultar.next()){
            id_venda = consultar.value(0).toString().toInt();
            quantidade = consultar.value(1).toString().toInt();
            valor_venda_uni = consultar.value(2).toString().toDouble();
            data = consultar.value(3).toString();
            aux_his.push_back(new his_saidas(id_venda,quantidade,valor_venda_uni,data));
        }
        consultar.clear();
        bd.close();
        conexao.fechar_conexao();
    }
    mostrar_informacoes_his_saida(aux_his);
}
コード例 #4
0
ファイル: vector_dinamico.hpp プロジェクト: abdelix/Gravitoid
Clase operator[](const unsigned indice) const
		{
			Clase e;
			e=consultar(indice);
			return e;
			
		}
コード例 #5
0
ファイル: arvoretrie.c プロジェクト: pedronovaes/text-search
//funcao para inserir em ordem crescente
void inserir_crescente(PLista *l, char *palavra)
{
    PLista p, q, r;
    p = ((Lista *)malloc(sizeof(Lista)));
    p->palavra = malloc(strlen(palavra));
    r = *l;
    if(consultar(*l, palavra) == 1)
    	return;
    if(r == NULL) //lista vazia
    {
        strcpy(p->palavra, palavra);
        p->prox = NULL;
        *l = p;
    }
    else
    {
        for(q = NULL, r = *l; (r); q = r, r = r->prox)
        {
            if((strcmp(palavra, r->palavra) > 0) && (r->prox == NULL)) //final da lista
            {
                strcpy(p->palavra, palavra);
                //printf("ordenada %s\n", p->palavra);
                p->prox = NULL;
                r->prox = p;
                return;
            }
            else
            {
                if((strcmp(palavra, r->palavra) < 0) && (q == NULL)) //inicio da lista
                {
                    strcpy(p->palavra, palavra);
                    //printf("ordenada %s\n", p->palavra);
                    p->prox = r;
                    *l = p;
                    return;
                }
                else
                {
                    if((strcmp(palavra, r->palavra) < 0) && (q)) //meio da lista
                    {
                        strcpy(p->palavra, palavra);
                        //printf("ordenada %s\n", p->palavra);
                        q->prox = p;
                        p->prox = r;
                        return;
                    }
                }
            }
        }
    }
}
コード例 #6
0
bool ConjuntoRestaurantes::procesarVisitante(Visitante* visitante,
		string nombreRestaurante) {

	Restaurante *restaurante;

	if (consultar(nombreRestaurante, restaurante)) {

		if (visitanteCabeEnRestaurante(restaurante,
				visitante->getComensales())) {

			restaurante->reajustarComensales(-visitante->getComensales());

			restaurante->hacerReserva(visitante);

			return true;
		}
	}

	return false;
}
コード例 #7
0
/**
 * Função principal
 * 
 * @param argc
 * @param argv
 * @return 
 */
int main(int argc, char *argv[]) {
    char nome[20], operacao;
    int idade, chave;

    // Criação de lista de reinserção de elementos
    node *LISTA = (node *) malloc(sizeof (node));
    if (!LISTA) {
        //        fprintf(stderr, "memória insuficiente para criar lista \n");
    } else {
        inicia(LISTA);
    }

    // Criação de arquivo
    if ((arquivo_hashing = fopen(ARQUIVO, "rb")) == NULL) {
        // inicializa tabela hash
        inicializar();
        // cria arquivo para inserção da tabela hash
        criar_arquivo();

    }

    // Verifica qual operação será executada
    scanf("%c", &operacao);

    do {
        switch (operacao) {
            case 'i':
                scanf("%d", &chave);
                // scanf lendo string com espaços em branco
                scanf(" %[^\n]s", &nome);
                //                fflush(stdin);
                scanf("%d", &idade);
                inserir_chave(chave, nome, idade);
                break;

            case 'c':
                //                fprintf(stderr, "CONSULTAR\n");
                scanf("%d", &chave);
                consultar(chave, 0);
                break;

            case 'r':
                //                fprintf(stderr, "REMOVER\n");
                scanf("%d", &chave);
                int result = consultar(chave, 1);
                if (result != -1) {
                    //                    fprintf(stderr, "indíce para remover: %d\n", result);
                    // remoção
                    remover(chave);
                } else {
                    fprintf(stderr, "chave nao encontrada: %d", chave);
                }
                break;

            case 'p':
                //                fprintf(stderr, "IMPRIMIR\n");
                imprimir();
                break;

            case 'm':
                //                fprintf(stderr, "MEDIA DE ACESSOS\n");
                media_acessos();
                break;

            case 'e':
                return 0;
                break; //exit

            default:
                break;

        }
        // limpa caracter do buffer antes do próximo loop
        operacao = getchar();
    } while (operacao != 'e');

    //    fclose(arquivo_hashing);
    return 0;
}
コード例 #8
0
/**
 * Remove chave 
 * @param chave a ser removida
 * @return 
 */
void remover(int chave) {
    int salto, index_aux, pai_index;
    registro cleaner;
    cleaner.apontador = -1;
    cleaner.chave = -1;
    cleaner.idade = -1;
    cleaner.index_father = -1;
    strcpy(cleaner.nome, "");

    // inicializa lista
    node *LISTA = (node *) malloc(sizeof (node));
    if (!LISTA) {
        //        fprintf(stderr, "Sem memória disponivel!\n");
        exit(1);
    } else {
        inicia(LISTA);
    }
    // arquivo binário
    if ((arquivo_hashing = fopen(ARQUIVO, "rb+")) == NULL) {
        //        fprintf(stderr, "\nErro ao abrir arquivo!");
        //        printf("\nErro ao abrir arquivo!");
        return;
    }
    // consultar índice a ser removido
    int indice_remove = consultar(chave, 1);
    // pode ser 0 até TAMANHO_ARQUIVO
    if (indice_remove != -1) {
        // lê o registro da posição a ser removido
        fseek(arquivo_hashing, ((indice_remove + 1) * sizeof (struct REGISTRO)), SEEK_SET);
        fread(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);
        // verifica se corresponde a chave a ser removida
        if (tabela_h.chave == chave) {
            // salva índice para pai
            pai_index = tabela_h.index_father;
            // salva índice original
            index_aux = indice_remove;
            salto = h2(tabela_h.chave) * tabela_h.apontador + index_aux;
            if (salto >= TAMANHO_ARQUIVO)
                salto -= TAMANHO_ARQUIVO;

            while (tabela_h.apontador != -1) {

                fseek(arquivo_hashing, ((salto + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                fread(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);

                insereFim(LISTA, tabela_h.chave, tabela_h.nome, tabela_h.idade);
                index_aux = salto;

                salto = h2(tabela_h.chave) * tabela_h.apontador + salto;
                if (salto >= TAMANHO_ARQUIVO)
                    salto -= TAMANHO_ARQUIVO;

                //                limpa_registro(index_aux);
                remove_registro(index_aux);

            }
            // remove índice
            //            limpa_registro(indice_remove);
            remove_registro(indice_remove);

            limpa_apontador_pai(pai_index);
            reinsere_lista(LISTA);
        }
    }
}
コード例 #9
0
/**
 * Calcula média de acessos as chaves inseridas
 */
void media_acessos() {
    float count_jumps = 0, qtd_chaves = 0;
    //    int count_jumps = 0, qtd_chaves = 0;
    node *LISTA = (node *) malloc(sizeof (node));
    if (!LISTA) {
        exit(1);
    } else {
        inicia(LISTA);
    }
    if ((arquivo_hashing = fopen(ARQUIVO, "rb+")) == NULL) {
        printf("\nErro ao abrir arquivo!");
        return;
    }
    //    int i;
    // contar as chaves inseridas, salvar em uma lista e consultar até o final da lista
    for (int i = 0; i < TAMANHO_ARQUIVO; i++) {

        fseek(arquivo_hashing, ((i + 1) * sizeof (struct REGISTRO)), SEEK_SET);
        fread(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);
        // insere todas as chaves do arquivo na lista
        if (tabela_h.chave != -1) {
            insereFim(LISTA, tabela_h.chave, tabela_h.nome, tabela_h.idade);
            qtd_chaves++;
        }
    }
    if (vazia(LISTA)) {

        //        return;
    }
    node *tmp;
    tmp = LISTA->prox;

    //loop para contar os acessos
    while (tmp != NULL) {
        int indice_elemento = consultar(tmp->chave, 1);
        int exit = 0;
        //         retirar depois
        //        printf("Chave: %d %s %d\n", tmp->chave, tmp->nome, tmp->idade);


        // consultar todos os pais
        while (exit == 0) {
            fseek(arquivo_hashing, (indice_elemento + 1) * sizeof (struct REGISTRO), SEEK_SET);
            fread(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);

            //            fprintf(stderr, "jumps %f\n", count_jumps);
            //saída do loop dos pais 
            if (tabela_h.index_father == -1) {
                exit = 1;
                //                fprintf(stderr, "cj %d", count_jumps);
            } else
                indice_elemento = tabela_h.index_father;
            // incrementa contador
            count_jumps++;
        }
        // seleciona próximo da lista
        tmp = tmp->prox;
    }

    if (qtd_chaves != 0) {
        float media_acessos = count_jumps / qtd_chaves;
        fprintf(stderr, "%.1f", media_acessos);
    } else {
        fprintf(stderr, "0.0");
    }


    // media = acessos / TAMANHO_ARQUIVO
    fclose(arquivo_hashing);
}
コード例 #10
0
/**
 * Inserir registro na tabela hash
 * @param nome
 * @param idade
 * @param chave
 */
void inserir_chave(int chave, char nome[20], int idade) {
    int aux, indice = 0, salto, count_jumps = 0, go_to_index, index_aux, index_before_jump;
    registro register_aux, register_jump;

    indice = (int) h1(chave);
    // se já não existir, insere
    //    if (!check_key(chave)) {
    // não existe
    if (consultar(chave, 1) == -1) {
        register_aux.chave = chave;
        strcpy(register_aux.nome, nome);
        register_aux.index_father = -1;
        register_aux.idade = idade;
        register_aux.apontador = -1;

        if ((arquivo_hashing = fopen(ARQUIVO, "rb+")) == NULL) {
            printf("\nErro ao abrir arquivo!");
            return;
        }
        rewind(arquivo_hashing);

        fseek(arquivo_hashing, ((indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
        fread(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);

        // SEM colisão
        if (tabela_h.chave == -1) {
            fseek(arquivo_hashing, ((indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
            fwrite(&register_aux, sizeof (struct REGISTRO), 1, arquivo_hashing);
        }// 
        else {
            // verificar se o que está na posição está no seu home adress
            if (h1(tabela_h.chave) == indice) {
                // está no homeAdress 
                if (tabela_h.apontador == -1) {
                    //NÃO tem sucessor. Salta para o sucessor
                    salto = h2(tabela_h.chave);
                    fseek(arquivo_hashing, ((salto + indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                    fread(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);
                    index_aux = indice; //salva o índice atual
                    // CASO BASE
                    if (tabela_jump.chave == -1) {
                        // salva o novo registro
                        fseek(arquivo_hashing, ((salto + indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                        // salva o indice do pai 
                        register_aux.index_father = indice;
                        fwrite(&register_aux, sizeof (struct REGISTRO), 1, arquivo_hashing);
                        // lê registro para salvar apontador para sucessor
                        fseek(arquivo_hashing, ((indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                        fread(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);
                        count_jumps++;
                        tabela_h.apontador = count_jumps;
                        // salva apontador para sucessor
                        fseek(arquivo_hashing, ((indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                        fwrite(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);
                    }
                    // posição ocupada - pular de h2 em h2 até achar uma disponível
                    if (tabela_jump.chave != -1) {
                        //                        index_aux++;
                        go_to_index = salto + index_aux;
                        // loop de busca de posição vazia
                        do {
                            fseek(arquivo_hashing, ((go_to_index + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                            fread(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);
                            count_jumps++;
                            if (tabela_jump.chave != -1) {
                                // posição ocupada, procurar nova posição
                                //                                count_jumps++; //acerta apontador de saltos do home adress
                                //                                index_aux++;
                                index_aux = go_to_index + salto;
                                //                                go_to_index = salto + index_aux;
                                go_to_index = go_to_index + salto;
                                if (go_to_index >= TAMANHO_ARQUIVO)
                                    go_to_index -= TAMANHO_ARQUIVO;
                            } else {
                                // salva o registro
                                fseek(arquivo_hashing, ((go_to_index + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                                // salva o indice do pai 
                                register_aux.index_father = indice;
                                fwrite(&register_aux, sizeof (struct REGISTRO), 1, arquivo_hashing);
                                // acertando o apontador de sucessores
                                tabela_h.apontador = count_jumps; //acerta o apontador de saltos
                                fseek(arquivo_hashing, ((indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                                fwrite(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);
                            }

                        } while (tabela_jump.chave != -1 && go_to_index != indice);
                    }
                } else {
                    // TEM SUCESSORE(S). É uma cadeia
                    salto = (h2(tabela_h.chave) * tabela_h.apontador) + indice;
                    if (salto >= TAMANHO_ARQUIVO)
                        salto -= TAMANHO_ARQUIVO;
                    // guarda o indice atual para saber onde acertar o apontador
                    int new_index = salto;

                    fseek(arquivo_hashing, ((salto + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                    fread(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);
                    count_jumps++;

                    while (tabela_jump.apontador != -1 && new_index != indice) {
                        salto = (h2(tabela_jump.chave) * tabela_jump.apontador) + new_index;
                        if (salto >= TAMANHO_ARQUIVO)
                            salto -= TAMANHO_ARQUIVO;
                        new_index = salto;
                        // salva o índice anterior ao salto
                        index_before_jump = new_index;
                        count_jumps++; //salva o número de saltos p/ register_aux

                        fseek(arquivo_hashing, ((new_index + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                        fread(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);
                    }
                    // saiu pq achou o último da cadeia
                    if (new_index != indice) {
                        // salta pelo h2 até achar uma vaga ou terminar o arquivo
                        index_before_jump = new_index; // salva o índice a ser atualizado
                        salto = h2(tabela_jump.chave) + new_index;
                        int index_h2 = h2(tabela_jump.chave);

                        do {
                            fseek(arquivo_hashing, ((salto + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                            fread(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);
                            if (tabela_jump.chave == -1) {
                                fseek(arquivo_hashing, ((salto + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                                // salva o indice do pai 
                                register_aux.index_father = index_before_jump;
                                //                                register_aux.index_father = indice;
                                fwrite(&register_aux, sizeof (struct REGISTRO), 1, arquivo_hashing);

                                // acertar o apontador
                                fseek(arquivo_hashing, ((index_before_jump + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                                fread(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);
                                tabela_jump.apontador = count_jumps;
                                // salva saltos para pai
                                fseek(arquivo_hashing, ((index_before_jump + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                                fwrite(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);

                                register_aux = tabela_jump;
                                fseek(arquivo_hashing, ((index_before_jump + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                                //                                fwrite(&tabela_jump, sizeof (struct REGISTRO), 1, arquivo_hashing);
                                fwrite(&register_aux, sizeof (struct REGISTRO), 1, arquivo_hashing);

                                //                                fclose(arquivo_hashing);

                                // previnir loop infinito
                                return;
                            } else {
                                // saltando de h2 em h2 até encontrar uma posição 
                                new_index = salto;
                                salto += index_h2;
                                if (salto >= TAMANHO_ARQUIVO)
                                    salto -= TAMANHO_ARQUIVO;
                            }
                            count_jumps++;
                        } while (tabela_jump.apontador != -1 || salto != indice);
                    }
                }
            }// NÃO ESTÁ NO HOME ADRESS
            else {
                // retira ele e os seus sucessores e os reinsere
                int pai = tabela_h.index_father;
                // inicializa lista
                node *LISTA = (node *) malloc(sizeof (node));
                if (!LISTA) {
                    //                    fprintf(stderr, "Sem memória disponivel!\n");
                    exit(1);
                } else {
                    inicia(LISTA);
                }
                // NÃO TEM SUCESSORES - APENAS 1 A SER REINSERIDO
                if (tabela_h.apontador == -1) {
                    int key = tabela_h.chave, age = tabela_h.idade;
                    char name[20];
                    strcpy(name, tabela_h.nome);
                    // salva na lista para reinserção
                    insereFim(LISTA, tabela_h.chave, tabela_h.nome, tabela_h.idade);
                    // insere no lugar deste o registro
                    fseek(arquivo_hashing, ((indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                    fwrite(&register_aux, sizeof (struct REGISTRO), 1, arquivo_hashing);

                    fclose(arquivo_hashing);
                    // ACERTA APONTADOR DO PAI
                    limpa_apontador_pai(pai);
                    // reinsere o elemento
                    reinserir_chave(key, name, age);
                    // REINICIA A LISTA
                    inicia(LISTA);
                    return;
                }// tem que reinserir todos até o final da cadeia
                else {
                    int jump_to;
                    // LOOP até encontrar o final da cadeia
                    while (tabela_h.apontador != -1) {
                        // salva na lista para reinserção
                        insereFim(LISTA, tabela_h.chave, tabela_h.nome, tabela_h.idade);
                        // calcula salto para o próximo para inserir
                        jump_to = (h2(tabela_h.chave) * tabela_h.apontador) + indice;
                        if (jump_to >= TAMANHO_ARQUIVO)
                            jump_to -= TAMANHO_ARQUIVO;
                        // MARCAR POSIÇÃO COMO VÁLIDA
                        limpa_registro(indice);
                        // lê o próximo da cadeia
                        fseek(arquivo_hashing, ((jump_to + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                        fread(&tabela_h, sizeof (struct REGISTRO), 1, arquivo_hashing);
                    }
                    // insere o último da cadeia
                    insereFim(LISTA, tabela_h.chave, tabela_h.nome, tabela_h.idade);
                    // MARCAR POSIÇÃO COMO VÁLIDA
                    limpa_registro(jump_to);

                    // após inserir antigos na lista, insere novo 
                    fseek(arquivo_hashing, ((indice + 1) * sizeof (struct REGISTRO)), SEEK_SET);
                    fwrite(&register_aux, sizeof (struct REGISTRO), 1, arquivo_hashing);

                    fclose(arquivo_hashing);
                    // ACERTA APONTADOR DO PAI
                    limpa_apontador_pai(pai);
                    //reinsere os da lista
                    reinsere_lista(LISTA);
                    // reinicia a lista
                    inicia(LISTA);
                }
                //                exibe(LISTA);
            }
        }
        fclose(arquivo_hashing);
    } else {
        fprintf(stderr, "Chave ja existente\n");
    }
    //    imprimir()
}
コード例 #11
0
ファイル: abc.cpp プロジェクト: okiwan/adts
template <class C, class I> I ABC<C, I>::consultar(C pclau) {
	return consultar(pclau, &arrel);
}
コード例 #12
0
void tela_restaurar_produto::buscar_produtos(void){
    conexao_bd conexao;
    QSqlDatabase bd;

    custo_total = 0;

    int aux_id;
    QString aux_nome;
    QString aux_fabricante;
    QString aux_desc_utilizacao;
    QString aux_cod_barras;
    QString aux_tipo;
    int aux_id_imagem;
    int aux_soma_total = 0;
    float aux_valor_venda;
    float aux_valor_compra;
    float aux_total_disponivel;
    float custo_medio_cada_produto = 0;

    lista_produtos.clear();

    //realiza conexão ao banco de dados
    if (conexao.conetar_bd()){

        //Retorna o banco de dados
        bd = conexao.retorna_bd();

        //Declara a variável que irá fazer a consulta
        QSqlQuery consultar(bd);
        QSqlQuery consultar_his_balanco_estoque(bd);

        //realiza a consulta
        consultar.exec("SELECT id_produto,nome,fabricante,desc_utilizacao,cod_barras,tipo,id_imagem,valor_venda FROM produto WHERE removido=1 ORDER BY nome;");
        while(consultar.next()){
            aux_id = consultar.value(0).toInt();
            aux_nome = consultar.value(1).toString();
            aux_fabricante = consultar.value(2).toString();
            aux_desc_utilizacao = consultar.value(3).toString();
            aux_cod_barras = consultar.value(4).toString();
            aux_tipo = consultar.value(5).toString();
            aux_id_imagem = consultar.value(6).toInt();
            aux_valor_venda = consultar.value(7).toInt();

            //realiza a consulta
            consultar_his_balanco_estoque.exec("SELECT valor_compra,total_disponivel FROM his_balanco_estoque WHERE id_produto = "+QString::number(aux_id)+";");
            while(consultar_his_balanco_estoque.next()){
                aux_valor_compra = consultar_his_balanco_estoque.value(0).toFloat();
                aux_total_disponivel = consultar_his_balanco_estoque.value(1).toString().toInt();
                custo_medio_cada_produto = custo_medio_cada_produto+(aux_valor_compra*aux_total_disponivel);
                aux_soma_total = aux_soma_total+aux_total_disponivel;
            }

            custo_total = custo_total+custo_medio_cada_produto;
            custo_medio_cada_produto = custo_medio_cada_produto/aux_soma_total;
            lista_produtos.push_back(new produto(aux_id,aux_nome,aux_fabricante,aux_desc_utilizacao,aux_cod_barras,aux_tipo,aux_id_imagem,aux_valor_venda,custo_medio_cada_produto,aux_soma_total));
            aux_soma_total=0;
            custo_medio_cada_produto = 0;
        }
        consultar.clear();
        tela_restaurar_produto::mostrar_lista_produtos();
        bd.close();
        conexao.fechar_conexao();
    }
}
コード例 #13
0
ファイル: main.c プロジェクト: YuKill/UEMImplementation
int main() {
	short size;
	int sair = 0;
	int opcao;
	opcao = 10;

	if(!(file_especie = fopen("arquivos/especie.txt", "r+"))) {
		file_especie = fopen("arquivos/especie.txt", "w+");
	}
	if(!(file_individuo = fopen("arquivos/individuo.txt", "r+"))) {
		file_individuo = fopen("arquivos/individuo.txt", "w+");
	}
	if(!(file_capturado = fopen("arquivos/capturado.data", "rb+"))) {
		file_capturado = fopen("arquivos/capturado.data", "wb+");
	}
	while(sair == 0){
		desenhaMenu();
	
		while((opcao!=0) &&(opcao!=1) &&(opcao!=2) &&(opcao!=3) &&(opcao!=4) &&(opcao!=5) &&(opcao!=6) &&(opcao!=7)){
			opcao = pedeOpcao();		
		}
	
		switch(opcao){
			case 0:
				sair = 1;
				break;
	
			case 1:
				adicionar();
				opcao = 10;
				break;
	
			case 2:
				consultar();
				opcao = 10;
				break;
				
			case 3:
				remover();
				opcao = 10;
				break;
			
			case 4:
				consultaPre();
				opcao = 10;
				break;
	
			case 5:
				importar();
				opcao = 10;
				break;

			case 6:
				reescrever();
				rewriteArvore(file_especie);	
				opcao = 10;
				break;

			case 7:
				printTree();
				printf("\n> Arvore B exportada para: output/pages.txt\n");
				sleep(1);
				opcao = 10;
				break;	
		}
	}
	fclose(file_especie);
	fclose(file_individuo);
	fclose(file_capturado);
	return 0;
}
コード例 #14
0
ファイル: fornecedor.cpp プロジェクト: jmessias1725/sexloja
bool fornecedor::salvar_dados_fornecedor(void){
    conexao_bd conexao;
    QSqlDatabase bd;
    QString id_fornecedor;

    //realiza conexão ao banco de dados
    if (conexao.conetar_bd()){

        //Retorna o banco de dados
        bd = conexao.retorna_bd();

        bd.transaction();

        //Declara as variáves que irão inserir os dados no banco de dados.
        QSqlQuery salvar_dados_fornecedor(bd);
        QSqlQuery salvar_dados_telefone_fornecedor(bd);
        QSqlQuery salvar_dados_email_fornecedor(bd);

        //Declara a variável que irá fazer a consulta para determinar o id do fornecedor;
        QSqlQuery consultar(bd);

        //Insere os dados no cadastro dos fornecedors
        salvar_dados_fornecedor.prepare("INSERT INTO fornecedor(cnpj,razao_social,nome,comentario,cep,rua,bairro,ponto_referencia,cidade,uf,numero,estado) VALUES(:cnpj, :razao_social, :nome, :comentario, :numero_cep, :nome_rua, :nome_bairro, :ponto_referencia, :nome_cidade,:sigla_estado, :numero_residencia, :nome_estado)");
        salvar_dados_fornecedor.bindValue(":cnpj",cnpj);
        salvar_dados_fornecedor.bindValue(":razao_social",razao_social);
        salvar_dados_fornecedor.bindValue(":nome",nome);
        salvar_dados_fornecedor.bindValue(":comentario",comentario);
        salvar_dados_fornecedor.bindValue(":numero_cep",numero_cep);
        salvar_dados_fornecedor.bindValue(":nome_rua",nome_rua);
        salvar_dados_fornecedor.bindValue(":nome_bairro",nome_bairro);
        salvar_dados_fornecedor.bindValue(":ponto_referencia",ponto_referencia);
        salvar_dados_fornecedor.bindValue(":nome_cidade",nome_cidade);
        salvar_dados_fornecedor.bindValue(":sigla_estado",sigla_estado);
        salvar_dados_fornecedor.bindValue(":numero_residencia",numero_residencia);
        salvar_dados_fornecedor.bindValue(":nome_estado",nome_estado);
        salvar_dados_fornecedor.exec();

        //realiza a consulta para determinar  o id do fornecedor.
        consultar.exec("SELECT id_fornecedor FROM fornecedor");
        if(consultar.last()){
            id_fornecedor = consultar.value(0).toString();
        }

        //Insere os números de telefone no cadastro dos fornecedors
        for (int i=0;i<int(lista_telefone.size());i++){
            salvar_dados_telefone_fornecedor.prepare("INSERT INTO tel_fornecedor(id_fornecedor,telefone,operadora) VALUES(:id_fornecedor, :telefone, :operadora)");
            salvar_dados_telefone_fornecedor.bindValue(":id_fornecedor",id_fornecedor);
            salvar_dados_telefone_fornecedor.bindValue(":telefone",QString::fromStdString(lista_telefone[i]));
            salvar_dados_telefone_fornecedor.bindValue(":operadora",QString::fromStdString(lista_operadora[i]));
            salvar_dados_telefone_fornecedor.exec();
        }

        //Insere os emails no cadastro dos fornecedors
        for (int i=0;i<int(lista_email.size());i++){
            salvar_dados_email_fornecedor.prepare("INSERT INTO email_fornecedor(id_fornecedor,e_mail) VALUES(:id_fornecedor, :email)");
            salvar_dados_email_fornecedor.bindValue(":id_fornecedor",id_fornecedor);
            salvar_dados_email_fornecedor.bindValue(":email",QString::fromStdString(lista_email[i]));
            salvar_dados_email_fornecedor.exec();
        }

        //Verifica se os dados podem ser salvos, caso sim realiza o Commite, do contrário o Rollback.
        if((salvar_dados_fornecedor.lastError().number()<=0)&&(salvar_dados_telefone_fornecedor.lastError().number()<=0)&&(salvar_dados_email_fornecedor.lastError().number()<=0)){

            //Finaliza a inserçao dos dados.
            bd.commit();

            //Gera mensagem de que tudo ocorreu direito.
            QPixmap icone_janela(":img/img/arquivo_50.png");
            QMessageBox msg(0);
            msg.setIconPixmap(icone_janela);
            msg.setWindowIcon(logomarca);
            msg.setWindowTitle("Cadastro");
            msg.addButton("OK", QMessageBox::AcceptRole);
            msg.setFont(QFont ("Calibri", 11,QFont::Normal, false));
            msg.setText("\nCadastro efetuado com sucesso!!!!");
            msg.exec();

            //Fecha a conexão com o banco de dados
            bd.close();
            conexao.fechar_conexao();
            return true;
        }
        else{

            //Desfaz as alterações no banco de dados.
            bd.rollback();

            //Gera a mensagem de erro.
            QPixmap icone_janela(":img/img/arquivo_erro_50.png");
            QMessageBox msg(0);
            msg.setIconPixmap(icone_janela);
            msg.setWindowIcon(logomarca);
            msg.setWindowTitle("Cadastro");
            msg.addButton("OK", QMessageBox::AcceptRole);
            msg.setFont(QFont ("Calibri", 11,QFont::Normal, false));
            msg.setText("\nNão foi possível efetuar o cadastro do fornecedor!!!!");
            msg.exec();

            //Fecha a conexão com o banco de dados
            bd.close();
            conexao.fechar_conexao();
            return false;
        }
    }
    else{
        return false;
    }
}
コード例 #15
0
ファイル: main.c プロジェクト: levindoneto/WordSearch
int main()
{
    clock_t Ticks[2];

    FILE *texto;        //Arquivo com texto para indexação.
    FILE *consulta;     //Arquivo que contém as palavras para consulta.
    FILE *saida;        //Arquivo para saida dos resultados
    char palavra[25] = {' '} ;
    char ch;
    int i = 0, linha = 1;
    int *ok = 0;
    pNodoA *raiz = NULL;
    pNodoA* a = raiz;
    TipoPtNo *lista=NULL;
    TNodoA *achou = NULL;

// Abre os arquivos para leitura e escrita
    texto = fopen("in.txt","r");
    consulta = fopen("find.txt","r");
    saida = fopen("out.txt","w");


	if((texto != NULL) && (consulta != NULL))
	{
        // Se deu tudo certo com os arquivos
		printf("Arquivos ok..\n");

		while((ch=fgetc(texto))!= EOF)
        {
        // Comparações dentro do arquivo, para reconhecer so' as palavras e nao pegar simbolos juntos
            if(ch == ' ' || ch == '.' || ch == ',' || ch == ';' || ch == '!' || ch == '?' || ch == '"' || ch == '@' || ch == '#' || ch == '$' || ch == '%' || ch == '=' || ch == '&' || ch == '|')
            {
                i=0;
                // Inserindo na AVL
                raiz = InsereAVL(raiz, palavra, &ok,linha);
                // Zera o array palavra
                memset(palavra,(char)0,sizeof(char)*25);
            }
            else
            {
                // Se encontra quebra de linha, incrementa o contador de linhas
                if(ch == '\n')
                {
                     linha++;
                }
                // Deixando todas letras minusculas para fazer as comparacoes
                ch = tolower(ch);
                // Salvando o que está achando no texto no vetor de caracteres(palavra)
                palavra[i] = ch;
                i++;
            }
        }


        Ticks[0] = clock();               // Iniciando o contador de tempo
        // Vai fazendo comparacoes até chegar no final do arquivo aberto
        while((ch=fgetc(consulta))!= EOF)
        {
            i=0;
            while(ch != '\n')
            {
                ch = tolower(ch);
                palavra[i] = ch;
                // Comparacao direta, sem uso de estrutura auxiliar para fazer comparacoes, fazendo economia de tempo
                ch=fgetc(consulta);
                i++;
            }
            palavra[i] = '\0';    //String deve ser terminada com \0
                // achou recebe o retorno da palavra consultada
                achou = consultar(raiz,palavra);
                if(achou)
                {
                    achou->dir = NULL;
                    achou->esq = NULL;
                    imprimeAVL(achou,saida);
                }
                else
                {
                    // Em caso de percorrer todo o arquivo a palavra procurada
                    fprintf(saida,"Consulta: %-10s Palavra não encontrada\n",palavra);
                }
                // Zera o vetor de caracteres (palavra)
                memset(palavra,(char)0,sizeof(char)*25);
            }
             // Fecha o contador de tempo
             Ticks[1] = clock();

             double Tempo = (Ticks[1] - Ticks[0]) * 1000.0 / CLOCKS_PER_SEC;
             // Exibe o tempo gasto com a consulta
             fprintf(saida," \n Tempo gasto: %g ms.", Tempo);

            // Fechamento dos arquivos utilizados ao longo da execução do programa
            fclose(consulta);
            fclose(texto);
            fclose(saida);
            // Desalocando a memória utilizada pela árvore
            DestroiAvl(raiz);
	}
	else
	{
        // Em caso de nao conseguir ler os arquvios do disco
		printf("Erro ao realizar a leitura dos arquivos...\n");
	}

return(0);
}
コード例 #16
0
void tela_listar_clientes::on_btn_buscar_clicked()
{
    conexao_bd conexao;
    QSqlDatabase bd;
    funcoes_extras funcao;
    std::vector< std::string > lista_id;
    std::vector< std::string > lista_nomes;
    std::vector< std::string > lista_cpfs;
    std::vector< std::string > lista_rgs;
    std::vector< std::string > lista_comentario;
    std::vector< std::string > lista_cep;
    std::vector< std::string > lista_rua;
    std::vector< std::string > lista_bairro;
    std::vector< std::string > lista_ponto_referencia;
    std::vector< std::string > lista_cidade;
    std::vector< std::string > lista_uf;
    std::vector< std::string > lista_numero;
    std::vector< std::string > lista_estado;
    std::vector< std::string > aux_lista_email;
    std::vector< std::string > aux_lista_telefone;
    std::vector< std::string > aux_lista_operadora;

    QString campos_consulta;
    QString id_cliente;
    QString nome_cliente;
    std::string telefone;
    int ta_string_telefone;

    telefone = ui->le_telefone->text().toStdString();
    id_cliente = ui->le_codigo->text();
    nome_cliente = ui->le_nome->text();
    lista_clientes.clear();

    if (((id_cliente.toStdString()!="")&&(id_cliente.toStdString()!=" "))||((nome_cliente.toStdString()!="")&&(nome_cliente.toStdString()!=" "))||(telefone!="()-")){

        campos_consulta = "c.id_cliente, c.nome, c.rg, c.cpf, c.comentario,c.cep, c.rua, c.bairro, c.ponto_referencia, c.cidade, c.uf, c.numero, c.estado";

        if(telefone == "()-"){
           telefone = "";
        }
        else{
            ta_string_telefone = telefone.size();
            if(int(ta_string_telefone) < 13){
                if(ta_string_telefone <= 5){
                    telefone = telefone.substr(0,ta_string_telefone-1);
                    telefone = telefone.substr(0,ta_string_telefone-2);
                }
                else{
                    if ((ta_string_telefone > 5)&&(ta_string_telefone <= 10)){
                        if((funcao.determinar_posicao_caractere(telefone,"-")+1)==ta_string_telefone){
                           telefone = telefone.substr(0,ta_string_telefone-1);
                        }
                    }
                }
            }
        }

        //realiza conexão ao banco de dados
        if (conexao.conetar_bd()){
            //Retorna o banco de dados
            bd = conexao.retorna_bd();

            //Declara a variável que irá fazer a consulta
            QSqlQuery consultar(bd);

            //realiza a consulta
            consultar.exec("SELECT DISTINCT "+campos_consulta+" FROM cliente c,tel_cliente tc WHERE c.id_cliente LIKE '%"+id_cliente+"%' AND c.nome LIKE '%"+nome_cliente+"%' AND tc.telefone LIKE '%"+QString::fromStdString(telefone)+"%' AND tc.id_cliente = c.id_cliente ORDER BY  c.nome ASC;");
            while(consultar.next()){
                lista_id.push_back(consultar.value(0).toString().toStdString());
                lista_nomes.push_back(consultar.value(1).toString().toStdString());
                lista_rgs.push_back(consultar.value(2).toString().toStdString());
                lista_cpfs.push_back(consultar.value(3).toString().toStdString());
                lista_comentario.push_back(consultar.value(4).toString().toStdString());
                lista_cep.push_back(consultar.value(5).toString().toStdString());
                lista_rua.push_back(consultar.value(6).toString().toStdString());
                lista_bairro.push_back(consultar.value(7).toString().toStdString());
                lista_ponto_referencia.push_back(consultar.value(8).toString().toStdString());
                lista_cidade.push_back(consultar.value(9).toString().toStdString());
                lista_uf.push_back(consultar.value(10).toString().toStdString());
                lista_numero.push_back(consultar.value(11).toString().toStdString());
                lista_estado.push_back(consultar.value(12).toString().toStdString());
            }

            modelo = new QStandardItemModel(int(lista_id.size()),3,this);
            modelo->clear();
            modelo->setHorizontalHeaderItem(0, new QStandardItem(QString("Código:")));
            modelo->setHorizontalHeaderItem(1, new QStandardItem(QString("Nome:")));
            modelo->setHorizontalHeaderItem(2, new QStandardItem(QString("Telefone:")));
            for (int i=0;i<int(lista_id.size());i++){
                consultar.exec("SELECT telefone,operadora FROM tel_cliente WHERE id_cliente = "+QString::fromStdString(lista_id[i])+";");
                while(consultar.next()){
                    aux_lista_telefone.push_back(consultar.value(0).toString().toStdString());
                    aux_lista_operadora.push_back(consultar.value(1).toString().toStdString());
                }
                consultar.exec("SELECT e_mail FROM email_cliente WHERE id_cliente = "+QString::fromStdString(lista_id[i])+";");
                while(consultar.next()){
                    aux_lista_email.push_back(consultar.value(0).toString().toStdString());
                }

                lista_clientes.push_back(new cliente(QString::fromStdString(lista_id[i]).toInt(),QString::fromStdString(lista_nomes[i]),
                                                     QString::fromStdString(lista_rgs[i]),QString::fromStdString(lista_cpfs[i]),
                                                     QString::fromStdString(lista_comentario[i]),aux_lista_email,aux_lista_telefone,
                                                     aux_lista_operadora,QString::fromStdString(lista_uf[i]),QString::fromStdString(lista_estado[i]),
                                                     QString::fromStdString(lista_cidade[i]),QString::fromStdString(lista_bairro[i]),
                                                     QString::fromStdString(lista_rua[i]),QString::fromStdString(lista_cep[i]),
                                                     QString::fromStdString(lista_numero[i]).toInt(),QString::fromStdString(lista_ponto_referencia[i])));

                modelo->setItem(i,0,new QStandardItem(QString::fromStdString(lista_id[i])));
                modelo->setItem(i,1,new QStandardItem(QString::fromStdString(lista_nomes[i])));
                modelo->setItem(i,2,new QStandardItem(QString::fromStdString(aux_lista_telefone[aux_lista_telefone.size()-1]+" "+aux_lista_operadora[aux_lista_operadora.size()-1])));

                aux_lista_telefone.clear();
                aux_lista_operadora.clear();
                aux_lista_email.clear();
            }
            ui->tv_clientes->setSelectionMode(QAbstractItemView::SingleSelection);
            ui->tv_clientes->setSelectionBehavior(QAbstractItemView::SelectRows);
            ui->tv_clientes->setEditTriggers(QAbstractItemView::NoEditTriggers);
            ui->tv_clientes->setModel(modelo);
            ui->tv_clientes->resizeColumnToContents(0);
            ui->tv_clientes->resizeColumnToContents(2);
        bd.close();
        conexao.fechar_conexao();
        }
    }
}
コード例 #17
0
int main(void){
	arvore *raiz=NULL;

	int op,achou,num;

	do{
		printf("\nMENU");
		printf("\n1 - Insere na Arvore");
		printf("\n2 - Consultar um no da Arvore");
		printf("\n3 - Consultar toda Arvore em pre-ordem");
		printf("\n4 - Consultar toda Arvore em ordem");
		printf("\n5 - Consultar toda Arvore em pos-ordem");
		printf("\n6 - Excluir um no da Arvore");
		printf("\n7 - Esvaziar toda Arvore");
		printf("\n8 - Sair");
		printf("\nOpcao: ");
		scanf("%i",&op);

		if(op==1){
			
			printf("\nNumero a inserir na Arvore: ");
			scanf("%i",&num);
			raiz=insere(raiz,num);
			printf("\nNumero inserido!");
		}//opção insere

		if(op==2){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nNumero a ser consultado: ");
				scanf("%i",&num);
				achou=0;
				achou=consultar(raiz,num,achou);

				if(achou==1)
					printf("\nNumero existente na Arvore!");
				else
					printf("\nNumero nao existente na Arvore!");
			}
		}//opção busca numero

		if(op==3){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em pre-ordem\n");
				preordem(raiz);
			}
		}//opçao listar preordem

		if(op==4){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em ordem\n");
				emordem(raiz);
			}
		}//opçao listar em ordem

		if(op==5){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nListando em pos-ordem\n");
				posordem(raiz);
			}
		}//opçao listar pos ordem

		if(op==6){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				printf("\nInforme o numero a ser removido: ");
				scanf("%i",&num);
				achou=0;
				achou=consultar(raiz,num,achou);
				//verifica se o nó existe
				if(achou==0)
					printf("\nNumero nao existente na Arvore!");
				else{
					raiz=remover(raiz,num);
					printf("\nNumero removido!");
				}
			}
		}//opçao remoção

		if(op==7){

			if(raiz==NULL)
				printf("\nArvore vazia!");
			else{
				raiz=desalocar(raiz);
				printf("\nArvore desalocada!");
			}
		}//opçao desaloca

		printf("\n************************************************************\n");

		getc(stdin);
	}while(op>0 && op<9 && op!=8);

	return 0;
}
コード例 #18
0
ファイル: abc.cpp プロジェクト: okiwan/adts
template <class C, class I> I ABC<C, I>::consultar(C pclau, Node **node) {
	if(*node == NULL) throw "consultar: element no trobat";
	if((*node)->clau > pclau) return consultar(pclau, &(*node)->fesq);
	if((*node)->clau < pclau) return consultar(pclau, &(*node)->fdre);
	return (*node)->info;
}