diff --git a/Outros/Fila/FilaEficiente.cpp b/Outros/Fila/FilaEficiente.cpp new file mode 100644 index 0000000..09f100c --- /dev/null +++ b/Outros/Fila/FilaEficiente.cpp @@ -0,0 +1,108 @@ + #include + #include + #include + #include + #include + #include + #include + + const int TAM = 5; + + int fila[TAM]; + int inicio = 0; + int fim = 0; + int contador = 0; + + using namespace std; + + void menu(); + void menuInsere(); + void insereFila(); + void removeFila(); + void imprimeFila(); + + int main() { + menu(); + return 0; + } + + void insereFila(int valor) { + if(contador == TAM) { + cout << " Fila cheia\n"; + return; + } + fila[fim] = valor; + if(fim == TAM-1) + fim = 0; + else + fim++; + contador++; + } + + void menuInsere() { + int valor; + cout << " Insira um valor: "; + cin >> valor; + insereFila(valor); + } + + void removeFila() { + if(contador == 0) { + cout << " Fila vazia\n"; + return; + } + if(inicio == TAM-1) + inicio = 0; + else inicio=inicio + 1; + contador--; + } + + void imprimeFila() { + int i, j; + if(contador == 0) { + printf(" Fila vazia\n"); + return; + } + j=inicio; + for(i=0; i + #include + #include + #include + #include + #include + #include + + const int TAM = 5; + + int fila[TAM]; + int inicio = 0; + int fim = 0; + int contador = 0; + + using namespace std; + + void menu(); + void inserefila(); + void removefila(); + void imprimefila(); + + int main() { + menu(); + return 0; + } + + void inserefila() { + int valor; + + if(contador == TAM) { + printf(" |-----------------------|\n"); + printf(" | FILA CHEIA |\n"); + return; + } + + cout << "Insira um valor: "; + cin >> valor; + system("cls"); + + fila[fim] = valor; + + if(fim == TAM-1) + fim = 0; + else + fim++; + + contador++; + system("cls"); + } + + void removefila() { + if(contador == 0) { + printf(" |-----------------------|\n"); + printf(" | FILA VAZIA |\n"); + return; + } + if(inicio == TAM-1) + inicio = 0; + else inicio = inicio + 1; + contador--; + if(contador == 0) { + printf(" |-----------------------|\n"); + printf(" | FILA VAZIA |\n"); + return; + } + } + + void imprimefila() { + int i, j; + printf(" |-----------------------|\n"); + printf(" | FILA | POSIÇÕES |\n"); + printf(" |-----------------------|\n"); + /* if(contador == 0) { + printf("\n\nFila vazia\n\n"); + return; + } */ + j=inicio; + for(i=0; i + #include + #include + #include + #include + #include + #include //Para a utilização da função getche() + + + using namespace std; + + //Procedimentos principais + void insereLista(); + void removeLista(); + void recuperaLista(); + void buscaLista(); + void imprime(); + void preencheLista(); + void menu(); + + void menuInsereLista(); + void menuRemoveLista(); + void menuRecuperaLista(); + void menuBuscaLista(); + + int tamanho = 0; + + struct no { + int dado; + struct no *prox; + }; + struct no *lista = NULL; + + + + int main () { + setlocale(LC_ALL,""); + cout << " Lista linear dinâmica" << endl; + menu(); + return 0; + } + + void insereLista(int valor) { + struct no *atual; + struct no *anterior; + struct no *aux; + atual = lista; + + while(atual != NULL && atual -> dado < valor) { + anterior = atual; + atual = atual -> prox; + } + + aux = new(struct no); + aux -> dado = valor; + if(atual == lista) { + aux -> prox = atual; + lista = aux; + } else { + aux -> prox = atual; + anterior -> prox = aux; + } + printf(" Número %2i foi inserido com sucesso!\n", valor); + tamanho++; + //cout << " Número " << valor << " foi inserido com sucesso!\n"; + } + + void removeLista(int posicao) { + struct no *atual; + struct no *anterior; + int cont = 1; + atual = lista; + + if(lista == NULL) { + cout << " Lista vazia!\n"; + return; + } + + if (posicao == 1) { + lista = lista->prox; + delete(atual); + cout << " Número removido com sucesso!\n"; + return; + } + + while(cont != posicao) { + if (atual->prox == NULL) { + cout << " Posição inválida!\n"; + return; + } + anterior = atual; + atual = atual->prox; + cont++; + } + + anterior->prox = atual->prox; + delete(atual); + cout << " Número removido com sucesso!\n"; + } + + void recuperaLista(int posicao) { + struct no *aux; + aux = lista; + + if (lista == NULL) { + cout << " Não é possível buscar por nenhuma posição, a lista está vazia!\n"; + return; + } + + for (int i = 1; i < posicao; i++) { + if(aux -> prox == NULL) { + cout << " Posição inválida\n"; + return; + } + aux = aux -> prox; + } + cout << " O valor encontrado na posição " << posicao << " é: " << aux -> dado << "\n"; + } + + void buscaLista(int valor) { + struct no *aux; + aux = lista; + int i = 1, qntd = 0; + + if (lista == NULL) { + cout << " Lista vazia!\n"; + return; + } + + while (aux != NULL) { + if (aux->dado == valor) { + cout << " O número " << valor << " foi encontrado na posição: " << i << "\n"; + qntd++; + } + aux = aux->prox; + i++; + } + + if(qntd == 0) + cout << " O número não foi encontrado na lista! =/\n"; + else if (qntd == 1) + cout << " O número " << valor << " foi encontrado " << qntd << " vez.\n"; + else + cout << " O número " << valor << " foi encontrado " << qntd << " vezes.\n"; + } + + void preencheLista() { + int qntd, valor; + cout << " Quantidade de posições a serem preenchidas: "; + cin >> qntd; + fflush(stdin); + srand(time(NULL)); + for(int i = 0; i < qntd; i++) { + valor = rand() % 9-0; + insereLista(valor); + } + cout << " A lista de tamanho " << qntd << " foi automaticamente preenchida!\n"; + } + + void imprime() { + int i=0; + struct no *aux; + if(lista == NULL) { + cout << " Lista Vazia!\n"; + return; + } + aux = lista; + printf(" -------------------\n"); + printf(" | P. | VALORES |\n"); + printf(" -------------------\n"); + while (aux != NULL) { + i++; + printf(" | %2i | %10i |\n", i, aux -> dado); + printf(" -------------------\n"); + aux = aux -> prox; + } + } + + void menuInsereLista() { + int valor; + cout << " Insira um valor para inserir na lista: "; + cin >> valor; + fflush(stdin); + insereLista(valor); + } + + void menuRemoveLista() { + int posicao; + cout << " Insira uma posição: "; + cin >> posicao; + fflush(stdin); + removeLista(posicao); + + } + + void menuRecuperaLista() { + int posicao; + cout << " Insira uma posição: "; + cin >> posicao; + fflush(stdin); + recuperaLista(posicao); + } + + void menuBuscaLista() { + int valor; + cout << " Insira um valor para buscar na lista: "; + cin >> valor; + fflush(stdin); + system("cls"); + buscaLista(valor); + + } + + void menu () { + char esc; + printf(" ------------------------------------------\n"); + printf(" - 1 | Para inserir na lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 2 | Para remover da lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 3 | Para buscar na lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 4 | Para recuperar lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 5 | Para mostrar lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 6 | Preencher automaticamente lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 0 | Para sair -\n"); + printf(" ------------------------------------------\n"); + printf(" - Valor: "); + + //Com a utilização da biblioteca + esc = getche(); + + //Com a utilização da biblioteca padrão + //scanf("%c", &esc); + + fflush(stdin); + + //system("clear"); + system("cls"); + switch (esc) { + case '1': + menuInsereLista(); + break; + case '2': + menuRemoveLista(); + break; + case '3': + menuBuscaLista(); + break; + case '4': + menuRecuperaLista(); + break; + case '5': + imprime(); + break; + case '6': + preencheLista(); + break; + case '0': + return; + break; + default: + printf(" Valor incorreto. Tente novamente!\n"); + menu(); + } + //Faz um loop do menu até o usuário sair + menu(); + } + diff --git a/Outros/Lista Linear/ListaLinearVetor.cpp b/Outros/Lista Linear/ListaLinearVetor.cpp new file mode 100644 index 0000000..3389c49 --- /dev/null +++ b/Outros/Lista Linear/ListaLinearVetor.cpp @@ -0,0 +1,285 @@ + #include + #include + #include + #include + #include + #include + #include //Para a utilização da função getche() + + //Constantes globais + const int TAM = 10; + + //Variáveis globais + int lista[TAM]; + int tamanho = 0; + + using namespace std; + + //Procedimentos principais + void insereLista(); + void removeLista(); + void buscaLista(); + void recuperaLista(); + void preencheLista(); + void menu(); + void imprime(); + + //Menus para inserção ou remoção + void menuInsereLista(); + void menuRemoveLista(); + void menuBuscaLista(); + void menuRecuperaLista(); + + //Verificação para inserção ou remoção + bool verificaCheio(); + bool verificaVazia(); + + int main () { + setlocale(LC_ALL,""); + cout << " Lista linear com vetor" << endl; + cout << " O vetor está definido em " << TAM << " posições" << endl; + menu(); + return 0; + } + + void insereLista(int valor) { + int i; + + //Verifica se a lista está cheia. Já feito na função verificaCheio(); + /* if(tamanho == TAM) { + cout << " Número não pôde ser inserido na lista. Lista Cheia!\n"; + return; + } */ + + for(i = tamanho; i > 0 && valor < lista[i-1]; i--) { + lista[i] = lista [i-1]; + } + + lista[i] = valor; + tamanho++; + cout << " Número " << valor << " inserido com sucesso!\n"; + } + + void removeLista(int posicao) { + //Verifica se a lista está vazia. Já feito na função verificaVazia(); + /*if(tamanho <= 0) { + printf(" Lista Vazia!\n"); + return; + } */ + + if(posicao <= 0 || posicao > tamanho) { + cout << " Posição inválida!\n"; + return; + } + + for(int i = posicao; i < tamanho; i++) { + lista[i-1]=lista[i]; + } + tamanho--; + + for(int i = tamanho; i <= TAM-1; i++) { + lista[i] = 0; + } + cout << " Número removido com sucesso!\n"; + } + + void buscaLista(int valor) { + int posicao, qntd = 0; + + for(int i = 0; i < TAM; i ++){ + if(lista[i] == valor){ + posicao = i; + qntd++; + cout << " O número " << valor << " foi encontrado na posição: " << posicao+1 << "\n"; + } + } + + if(qntd == 0) + cout << " O número não foi encontrado na lista! =/\n"; + else if (qntd == 1) + cout << " O número " << valor << " foi encontrado " << qntd << " vez.\n"; + else + cout << " O número " << valor << " foi encontrado " << qntd << " vezes.\n"; + } + + void recuperaLista(int posicao) { + int valor; + //Verifica se a lista está vazia. Já feito na função verificaVazia(); + /*if(tamanho <= 0) { + printf(" Lista Vazia!\n"); + return; + } */ + + if(posicao <= 0 || posicao > tamanho) { + cout << " Posição inválida!\n"; + return; + } + + valor = lista[posicao-1]; + + cout << " O valor encontrado na posição " << posicao << " é: " << valor << "\n"; + + } + + void preencheLista() { + srand(time(NULL)); + for(int i = 0; i < TAM; i++) { + + lista[i] = rand() % 15-0; + } + tamanho = TAM; + cout << " A lista foi automaticamente preenchida!\n"; + } + + void imprime() { + printf(" -------------------\n"); + printf(" | P. | VALORES |\n"); + + for(int i=TAM-1; i>=0; i--) { + printf(" -------------------\n"); + printf(" | %2i | %10i |\n", i+1, lista[i]); + } + + printf(" -------------------\n"); + cout << " Impressão feita com sucesso!\n"; + cout << " Pressione qualquer tecla para continuar"; + + //Espera o usuário digitar uma tecla e a armazena numa variavel qualquer + char lixo; + lixo = getche(); + fflush(stdin); + system("cls"); + } + + void menuInsereLista() { + int valor; + + //Verifica se a lista está cheia + if(verificaCheio()) { + cout << " Esse número não pôde ser inserido na lista. Lista Cheia!\n"; + return; + } + + cout << " Insira um valor para inserir na lista: "; + cin >> valor; + fflush(stdin); + insereLista(valor); + } + + void menuRemoveLista() { + int posicao; + + //Verifica se a lista está vazia + if(verificaVazia()) { + cout << " Não é possível remover. Lista vazia!\n"; + return; + } + + cout << " Insira uma posição: "; + cin >> posicao; + fflush(stdin); + removeLista(posicao); + } + + void menuBuscaLista() { + int valor; + + //Verifica se a lista está vazia + if(verificaVazia()) { + cout << " Não é possível buscar um número na lista, a lista está vazia!\n"; + return; + } + cout << " Insira um valor para buscar na lista: "; + cin >> valor; + fflush(stdin); + system("cls"); + buscaLista(valor); + } + + void menuRecuperaLista() { + int posicao; + + //Verifica se a lista está vazia (Primeira verificação) + if(verificaVazia()) { + cout << " Não é possível buscar por nenhuma posição, a lista está vazia!\n"; + return; + } + + cout << " Insira uma posição: "; + cin >> posicao; + fflush(stdin); + recuperaLista(posicao); + } + + bool verificaCheio() { + if(tamanho == TAM) + return true; + else + return false; + } + + bool verificaVazia() { + if(tamanho <= 0) + return true; + else + return false; + } + + void menu () { + char esc; + printf(" ------------------------------------------\n"); + printf(" - 1 | Para inserir na lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 2 | Para remover da lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 3 | Para buscar na lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 4 | Para recuperar lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 5 | Para mostrar lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 6 | Preencher automaticamente lista -\n"); + printf(" ------------------------------------------\n"); + printf(" - 0 | Para sair -\n"); + printf(" ------------------------------------------\n"); + printf(" - Valor: "); + + //Com a utilização da biblioteca + esc = getche(); + + //Com a utilização da biblioteca padrão + //scanf("%c", &esc); + + fflush(stdin); + + //system("clear"); + system("cls"); + switch (esc) { + case '1': + menuInsereLista(); + break; + case '2': + menuRemoveLista(); + break; + case '3': + menuBuscaLista(); + break; + case '4': + menuRecuperaLista(); + break; + case '5': + imprime(); + break; + case '6': + preencheLista(); + break; + case '0': + return; + break; + default: + printf(" Valor incorreto. Tente novamente!\n"); + menu(); + } + //Faz um loop do menu até o usuário sair + menu(); + } diff --git a/Outros/Material/Programa De Disciplina.pdf b/Outros/Material/Programa De Disciplina.pdf new file mode 100644 index 0000000..6bd9858 Binary files /dev/null and b/Outros/Material/Programa De Disciplina.pdf differ diff --git a/Outros/Material/TrabalhoES2017_1.pdf b/Outros/Material/TrabalhoES2017_1.pdf new file mode 100644 index 0000000..03d72df Binary files /dev/null and b/Outros/Material/TrabalhoES2017_1.pdf differ diff --git a/Outros/Material/TrabalhoES2017_2.pdf b/Outros/Material/TrabalhoES2017_2.pdf new file mode 100644 index 0000000..fa4a38e Binary files /dev/null and b/Outros/Material/TrabalhoES2017_2.pdf differ diff --git a/Outros/Material/TrabalhoES2017_3.pdf b/Outros/Material/TrabalhoES2017_3.pdf new file mode 100644 index 0000000..19ba4af Binary files /dev/null and b/Outros/Material/TrabalhoES2017_3.pdf differ diff --git a/Outros/Pilha/Pilha-win.cpp b/Outros/Pilha/Pilha-win.cpp new file mode 100644 index 0000000..ed3391c --- /dev/null +++ b/Outros/Pilha/Pilha-win.cpp @@ -0,0 +1,123 @@ + #include + #include + #include + #include + #include + #include + #include + + const int TAM = 5; + + using namespace std; + + void push(); + void pushMenu(); + void menu(); + void pop(); + void imprimePilha(); + void imprimePilhaCompleto(); + + int pilha[TAM]; + int topo = -1; + + int main() { + setlocale(LC_ALL, "Portuguese"); + menu(); + printf("\nData: %s\nHora: %s\n",__DATE__,__TIME__); + return 0; + } + + void push(int valor) { + if(topo == TAM-1) { + printf(" Pilha cheia!\n"); + return; + } + topo++; + pilha[topo] = valor; + } + + void pushMenu() { + int valor; + if(topo == TAM-1) { + cout << " Pilha cheia!\n"; + return; + } + cout << " Insira um valor para empilhar: "; + cin >> valor; + fflush(stdin); + push(valor); + imprimePilha(); + } + + + void pop () { + if(topo == 0) + printf(" Pilha vazia!\n"); + if(topo == -1) { + printf(" Pilha vazia!\n"); + return; + } + else { + pilha[topo] = 0; + } + topo--; + imprimePilhaCompleto(); + } + + void menu () { + char esc; + printf(" -------------------------------\n"); + printf(" - Para fazer \"Push\" insira 1 -\n"); + printf(" -------------------------------\n"); + printf(" - Para fazer \"Pop\" insira 2 -\n"); + printf(" -------------------------------\n"); + printf(" - Para imprimir insira 3 -\n"); + printf(" -------------------------------\n"); + printf(" - Para sair insira 0 -\n"); + printf(" -------------------------------\n"); + esc = getch(); + fflush(stdin); + system("cls"); + switch (esc) { + case '1': + pushMenu(); + break; + case '2': + pop(); + break; + case '3': + imprimePilhaCompleto(); + break; + case '0': + return; + break; + default: + printf(" VALOR INCORRETO, SEU ANIMAL.\n"); + menu(); + } + menu(); + imprimePilha(); + } + + void imprimePilhaCompleto() { + for(int i=TAM-1; i>=0; i--) { + printf(" -----------------------\n"); + if(i == topo) + printf(" | %2i | %10i | * |\n", i+1, pilha[i]); + else + printf(" | %2i | %10i | |\n", i+1, pilha[i]); + } + + printf(" -----------------------\n"); + + //sleep(4); + //system("clear"); + } + + void imprimePilha() { + for(int i=topo; i >= 0; i--) { + printf(" ----------------\n"); + printf(" | %10i |\n", pilha[i]); + } + printf(" ----------------\n"); + } diff --git a/Outros/Pilha/pilha_dinamica.cpp b/Outros/Pilha/pilha_dinamica.cpp new file mode 100644 index 0000000..1eeb261 --- /dev/null +++ b/Outros/Pilha/pilha_dinamica.cpp @@ -0,0 +1,56 @@ + #include + #include + #include + #include + #include + #include + + + using namespace std; + + + struct no { + int dado; + struct no *prox; + }; + struct no *topo = NULL; + + void pushMenu(); + + void push(int valor) { + struct no *aux; + aux = new(struct no); + aux -> dado = valor; + aux -> prox = topo; + topo = aux; + } + + void imprime() { + struct no *aux; + if(topo == NULL) { + cout << " Pilha Vazia\n"; + return; + } + aux = topo; + while (aux != NULL) { + //cout << "%d \n" << aux -> dado; + printf(" %d \n", aux -> dado); + aux = aux -> prox; + } + } + + void pushMenu() { + int esc; + cout << " Insira um valor: "; + cin >> esc; + push(esc); + pushMenu(); + } + + int main () { + pushMenu(); + imprime(); + return 0; + } + +