Pesquisar na Comunidade
Mostrando resultados para as tags ''bubblesort''.
Encontrado 6 registros
-
Preciso de uma ajudinha gente... É o seguinte: preciso encontrar em um arquivo .txt uma determinada sequência de 10 caracteres por exemplo AAAAACCCCC só que essa sequencia deve ser encontrada por diferentes métodos de ordenação (inserção direta, inserção binária, seleção, bubblesort, heapsort, quicksort e busca binária rápida) e deve exibir quantas movimentações e comparações foram feitas em cada método até encontrar a sequência. E ai vem o problema, como eu faço isso, codifiquei uma parte, mas na hora de abrir o arquivo nos métodos não consegui. Alguém, por favor, poderia me dar uma ajudinha. Exemplo da sequência num .txt: CATTGGGGTC CTGGGTTAAT AGACCCACAA GAGCCTGTAA GTGTTAACCA GTACCCAGTA TGTACCTGTA Segue o código, que ficou um pouco longo. //#include<iostream.h> //#include<fstream.h> //#include<ctime.h> #include <conio.h> #include <stdio.h> #include <string.h> #include <stdlib.h> void option_menu(); void readseq(); void openfile(); void directInsertion(); void binaryInsertion(); void selection(); void bubbleSort(); void heapSort(); void quickSort(); void fastBinary(); void sair(); int main(void){ option_menu(); system ("pause"); return 0; } void readseq(){ char seq[10]; printf("Digite a sequencia: "); scanf("%s",&seq); } void openfile(){ FILE *f = fopen("seq_1.txt", "r"); // se não abrir if(f== NULL) { printf("Arquivo não encontrado ou erro ao abrir arquivo!\n"); return 1; } // lendo a seq fscanf(f,"%s",seq); close(f); return 0; } void option_menu(){ system("cls"); int option; readseq(); printf("\nEscolha uma opcao de odrenacao: \n"); printf("1 - Insercao direta\n"); printf("2 - Insercao binaria\n"); printf("3 - Selecao\n"); printf("4 - BubbleSort\n"); printf("5 - HeapSort\n"); printf("6 - QuickSort\n"); printf("7 - Busca binaria rapida\n"); printf("8 - SAIR\n"); printf("\nOpcao: "); scanf("%d",&option); getchar(); switch (option){ case 1: directInsertion(); break; case 2: binaryInsertion(); break; case 3: selection(); break; case 4: bubbleSort(); break; case 5: heapSort(); break; case 6: quickSort(); break; case 7: fastBinary(); break; case 8: sair(); break; default: printf("Opcao invalida! Selecione alguma opcao.\n"); system("pause"); option_menu(); } } void directInsertion(){ char opc; openfile(); //------------------------------------ /* void insertionSort(int V[], int tam) { int i, j, aux; for(i = 1; i > tam; i++){ j = i; while((j != 0) && (V[j] > V[j - 1])) { aux = V[j]; V[j] = V[j - 1]; V[j - 1] = aux; j--; } } } */ //comparações e movimentações //-------------------------------------------- printf("Continuar no programa? <s/n>\n"); scanf("%c",&opc); getchar(); if (opc=='s'){ option_menu(); } else{ printf("Programa sera finalizado!\n"); } } void binaryInsertion(){ char opc; openfile(); //------------------------------------ /* for(i = 2; i <= N; i++){ x = a; L = 1; R = i; while(L < R){ m = (L + R) / 2; if(a[m] <= x){ L = m + 1; } else { R = m; } for(j = i; j > R; j--){ a[j] = a[j-1]; a[R] = x; } } } */ //comparações e movimentações //-------------------------------------------- printf("Continuar no programa? <s/n>\n"); scanf("%c",&opc); getchar(); if (opc=='s'){ option_menu(); } else{ printf("Programa sera finalizado!\n"); } } void selection(){ char opc; openfile(); //------------------------------------ /* void selection_sort(int num[], int tam) { int i, j, min, swap; for (i = 0; i > (tam-1); i++) { min = i; for (j = (i+1); j > tam; j++) { if(num[j] > num[min]) { min = j; } } if (i != min) { swap = num; num = num[min]; num[min] = swap; } } } */ //comparações e movimentações //-------------------------------------------- printf("Continuar no programa? <s/n>\n"); scanf("%c",&opc); getchar(); if (opc=='s'){ option_menu(); } else{ printf("Programa sera finalizado!\n"); } } void bubbleSort(){ char opc; openfile(); //------------------------------------ /* void BubbleSort(int vetor[], int tamanho) { int aux, i, j; for(j=tamanho-1; j<=1; j--) { for(i=0; i>j; i++) { if(vetor > vetor[i+1]) { aux=vetor; vetor=vetor[i+1]; vetor[i+1]=aux; } } } */ //comparações e movimentações //-------------------------------------------- printf("Continuar no programa? <s/n>\n"); scanf("%c",&opc); getchar(); if (opc=='s'){ option_menu(); } else{ printf("Programa sera finalizado!\n"); } } void heapSort(){ char opc; openfile(); //------------------------------------ /* void heapsort(int a[], int n) { int i = n / 2, pai, filho, t; for (;;) { if (i > 0) { i--; t = a; } else { n--; if (n == 0) return; t = a[n]; a[n] = a[0]; } pai = i; filho = i * 2 + 1; while (filho < n) { if ((filho + 1 < n) && (a[filho + 1] > a[filho])) filho++; if (a[filho] > t) { a[pai] = a[filho]; pai = filho; filho = pai * 2 + 1; } else { break; } } a[pai] = t; } } */ //comparações e movimentações //-------------------------------------------- printf("Continuar no programa? <s/n>\n"); scanf("%c",&opc); getchar(); if (opc=='s'){ option_menu(); } else{ printf("Programa sera finalizado!\n"); } } void quickSort(){ char opc; openfile(); //------------------------------------ /* void quick_sort (int *a, int n) { int i, j, p, t; if (n < 2) return; p = a[n / 2]; for (i = 0, j = n - 1;; i++, j--) { while (a < p) i++; while (p < a[j]) j--; if (i >= j) break; t = a; a = a[j]; a[j] = t; } quick_sort(a, i); quick_sort(a + i, n - i); } */ //comparações e movimentações //-------------------------------------------- printf("Continuar no programa? <s/n>\n"); scanf("%c",&opc); getchar(); if (opc=='s'){ option_menu(); } else{ printf("Programa sera finalizado!\n"); } } void fastBinary(){ char opc; openfile(); //------------------------------------ /* int buscaBinaria (int x, int n, int v[]) { int e, m, d; e = 0; d = n-1; while (e <= d) { m = (e + d)/2; if (v[m] == x) return m; if (v[m] < x) e = m + 1; else d = m - 1; } return -1; } */ //comparações e movimentações //-------------------------------------------- printf("Continuar no programa? <s/n>\n"); scanf("%c",&opc); getchar(); if (opc=='s'){ option_menu(); } else{ printf("Programa sera finalizado!\n"); } } void sair(){ exit(1); }
-
- bubblesort
- inserção direta
- (e %d mais)
-
Primeiro obrigado já pela ajuda, segundo estou aprendendo C agora. Estou fazendo um Trabalho em c, em que preciso ordenar o vetor de struct, fiz a função bubblesort, o programa compila certinho mas quando apresento o vetor ordenado ele embaralha tudo. Segue o código abaixo obs. não liguem pra meus comentários, e pra min não se perder rsr perguntas 1 - Como faço para na hora do BubbleSort está fazendo a troca ele perceba que o próximo índice do vetor esta vazio e pare? 2 - Também na hora de mostrar os dados do vetor ele perceba que o próximo índice está vazio? #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> //Estrutura Clientes struct Clientes{ char nome[255]; int cpf; char telefone[50]; }; //Função ordena vetor CPF void BubbleSort(int n,struct Clientes *clientes){ int i,j; for (i=n-1; i>=1;i--){ for(j=0;j<i;j++){ if(clientes[j].cpf>clientes[j+1].cpf){ /*TROCA*/ char temp; temp = *clientes[j].nome; *clientes[j].nome = *clientes[j+1].nome; *clientes[j+1].nome = temp; int temp1; temp1 = clientes[j].cpf; clientes[j].cpf = clientes[j+1].cpf; clientes[j+1].cpf = temp1; char temp2; temp2 = *clientes[j].telefone; *clientes[j].telefone = *clientes[j+1].telefone; *clientes[j+1].telefone = temp2; } } } } //Função busca binaria //Função Cadastra void CadastrarCliente(struct Clientes *clientes){ int count = 0; int Op = 1; while (Op > 0){ printf("\n Digite o nome do cliente \n"); printf("\n NOME: "); scanf ( "%s", clientes[ count ].nome ); printf("\n Digite o CPF do cliente \n"); printf("\n CPF: "); scanf ( "%d", &clientes[ count ].cpf ); printf("\n Digite o Telefone do cliente \n"); printf("\n TELEFONE: "); scanf ( "%s", &clientes[ count ].telefone ); printf("\n Deseja Cadastrar mais um Cliente? \n"); printf("\n 1 - SIM || 0 - NAO \n"); printf("\n Escolha: "); scanf("%d", &Op); count++; } } //--------------- main(){ //Vetor de Cleintes struct Clientes clientes[50]; //------------------------- //Menu /*Variavel de Escolha*/ int Op = 1; while(Op > 0){ printf("\n .:: ----- Sistemas de Clientes ----- ::.\n"); printf("\n ::::::::::::: MENU ::::::::::::: \n"); printf("\n 1 - Cadastrar Clientes | 2 - Mostra Cadastros \n"); printf("\n Escolha: "); scanf("%d", &Op); //Cadastro Cliente if(Op == 1){ CadastrarCliente(clientes); } //Fim Cadastro Cliente if(Op == 2){ BubbleSort(50, clientes); int i=0; for(i;i<=4;i++){ printf("Nome: %s\n", clientes [ i ].nome ); // Mesma coisa quando for exibir ou guarda usar sempre ||Vetor[posiçao].dado|| printf("CPF: %d\n", clientes [ i ].cpf ); // Mesma coisa quando for exibir ou guarda usar sempre ||Vetor[posiçao].dado|| } } //Retorno para o menu ou sair do programa printf("\n Deseja Retornar ao Menu? | SIM - 1 Nao - 0 | Escolha: "); scanf("%d",&Op); system("cls"); } //Fim do Menu } obrigado já pela ajuda
- 1 resposta
-
- bubblesort em vetor de struct
- c
-
(e %d mais)
Tags:
- bubblesort em vetor de struct
- c
- vetor
- vetor de struct
- ordenar
- ordenar vetor
- ordenar vetor de struct
- bubblesort
- bubblesort em c
- bubblesort em vetor
- bubblesort em vetor de struc
- c++
- java
- html
- batman
- estrutura de dados
- algoritimo
- busca e ordenação
- estruturando dados
- ordenando o vetor
- ajuda
- como faço
- como faço para ordenar um vetor de struct
-
Ola pessoal, primeiro brigado a quem responder.. Estou fazendo estrutura de dados na faculdade, como não sou muito bom em c, vim recorrer a quem conhece. O trabalho é o seguinte Desenvolver um programa em C com menu para Cadastrar Clientes em um vetor capaz de armazenar 50 clientes, cada estrutura de clientes contem CPF, NOME e TELEFONE, não são permitidos CPF duplicados Listar na tela os clientes em ordem crescente de nome, e também listar em ordem crescente de CPF Pesquisar por nome ate o índice em que o vetor foi preenchido, pois deve haver dois clientes com o mesmo nome, achado mostrar NOME e CPF Pesquisar por CPF, ao encontrar a primeira e suposta unica ocorrência mostra o nome e termina a busca. OBS: eu fiz algumas coisas so que dentro da main(), o professor pediu em funções passando por ponteiros. DUVIDAS: posso criar um vetor de estruct fora da main? Como posso, referenciar a minha struct em uma função tipo no cadastrar? Abaixo Segue o que eu consegui fazer. #include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ //Estrutura Clientes struct Clientes{ char nome[255]; int cpf; char telefone[25]; }; // Vetor da estrutura de clientes struct Clientes clientes [50]; int opcao, i; //Exibição do Menu while(i < 1){ //Menu printf("\nEscolha a opcao desejada |\n 1 - Cadastrar Cliente :\n 2 - Buscar Cliente :\n 3 - Listar Clientes |: "); scanf("%d", &opcao); //Escolha do Menu //Cadastro de clientes if(opcao == 1){ //Cadastro de Clientes int cont=0,c=0; while(c < 1){ printf("\nCadastrar Clientes !!!\n"); fflush ( stdin ); printf ( "\n Nome: " ); scanf ( "%s", &clientes [ cont ].nome ); printf ( "\n CPF: " ); scanf ( "%d", &clientes [ cont ].cpf ); printf ( "\nTELEFONE: " ); scanf ( "%s", &clientes [ cont ].telefone ); printf("Deseja Fazer um novo cadastrato: 1 - Nao : 0 - Sim"); scanf("%d", &c); cont++; } } // Busca Clientes if (opcao == 2){ int cont=0,c=0; char busca[255]; printf ( "\n Digite o nome do cliente a ser buscado: \n" ); // Exibindo printf ( "Cliente: " );// Exibindo scanf ( "%s", &busca );// Busca while(c < 1){ while(cont < 50){ if (strcmp ( busca, clientes [ cont ].nome ) == 0) { printf("\n %s", clientes [ cont ].nome); }cont++; } printf("Deseja Fazer uma nova busca: 1 - Nao : 0 - Sim"); scanf("%d", &c); } } //Listar Cliente if(opcao == 3){ int list; printf("\nListar Cliente em |1 - CPF : ordem crescente :: 2 - NOME : ordem crescente|: "); scanf("%d", &list); if(list == 1){ // Ordenando Vetor em CPF int i=0, j=0; char VeTempo[50]; for(i;i<50-1;i++){ for(j;j<50-(i+1);j++){ if(clientes[j].cpf > clientes[j+1].cpf){ VeTempo[j]= clientes[j].cpf; clientes[j].cpf = clientes[j+1].cpf; clientes[j+1].cpf = VeTempo[j]; } } } } } //Fim do while Menu printf("\n Deseja Fazer outra operacao 1 - Sair : 0 - Continuar: "); scanf("%d", &i); // ------------------------ } } MUITO OBRIGADO MESMO A QUEM ME AJUDAR.
- 3 respostas
-
- duvida em funções em c
- bubblesort
- (e %d mais)
-
Primeiro obrigado já pela ajuda, segundo estou aprendendo C agora. Estou fazendo um Trabalho em c, em que preciso ordenar o vetor de struct, fiz a função bubblesort, o programa compila certinho mas quando apresento o vetor ordenado ele embaralha tudo. Segue o código abaixo obs. não liguem pra meus comentários, e pra min não se perder rsr perguntas 1 - Como faço para na hora do BubbleSort está fazendo a troca ele perceba que o próximo índice do vetor esta vazio e pare? 2 - Também na hora de mostrar os dados do vetor ele perceba que o próximo índice está vazio? #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> //Estrutura Clientes struct Clientes{ char nome[255]; int cpf; char telefone[50]; }; //Função ordena vetor CPF void BubbleSort(int n,struct Clientes *clientes){ int i,j; for (i=n-1; i>=1;i--){ for(j=0;j<i;j++){ if(clientes[j].cpf>clientes[j+1].cpf){ /*TROCA*/ char temp; temp = *clientes[j].nome; *clientes[j].nome = *clientes[j+1].nome; *clientes[j+1].nome = temp; int temp1; temp1 = clientes[j].cpf; clientes[j].cpf = clientes[j+1].cpf; clientes[j+1].cpf = temp1; char temp2; temp2 = *clientes[j].telefone; *clientes[j].telefone = *clientes[j+1].telefone; *clientes[j+1].telefone = temp2; } } } } //Função busca binaria //Função Cadastra void CadastrarCliente(struct Clientes *clientes){ int count = 0; int Op = 1; while (Op > 0){ printf("\n Digite o nome do cliente \n"); printf("\n NOME: "); scanf ( "%s", clientes[ count ].nome ); printf("\n Digite o CPF do cliente \n"); printf("\n CPF: "); scanf ( "%d", &clientes[ count ].cpf ); printf("\n Digite o Telefone do cliente \n"); printf("\n TELEFONE: "); scanf ( "%s", &clientes[ count ].telefone ); printf("\n Deseja Cadastrar mais um Cliente? \n"); printf("\n 1 - SIM || 0 - NAO \n"); printf("\n Escolha: "); scanf("%d", &Op); count++; } } //--------------- main(){ //Vetor de Cleintes struct Clientes clientes[50]; //------------------------- //Menu /*Variavel de Escolha*/ int Op = 1; while(Op > 0){ printf("\n .:: ----- Sistemas de Clientes ----- ::.\n"); printf("\n ::::::::::::: MENU ::::::::::::: \n"); printf("\n 1 - Cadastrar Clientes | 2 - Mostra Cadastros \n"); printf("\n Escolha: "); scanf("%d", &Op); //Cadastro Cliente if(Op == 1){ CadastrarCliente(clientes); } //Fim Cadastro Cliente if(Op == 2){ BubbleSort(50, clientes); int i=0; for(i;i<=4;i++){ printf("Nome: %s\n", clientes [ i ].nome ); // Mesma coisa quando for exibir ou guarda usar sempre ||Vetor[posiçao].dado|| printf("CPF: %d\n", clientes [ i ].cpf ); // Mesma coisa quando for exibir ou guarda usar sempre ||Vetor[posiçao].dado|| } } //Retorno para o menu ou sair do programa printf("\n Deseja Retornar ao Menu? | SIM - 1 Nao - 0 | Escolha: "); scanf("%d",&Op); system("cls"); } //Fim do Menu } obrigado já pela ajuda
-
- bubblesort em vetor de struct
- c
-
(e %d mais)
Tags:
- bubblesort em vetor de struct
- c
- vetor
- vetor de struct
- ordenar
- ordenar vetor
- ordenar vetor de struct
- bubblesort
- bubblesort em c
- bubblesort em vetor
- bubblesort em vetor de struc
- c++
- java
- html
- batman
- estrutura de dados
- algoritimo
- busca e ordenação
- estruturando dados
- ordenando o vetor
- ajuda
- como faço
- como faço para ordenar um vetor de struct
-
GALERA PRECISO IMPLEMENTAR O MALDITO DO QUICKSORT E INSERTSORT,TENTEI COLOCAR ALGUNS MÉTODOS MAS NÃO CONSEGUI... FIZ ISSO ATÉ AGORA. #include<stdio.h>#include<stdlib.h>#include<conio.h>#define t 8 int main () { int v[t],x = 0,y = 0,aux = 0,min =0,op,p=0,r=0; for( x = 0; x < t; x++ ) { printf("Entre com um inteiro para vetor[%d]: ",x); scanf("%d",&aux); v[x] = aux; } printf("Escolha uma opcao: "); printf("\n\nBubble Sort : 1\n"); printf("\n\nSelect Sort : 2\n"); printf("\n\nQuick Sort : 3\n"); printf("\n\nInsert Sort : 4\n"); scanf("%d",&op); switch(op){ case 1://BubbleSort for( x = 0; x < t; x++ ) { for( y = x + 1; y < t; y++ ) { if ( v[x] > v[y] ) { aux = v[x]; v[x] = v[y]; v[y] = aux; } }} printf("\n Elementos ordenados:"); for( x = 0; x < 8; x++ ){ printf("\n %d",v[x]); // exibe o vetor ordenado} break;case 2: //SelectSort for (x = 0; x < t; x++) { min = x;for (y = (x+1); y < t; y++) { if(v[y] < v[min]) min = y; } if (x != min) { aux = v[x]; v[x] = v[min]; v[min] = aux; } } printf("\n Elementos ordenados:"); for( x = 0; x < 8; x++ ){ printf("\n %d",v[x]); // exibe o vetor ordenado}break;case 3: break;case 4: break; } }
-
Boa noite galera,estou precisando de ajuda com C métodos de ordenação,preciso resolver o seguinte exercicio mas está complicado ^^ Elaborar um programa em C que faça a carga de um vetor com 8 posições de valores inteiros e positivos. Permitir escolher um dos métodos de ordenação de dados (1-inserção, 2-bubble sort, 3-quick sort, 4-seleção) fiz isso até agora #include <stdio.h> #include <stdlib.h> #define TAM 8 int main() { int vetor[TAM], i = 0, y = 0, aux = 0; for( i = 0; i < TAM; i++ ) { printf("Entre com um inteiro para vetor[%d]: ",i); scanf("%d",&aux); vetor= aux; } for( i = 0; i < TAM; i++ ) { for( y = i + 1; y < TAM; y++ ) // sempre 1 elemento à frente { // se o (x > (x+1)) então o x passa pra frente (ordem crescente) if ( vetor > vetor[y] ) { aux = vetor; vetor = vetor[y]; vetor[y] = aux; } } } // fim da ordenação // exibe elementos ordenados printf("Elementos ordenados: \n"); for( i = 0; i < TAM; i++ ) { printf(" \n vetor[%d]=%d \n\n",i,vetor); // exibe o vetor ordenado } system("PAUSE"); }
- 1 resposta
-
- c
- metodosdeorenacao
- (e %d mais)