Jump to content
Fórum Script Brasil
  • 0

[AJUDA] ordem alfabética


KPITALISTA

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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

Edited by General Shepherd
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...