Ir ao conteúdo
  • Cadastre-se

Ordenação e busca em .txt


helensp

Posts recomendados

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 nao 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);
}


 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Para postar códigos use a tag CODE apertando o botão <> no topo do campo de respostas, assim você preserva a formatação do código e evita que o fórum faça alterações nele. Por exemplo, o fórum "comeu" todos os [ i ] (sem espaços) do seu código, pois no fórum isso é a tag para deixar o texto em itálico, então o texto do seu código está em itálico a partir do primeiro que foi encontrado (os demais apenas somem porque o texto já tá em itálico).

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...