estou com dúvidas...C.

1. estou com dúvidas...C.

Spyer
spy_linux

(usa Outra)

Enviado em 11/11/2010 - 14:22h

Pessoal estou tentando implementar um código, no qual é um trabalhinho que tenho que fazer...mas num to conseguindo direito...tentei criar a função de ordenação por seleção tb...está no fim do código.
Eu já criei um arquivo.dat com varios números no qual eles estão desordenados e se chama: numeros.dat. Mas não sei de que forma tb posso chamar esse arquivo para que esses numeros seja ordenado.Me ajude pessoal.Obrigado

Olhe a descrição do trabalho:
Escreva um programa que adapte o algorítmo de ordenação por seleção para que ele funcione sobre uma lista encadeada de floats. o programa d everá ler um arquivo dados.dat contendo uma lista de números e carrega-los numa lista encadeada.Depois deverá aplicar o algorítmo de ordenação por seleção adaptado, e finalmente guardar a lista ordenada num arquivo sida.dat.

//-----------------------------------------------------------------------------------------------------------------

#include <stdlib.h>
#include <stdio.h>

typedef struct tlista{
int n;
tlista *prox;
};

tlista *lu_insereinicio(tlista *plst, int pn)
{
tlista *aux;
aux = (tlista*)malloc(sizeof(tlista));
aux -> n = pn;
aux -> prox = plst;
return aux;
}

void lu_exibelista(tlista *plst)
{
tlista *aux = plst;

while (aux != NULL)
{
printf("%d, ", aux -> n);
aux = aux -> prox;
}
}

int main()
{
int num; // ESTE É O NUMERO QUE SERÁ LIDO DO ARQUIVO E PASSADO PARA A LISTA
tlista *list; // ESTOU CRIANDO A LISTA, NADA DE NOVO
list = NULL;
FILE *arquivo; // REFERENCIA DO ARQUIVO, SEMPRE QUE FOR UTILIZAR O ARQUIVO
// SERA REFERENDIDO-SE PELO arquivo
arquivo = fopen("c:\\arq.txt","r"); // O FOPEN ABRE O ARQUIVO, NO CASO
// É PASSADO POR PARAMETRO O ENDEREÇO
// DO ARQUIVO, E O "r" SIGNIFICA QUE
// O ARQUIVO ESTÁ SENDO ABERTO APENAS
// PARA LEITURA

if (arquivo) // CASO NAO TENHA DADO ERRO AO ABRIR O ARQUIVO
{
do
{
fscanf(arquivo,"%d",&num ); // O FSCANF É IDENTICO AO SCANF QUE
// TODOS CONHECEM, PORÉM ELE É
// UTILIZADO PARA LER DADOS DE
// ARQUIVOS, E É PASSADO COMO
// PARAMETRO, O PROPRIO ARQUIVO
// QUE ESTA SENDO LIDO
list = lu_insereinicio(list, num); // INSERE O NUMERO NA LISTA
}while(!feof(arquivo)); // ELE PERCORRERÁ TODAS AS LINHAS DO ARQUIVO
// ENQUANTO O ARQUIVO NAO CHEGAR AO FIM
// FEOF = END OF FILE
}

lu_exibelista(list); // EXIBE A LISTA
fclose(arquivo); // FECHA O ARQUIVO
system("pause");
}
//-------------------------------------------------------------------------------------------------------------

void ordena_seleção(int num[], int tam) {
int i, j, min;
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) {
int swap = num[i];
num[i] = num[min];
num[min] = swap;
}
printf(" %d",num[ i ]);
}
}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts