Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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;
}

 

  • Curtir 1
Link para o comentário
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;
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...