Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

helensp

Ordenação e busca em .txt

Recommended Posts

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Conteúdo Similar

    • Por Kefatif
      Bom dia Srs.
       
      Preciso de uma ajuda, não estou conseguindo deixar a seleção de opções abaixo obrigatória mesmo incluindo o "required"
       
      <label style="width:35%; margin-left:2%">Unidade<b style="color:red">*</b><br> <select name="cnes" class="form-control required" style="width:100%"> <option value="">Selecione</option> <?php $sql = "select * from UNIDADES order by NOME_UNIDADE"; $result = mysqli_query($con, $sql); while ($row= mysqli_fetch_array($result)){ ?> <option value="<?php echo $row["CNES"];?>"><?php echo $row["NOME_UNIDADE"]; ?></option> <?php } ?> </select> </label>  
      Agradeço desde já pela ajuda!
    • Por EstilloWeb
      Está ocorrendo um erro em meu comando MySQL na ordenação dos resultados. O código é o seguinte:
      $sql_imos4 = "Select DISTINCT imovel FROM propostas ORDER BY id DESC"; $exe_imos4 = mysqli_query($conexao, $sql_imos4); O objetivo é listar uma única vez um imóvel com proposta, mesmo que haja dois ou mais registros, sempre ordenado mais recente. O que está ocorrendo quando o imóvel tem mais de uma proposta cadastrada, a ordenação está sendo feita pelo ID da proposta mais antiga.
      Exemplo:
      imóvel ref. 4528 tem duas propostas, sendo que a mais recente tem o ID 235 porém aparece na listagem abaixo do imóvel ref. 4325, que tem uma só proposta e ID 230.
      O resultado deveria estar invertido neste caso.
      Onde pode estar o erro? Agradeço a ajuda.
    • Por leonidas.assuncao
      Bom dia!
       
      Peço ajuda para um projeto escolar, vou descrever a função do script:
       
      > Banco de dados prévio contendo uma relação de nomes de empresas da internet e seus respectivos sites.
       
      >Função 1 do script:
       
      Caixa de seleção com os nomes das empresas. Após selecionar, o usuário clica no botão "acessar site" e será aberto uma nova guia com o endereço do site da empresa.
       
      Função 2 do script:
      Caixa de texto para digitação dos nomes das empresa com autocompletar, o usuário inicia a digitação do nome, o sistema retorna como as palavras até fechar o nome da empresa (igual ao buscador do google), o usuário clica no botão "acessar site" e será aberto uma nova guia com o endereço do site da empresa.
       
      Desde já agradeço!
       
    • Por recmarq
      Boa tarde,
       
      Eu tenho uma lista com vários itens, (P, M, G, 1, 2, 3, 4, 5, 6, 7, 8, 9).
      essa lista está desordenada e eu preciso ordenar por ordem alfabética e numérica, quando eu uso a ordenação de letras eu comparo com sinal de maior ">"
      exemplo = a > b
      Preciso ordena-los, alguém poderia me ajudar? 
       
    • Por cyyyyber
      oi galera, minha prof pediu um seminario sobre o heap sort. poderiam me passar materiais e alguns algoritmos fáceis para eu estudar? estou perdido. obg
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.