Ir ao conteúdo
  • Cadastre-se

C ordenação por data de nascimento


viniciosbarbosa

Posts recomendados

pessoal tenho uma duvida na ordenação tenho que ordenar do mais novo  para o mais velho tudo importa dia mês e ano de nascimento mais não sei como proceder

ao final do programa tenho que imprimir a matricula dos alunos;

meu código ate agora

a entrada seria essa

5
12345 12 07 1978 erick
23489 11 03 2009 joao
98762 05 12 1976 maria
34561 11 07 1978 roberto
34599 07 05 1976 ricardo

 

e a saida seria 
matricula 23489
matricula 12345
matricula 34561
matricula 98762
matricula 34599

 

 

mas esta dando um valor diferente 
 

#include<stdio.h>
#include<string.h>
typedef struct{
int matricula;
int dia;
int mes;
int ano;
char nome[200];
}aln;


int main(){
int n,i;
    scanf("%d",&n);
	aln aluno;
	aln vet[n];
	for(i=0;i<n;i++){
	scanf("%d %d %d %d %s",&aluno.matricula,&aluno.dia,&aluno.mes,&aluno.ano,aluno.nome);

	vet[i]=aluno;
	}

	int veto[n];
    for(i=0;i<n;i++){
    veto[i]=vet[i].matricula;
    }

	int temp;
    int j;
    for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
    if(vet[i].ano>=vet[j].ano&&vet[i].dia>=vet[j].dia &&vet[i].mes>=vet[j].mes  ){
	temp=veto[i];
	veto[i]=veto[j];
	veto[j]=temp;
    }


    for(j=0;j<n;j++){

    printf("matricula %d\n",veto[j]);


    }


    return 0;
}

 

 

Link para o comentário
Compartilhar em outros sites

@viniciosbarbosa 

 

Precisa apenas organizar a lógica de comparação nesse if:

if(vet[i].ano>=vet[j].ano&&vet[i].dia>=vet[j].dia &&vet[i].mes>=vet[j].mes  ){
	temp=veto[i];
	veto[i]=veto[j];
	veto[j]=temp;
    }

 

 

Supondo que temos selecionado dois índices: i = 0   e   y  = i+1; 

1- Verifique se o ano i é menor que o ano[y].

  - Se for menor:                 troque os dois.         Resete o índice do loop ( i = 0 )

  - Se não for menor, mas for igual: Etapa 2

 

2- Verifique se o mês i é menor que o mês [y].

  - Se for menor:                 troque os dois.        Resete o índice do loop ( i = 0 )

  - Se não for menor, mas for igual: Etapa 3

 

3- Verifique se o dia i é menor que o dia[y].

  - Se for menor:                 troque os dois.        Resete o índice do loop ( i = 0 )

  - Se não for menor, mas for igual, ai você decide como ficará.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...