Ir ao conteúdo

Posts recomendados

Postado

Boa tarde. Estou com esse programa pra fazer na faculdade, que, é um cadastro de alunos, somente com o registro do aluno e o nome.

A ideia inicial é: Entrar com os dados ( nome e RA ), e em seguida fazer a listagem dos registros. O professor pediu o seguinte: Criar um sistema de cadastro de alunos usando structures, switch case e variáveis dinâmicas ( ponteiros ) e ordenar os registros cadastrados em ordem alfabética. 

O cadastro e a listagem está ok. o problema mesmo está na ordenação dos nomes, que pode ser feito com strcmp e bubble sort. porém ele não quer com vetores. Como pode ser feito isso?

 

o meu código ficou da seguinte forma: 

 

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <locale.h>

struct aluno{
    int ra;
    char nome[20];
    struct aluno *anterior;
    struct aluno *ant;
    int aux;

};

void cadastraaluno();
void listaaluno();
struct aluno *al=NULL, *ant=NULL;
struct aluno aux;

main(){
    setlocale(LC_ALL,"portuguese");
    int opcao;

do{
printf("============== SISTEMA CADASTRO DE ALUNOS ==============\n\n");
printf("\n 1- Cadastrar");
printf("\n 2- Listar");
printf("\n 3- Sair\n");
printf("\n Qual opção? ");
scanf("%d",&opcao);

switch(opcao){

        case 1:{
            
            cadastraaluno();
            break;
        }
            case 2:{
                listaaluno();
                
                break;
            }
            
            case 3:{
                printf("Saindo...");
                break;
            }

                default:{
                    printf("opção inválida.");
                }

            }
            
            getch();
            }while(opcao!=3);
            getch();
            
            }
void cadastraaluno(){
    
al=(struct aluno*) malloc(sizeof(struct aluno));
printf("RA:");
scanf("%d",&(*al).ra);
fflush(stdin);
printf("NOME:");
gets((*al).nome);
(*al).anterior=ant;
ant=al;    
    }


void listaaluno(){
    printf("\n Foram cadastrados os seguintes dados: \n\n");
    
    while((*al).anterior !=NULL){ // enquanto registro anterior não for nulo.
        printf("\n RA: %d",(*al).ra);
        printf("\n NOME: %s\n",(*al).nome);
        al=(*al).anterior;    
        
         aux=*ant;
         *ant=*al;
          *al=aux;
    
    } //fecha laço while;
        
    printf("\n RA: %d",(*al).ra);
    printf("\n NOME: %s",(*al).nome);
    
getch();    
    
}

 

Agradeço a atenção. 

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!