Ir para conteúdo

Arquivado

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

wedsonextremo

Abrir arquivo em txt e utilizar metodos de ordenção

Recommended Posts

Bem galera,
estou tendo muita dificuldade em finalizar um exercicio.
tenho um arquivo em txt criando por outro codigo fonte, nele possui em cada linha 50 caracteres.
na programação abaixo devo abrir esse arquivo e ordena-lo em
BubbleSort
Inserction Sort
Selection Sort
Quick Sort"
ja conseguir fazer o programa rodar em BubbleSort,
agradeço pela ajuda



Código do programa:

 

 

#include <iostream>
#include <string.h>
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;

void convertesegundo(int tempo)
{
int hor = tempo/3600;
int seg = tempo%60;
int min = tempo/60;

cout<<"Tempo para gerar aquivo: ";
if(hor<10){cout<<"0";}
cout<<hor<<":";
if(min<10){cout<<"0";}
cout<<min<<":";
if(seg<10){cout<<"0";}
cout<<seg<<endl;
}

void bubbleSort(string *content, int tam)
{
int x;
string temp;
bool sw=true;
while(sw){
sw = false;
for(x = 0; x<tam; x++)
{
if(content[x] > content[x+1])
{
temp = content[x];
content[x] = content[x+1];
content[x+1] = temp;
sw = true;
}
}
}
}

int main()
{
string line, lines[100001];
int i=0, j=0, op=100, tempo;
time_t tempoinicial;

srand(time(NULL));

char iArqName[50], oArqName[50];
cout << "Informe o nome do arquivo a ordenar> ";
cin.getline(iArqName, 50);
cout << "Informe o nome do arquivo depois de ordenado> ";
cin.getline(oArqName, 50);

ifstream myfile (iArqName);
if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,line);
lines[i] = line;
i++;
}
myfile.close();
i = i-2;

cout << "Arquivo lido com Sucesso!"<<endl;
while(op<1 || op>4)
{

cout << "### SELECIONE O METODO DE ORDENACAO ###"<<endl;
cout << " 1 - Bubble Sort" << endl;
cout << " 2 - Inserction Sort" << endl;
cout << " 3 - Selection Sort" << endl;
cout << " 4 - Quick Sort" <<endl;
cout << "#######################################"<<endl;
cout << "Informe o metodo desejado> ";
cin >> op;

switch(op)
{
case 1:
tempoinicial = time(NULL);
bubbleSort(lines, i);
break;
case 3:
//SELECT
break;
case 4:
//Quick Sort
break;
default:
cout << "Opcao Invalida!";
}
}


ofstream myFile2(oArqName);
while(j <= i)
{
myFile2 << lines[j]<<endl;
j++;
}

myFile2.close();
time_t tempofinal(time(NULL));
tempo = tempofinal-tempoinicial;

convertesegundo(tempo);

}
else cout << "Unable to open file";

system("pause");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que sua dúvida esteja em trabalhar com letras de maneira individual.

 

Para isso, você pode fazer assim:

content[x][0] // Retorna o primeiro caracter da frase
content[x][1] // Retorna o segundo caracter da frase
content[x][2] // Retorna o terceiro caracter da frase

A partir daí é começar a comparação utilizando as demais técnicas de ordenação, que faltam pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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