Ir para conteúdo
Fórum Script Brasil
  • 0

[AJUDA] ordem alfabética


KPITALISTA

Pergunta

pessoal eu preciso ordenar uma lista .dat em ordem alfabética em bolha, inserção ou seleção até agora eu fis metade do programa, mas a parte mais importante que é ordenar eu não consegui fazer.

abaixo oque eu fiz até agora:

#include <conio.h>

#include <stdio.h>

#include <string.h>

int main( ) {

char nome[40];

float idade,estatura,massa;

int i=0;

FILE *fp = fopen("Guardas.dat","rt");

if (fp==NULL) {

printf("ERRO\n");

return 1; }

printf("Veja os resultados dos candidatos dizendo se a idade, a estatura e a massa\nestao dentro ou não dos padroes, e se ele foi aprovado ou não.\n\n");

while(fgets(nome,81,fp)!=NULL) {

fscanf(fp, "%f %f %f ",&idade,&estatura,&massa);

printf("Candidato: %s\n",nome);

if(idade>=25 && idade<=40)

printf("Idade dentro dos padroes.\n");

else

printf("Idade fora dos padroes.\n");

if(estatura>=1.70 && estatura<=2.00)

printf("Estatura dentro dos padroes.\n");

else

printf("Estatura fora dos padroes.\n");

if(massa>=75.0 && massa<=100.0)

printf("Massa dentro dos padroes.\n");

else

printf("Massa fora dos padroes.\n");

if(idade>=25 && idade<=40 && estatura>=1.70 && estatura<=2.00 && massa>=75.0 && massa<=100.0)

printf("Candidato aprovado!!!.\n\n");

else

printf("Candidato reprovado.\n\n");

}

while(fgets(nome,81,fp)!=NULL) {

fscanf(fp, "%f %f %f ",&idade,&estatura,&massa);

if(idade>=25 && idade<=40 && estatura>=1.70 && estatura<=2.00 && massa>=75.0 && massa<=100.0)

printf("Candidato: %s\n",nome);

}

fclose(fp);

getch();

return 1;

}

a minha professora colocou um código que me ajudaria mas eu não entendi e nem sei como implementa-lo no meu código.

abaixo o código da minha prof:

//primeiro codigo

#define MAX 30

struct dados

{

char nome[20];

int idade;

};

struct dados tabela[MAX];

int count=0;

void ordena(struct dados vet[MAX], int n);

int main()

{//...

ordena(tabela, cont);

//...

}

//segundo codigo

void ordena(struct dados vet[MAX], int n)

{

char aux[20];

int j,i;

for(j=2;j<=n;j++)

{

strcpy(aux, vet[j], nome);

vet[0]=vet[j];

i=j-1;

while(strcmp(aux,vet . nome)<0)

{

vet[i+1]=vet;

--i;

}

vet[i+1] = vet[j];

}

}

esse código ta estranho mas eu tenho 75% de certeza que é exatamente oque ela colocou na lousa.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Não entendi muito bem... você quer ordenar um vetor do tipo struct data? se for isso é simples

for(i=0; i<MAX; i++){
        for(j=i; j<MAX; j++){
            if(strcmp(dados[i].nome,dados[j].nome) == 1){
                strcpy(str_aux,dados[j].nome);
                strcpy(dados[j].nome,dados[i].nome);
                strcpy(dados[i].nome,str_aux);
                //
                aux=dados[j].idade;
                dados[j].idade=dados[i].idade;
                dados[i].idade=aux;
            }
        }
    }

Sendo que "MAX" é o tamanho do vetor, "dados" é o seu vetor e "str_aux" e "aux" são uma string auxiliar e uma variavel auxiliar, respectivamente. Lembrando que esse codigo ordena por nome, para ordenar por idade, mude a condição do if :D

Editado por General Shepherd
Link para o comentário
Compartilhar em outros sites

  • 0

cara o exercício que ela me deu é esse:

Os dados dos candidatos: NOME, ESTATURA, MASSA e IDADE estão armazenados no arquivo

GUARDAS.DAT.

Tarefas:

O programa deve ir lendo os dados do arquivo e chamar uma função para verificar se os dados do

candidato se enquadram nos seguintes limites:

IDADE: de 25 a 40 anos

ESTATURA: de 1.70 a 2.00 m

MASSA: de 75.0 a 100.0 Kg

e imprimir uma frase com o resultado de cada quesito dizendo se a idade, a estatura e a massa estão

dentro ou não dos padrões, e uma frase final dizendo se ele foi aprovado ou não.

Os candidatos aprovados devem ser impressos no final com seus nomes ordenados em ordem alfabética,

através de uma função que implemente um dos métodos simples de classificação (Bolha, Inserção ou

Seleção).

o programa que eu fiz le o nome dos guardas e mostra se eles foram aprovados ou não, para voce compreender melhor coloca no bloco de notas esses nomes:

Ze Novo

22 1.80 80.0

Ze Baixo

30 1.60 80.0

Ze Magro

30 1.80 70.0

Ze da Hora

30 1.80 80.0

salva como guardas.dat e salva o meu programa na mesma pasta e copila.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...