Ir para conteúdo

POWERED BY:

Arquivado

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

fmda

[Resolvido] Ordenacao de um arquivo txt

Recommended Posts

tipo to precissando implementar um bubllesort, porem precisso ler determinados numeros de um arquivo txt e depois ordenalos e gravar em um arquivo txt, alguem tem algum materia que possa me ajudar??

 

eu consigo fazer ele ordenar e gravar porem pegando os valores de um vetor, mas de um arquivo txt ta meio complicado, qualk forma posso fazer, tipo pegar os valroes jogar num vetor tbm poderia da certo, mas nao sei implementar este tipo

 

for( j=1; j<=TAMANHO; j++ ){

for( i=1; i<=TAMANHO; i++ ){

if( vet > vet[i+1] ){

aux = vet;

vet = vet[i+1];

vet[i+1]=aux;

}

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa tem tantos tópicos aki sobre leitura de txt's

 

faça uma busca neh

Compartilhar este post


Link para o post
Compartilhar em outros sites

porem pegando os valores de um vetor, mas de um arquivo txt ta meio complicado

agora você fala q ta simples???

q bom q em algumas horas você achou simples..

 

leia sobre 'fscanf()';

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que você num ta sabendo ler, interpretação de texto ae, emfim

 

minha duvida não é ler um arquivo e apenas mostrar em tela, e sim, ler o arquivo e jogar os dados num vetor para depois eu ordenalos

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, vamos deixar as interpretações pra lah..

a ideia é você ler os numeros inteiros, pode usar o fscanf!

você usará para isso um loop ai ficara + ow - assim:

index = 0;
while(naum foi fim de arquivo){
	iNum = fscanf(.....
	vetor[index++] = iNum;
}

fiz meio q portugol com C..

+ soh pra você ter uma noçaum de como vai fazer..

você vai ler o numero, e jogar no vetor, a variavel index sera incrementada após o recebimento do valor.

 

entendeu?

 

[]s

 

---

Título Editado

 

Ajuda com ordenação de um arquivo txt http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Ordenacao de um arquivo txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

É eu tentei aqui nao consegui, eu consegui fazer ele gerar com um rand, ae ele me gera e ordena e salva num txt, mas nao to conseguindo abrir um txt ordenar eles e salvar, tem como me da uma ajudinha aki, so isso q to garrado, pq ainda tenho q fazer para merche sort e selection sort

 

como é trabalho e nao foi entregue, tirei, qq coisa manda mp que enviou o codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

no C ao invez de C:/..., tem q ser C://..

 

amanha te ajudo com + calma;

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

os dados no txt vem como?

assim:

1 2 3 4 5 6 7

ow assim

1

2

3

4

5

6

7

 

?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele vem assim:

 

1

2

3

4

5

 

eu acho que consegui fazer aqui com fscanf (fp, "%d", &vetor);, os testes aqui ele ler e ordenou e salvou, vou ver com o selection mas acho que não deverá dar problema, qq coisa volto, vlw ae, faltana um rewind

Compartilhar este post


Link para o post
Compartilhar em outros sites

conseguir fazer todas porem cheguei no ultimo que é do quicksort é pra fazer 1 pra pegar o pivo do inicio e outro com pivo no meio, porem:

 

 

se usar assim pra pegar o pivo do inicio ele funciona

 

int pivo = vetor[inicio];

 

se usar assim pra pegar o meio, a tela so pisca e num faz nada

 

int pivo = ((vetor[fim] - vetor[inicio] ) / 2);

Compartilhar este post


Link para o post
Compartilhar em outros sites

conseguir fazer todas porem cheguei no ultimo que é do quicksort é pra fazer 1 pra pegar o pivo do inicio e outro com pivo no meio, porem:

 

 

se usar assim pra pegar o pivo do inicio ele funciona

 

int pivo = vetor[inicio];

 

se usar assim pra pegar o meio, a tela so pisca e num faz nada

 

int pivo = ((vetor[fim] - vetor[inicio] ) / 2);

Erro de sintaxe. O que você quer é:

 

int pivo = vetor[(fim-inicio)/2];

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um printf pra ver q valor vem na sua expressão:

((vetor[fim] - vetor[inicio] ) / 2);

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

retorna 0

 

 

void quicksort(int vetor[], int inicio, int fim) {

if(fim - inicio > 0) {

int aux;

int pivo = vetor[inicio];

int esquerda = inicio + 1;

int direita = fim;

while(esquerda < direita) {

if(vetor[esquerda] <= pivo) {

esquerda++;

} else {

 

aux = vetor[esquerda];

vetor[esquerda] = vetor[direita];

vetor[direita] = aux;

direita--;

}

}

if(vetor[esquerda] > pivo) {

direita--;

}

 

aux = vetor[inicio];

vetor[inicio] = vetor[esquerda];

vetor[esquerda] = aux;

quicksort(vetor, inicio, esquerda-1);

quicksort(vetor, direita, fim);

}

}

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.