Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Guilherme Sixe

Struct alunos, imprimir em ordem alfabética. vejam meu codigo.

Recommended Posts

Eu fiz um código struct com informações de alunos, mas eu preciso imprimi-lo em ordem alfabética. Alguém tem noção de como faço isso? Já agradeço.

 

Segui o código:

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

typedef struct{
	char nome[20];
	int matricula;
	char curso[15];
} Cadastro;

int main(){
	int quantidade = 2;
	Cadastro alunos[quantidade];
	int i;

	
	printf("\n\nCadastro: Nome do aluno (sem espaços), matricula, e nome do curso(sem espaços)\n\n");
	for(i=0; i< quantidade; i++){
		printf("Insira os dados, de acordo com o exemplo acima: \n");
		scanf(" %s %d %s", &alunos[i].nome, &alunos[i].matricula, &alunos[i].curso);
	}
	
	
	for(i=0;i<quantidade;i++){
		printf("\nNOME: %s\nMATRICULA: %d\nCURSO: %s\n", alunos[i].nome, alunos[i].matricula, alunos[i].curso);
	}
	return 0;
}

 

Editado por Guilherme Sixe
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficaria mais fácil o uso de Lista encadeada.

eu fiz uma solução eficaz para seu problema mais não e a mais eficiente:

segue o codigo:

caso queira cadastrar mais alunos basta mudar o #define N 5 para qualquer outro valor.

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 5
typedef struct {
	char nome[20];
	char matricula[20];
	char curso[15];
} Cadastro;

int main() {

	Cadastro alunos[N];
	Cadastro aux[N];
	int i,opcao,status;

	do {
		system("cls");
		printf("\n1 - Cadastrar Alunos");
		printf("\n2 - Mostrar Alunos Cadastrados");
		printf("\n3 - Sair\n--->");
		scanf("%i",&opcao);

		switch(opcao) {

			case 1:
				for(i=0; i< N; i++) {
					system("cls");
					printf("\n\nEntre com O Nome do Aluno: ");
					scanf(" %s", &alunos[i].nome);
					printf("\nEntre com A Matricula Do Aluno: ");
					scanf(" %s", &alunos[i].matricula);
					printf("\nEntre com O Curso : ");
					scanf(" %s", &alunos[i].curso);
				}

				break;

			case 2:
				system("cls");

				int i, j;
				for( i=0; i<N; i++ ) {
					for( j=i+1; j<N; j++ ) {
						
						if( strcmp(alunos[i].nome,alunos[j].nome) == 1 ) { 
						
							strcpy(aux[i].nome,alunos[i].nome);
							strcpy(aux[i].matricula,alunos[i].matricula);
							strcpy(aux[i].curso,alunos[i].curso);
							
							strcpy(alunos[i].nome,alunos[j].nome);
							strcpy(alunos[i].matricula,alunos[j].matricula);
							strcpy(alunos[i].curso,alunos[j].curso);
							
							strcpy(alunos[j].nome,aux[i].nome);
							strcpy(alunos[j].matricula,aux[i].matricula);
							strcpy(alunos[j].curso,aux[i].curso);
						}
					}
				}
			
				for( i=0; i<N; i++ ) {
					printf("\nNome: %s \nMatricula: %s \nCurso: %s",alunos[i].nome,alunos[i].matricula,alunos[i].curso);
					printf("\n");
				}
				getch();

		break;

	case 3:
		break;
	}
	}

while(opcao != 3);

return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×