• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

h4fun

Sistema para processar a pauta de uma disciplina ao longo de um semestre...

8 mensagens neste tópico

Boas,

por acaso alguém tem uma estrutura de dados semelhante que possa disponibilizar??

"Pretende-se escrever um programa para processar a pauta de uma disciplina ao longo de

um semestre. Para construir a pauta da disciplina, o registo de cada aluno deve conter a

seguinte informação: o número; o nome (40 caracteres); o curso (sigla com 5

caracteres); o número de avaliações efectuadas; as avaliações; e a média obtida. O aluno

pode efectuar um número variável de avaliações, até um máximo de 8. Para cada

avaliação é necessário armazenar a nota e o respectivo peso em percentagem. O

programa deve funcionar de forma repetitiva, apresentando o seguinte menu:

Pauta da disciplina

1 – Introduzir alunos

2 – Alterar a informação dos alunos

3 – Calcular a nota final dos alunos

4 – Listar os alunos ordenados por número

5 – Listar os alunos ordenados por ordem alfabética

6 – Listar os alunos de um curso

7 – Terminar o programa

Opção ="

Obrigado pelo atenção  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existem muitos tópicos sobre estes temas. Acho que assim como estás a fazer (a pedir código feito) não vais aprender grande coisa.

Tenta fazer por ti e ir postando as tuas dúvidas. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eis o que já estou a desenvolver...

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

typedef struct aluno
{
int 			num;
char 			nome[40];
char			curso[5];
struct aluno		*next;

} Aluno;

typedef Aluno *PtrAluno;


typedef struct avaliacoes
{
int	                   num;
float	                    nota;
struct avaliacoes	*next;
PtrAluno    		v_aluno;

} Avalia;

typedef Avalia *PtrAvalia;


void	Insert_Aluno		(PtrAluno *lista);
void	Change_Aluno	(PtrAluno *lista);
void	Ver_Alunos		(PtrAluno *lista);

void	Insert_Avalia	(PtrAvalia *lista);
void	Ver_Avalia		(PtrAvalia *lista);

void	Menu_Alunos	(void);
void	Menu_Avaliacoes	(void);		

Até agora o que dizem?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não te faltam ai estruturas? Não tou a ver a Cartao nem a Trans...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Foi apenas um erro de "paste"  :biggrin:

è que estou a aproveitar a estrutura de um outro projecto que estou a desenvolver...

:biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas...

Alguém sabe uma boa maneira de listar os dados inseridos por ordem númerica assim como ordem alfabética?!

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal...

Como posso integrar uma função de ordenação no meu codigo???

Já ando ás voltas com isto e não csg sair daqui... podem dar uma ajuda??

Thks...

fica o codigo como está neste momento...

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


typedef struct aluno
{
int 			num_aluno;
char 			nome[40];
char			curso[5];
struct aluno		*next;
}Aluno;

typedef Aluno *PtrAluno;


/*------------------------Prot¢tipos das Funcoes------------------------*/


void	Insert_Aluno		(PtrAluno *lista);
void	Change_Aluno		(PtrAluno *lista);
void	Ver_Alunos			(PtrAluno *lista);
int		Ver_se_Aluno		(PtrAluno *lista, int cod, int ver);

void	Erro		(char *msg);
void	Menu_Alunos			(void);


PtrAluno  	apAluno	 =NULL;





void Erro (char *msg)
{
puts (msg);
getch ();
}


void main ()
{
char op='0';

do
{

	system("cls");



	printf ("                    º -------- PAUTA DE UM DISCIPLINA  ---------  º       \n ");
	printf ("                   ÌÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹       \n ");
	printf ("                   º 1 º - Introduzir um Aluno                   º       \n ");
	printf ("                   º   º                                         º       \n ");
	printf ("                   º 2 º - Alterar a informacao dos alunos       º       \n ");
	printf ("                   º   º                                         º       \n ");
	printf ("                   º 3 º - Calcular a nota final dos alunos      º       \n ");
	printf ("                   º   º                                         º       \n ");
	printf ("                   º 4 º - Listar  por numero                    º       \n ");
	printf ("                   º   º                                         º       \n ");
	printf ("                   º 5 º - Listar  por ordem alfabetica          º       \n ");
	printf ("                   º   º                                         º       \n ");
	printf ("                   º 6 º - Listar os alunos de um curso          º       \n ");
	printf ("                   º   º                                         º       \n ");
	printf ("                   º 7 º - Terminar o programa                   º       \n ");
	printf ("                   ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ       \n ");
	printf ("\n\n\n");
	printf ("\t ESCOLHA A SUA OPۂO -> ");
	do
	{
		op=getch();
	}
	while (op<='1' && op >='7');
	putch (op);
	switch (op)
	{
		case '1': Insert_Aluno		(&apAluno);		break;
		case '2': Change_Aluno		(&apAluno);     break;
		case '3': break;
		case '4': Ver_Alunos			(&apAluno);		break;
		case '5':break;
		case '6': break;
	}
}
while (op!='7');
}








void Insert_Aluno (PtrAluno *lista)
{
char	op=0;
PtrAluno	aux=NULL, inicio=NULL;

aux=(PtrAluno) malloc (sizeof(Aluno));
if (aux!=NULL)
{
	clrscr();
	printf ("Dados do Novo Aluno\n\n");
	do
	{
		printf ("Numero do Aluno -> ");
		scanf(" %d",&aux->num_aluno);
	}
	while (Ver_se_Aluno (&apAluno, aux->num_aluno, 1)==1);
	flushall ();
	printf("Nome   -> ");
	gets(aux->nome);
	printf("Curso   -> ");
	gets(aux->curso);

	flushall ();

	aux->next=NULL;
	printf ("Confirma a insercao da Informacao (s/n) ? ");
	do
		op=getch();
	while (op!='s' && op!='n');
	putch (op);
	if (op=='s')
	{
		if ((*lista) == NULL)
			(*lista)=aux;
		else
		{
			inicio=(*lista);
			while (inicio->next != NULL)
				inicio=inicio->next;
			inicio->next=aux;
		}
	}
	else
		free (aux);
}
else
	Erro ("Memoria insuficiente !!!");
}


void Change_Aluno (PtrAluno *lista)
{
PtrAluno aux=NULL;
int cod=0;

if ((*lista) != NULL)
{
	clrscr ();
	printf ("Alteracao dos Dados do Aluno\n");
	printf ("Numero do Aluno a alterar -> ");
	scanf ("%d", &cod);
	aux=(*lista);
	while (aux!=NULL && aux->num_aluno!=cod)
		aux=aux->next;
	if (aux!=NULL)
	{
		clrscr ();
		printf ("Novos Dados do Aluno\n\n");
		printf ("Numero de Aluno -> %d\n", aux->num_aluno);
		flushall ();
		printf ("Nome   -> ");
		gets (aux->nome);
		printf ("Curso   -> ");
		gets (aux->curso);

		printf ("Dados do Aluno alterados.");
		getch ();
	}
	else
		Erro ("Aluno inexistente !!!");
}
else
	Erro ("Nao existem Alunos !!!");
}





void Ver_Alunos (PtrAluno *lista)
{
PtrAluno aux= (*lista);




if (aux!=NULL)
{
	while (aux!=NULL)
	{
		clrscr();
		printf ("Alunos existentes\n\n");
		printf ("Numero de Aluno -> %d\n", aux->num_aluno);
		printf ("nome   -> ");
		puts (aux->nome);
		printf ("Curso   -> ");
		puts (aux->curso);

		printf ("Prima uma tecla para continuar...");
		getch ();
		aux=aux->next;
	}
}
else
	Erro ("Nao existem Alunos !!!");
}

int Ver_se_Aluno (PtrAluno *lista, int cod, int ver)
{
int ret=0;
PtrAluno aux=(*lista);

if (aux!=NULL)
{
	while (aux!=NULL && aux->num_aluno!=cod)
		aux=aux->next;
	if (aux==NULL)
		ret=0;
	else
		ret=1;
}
else
	ret=0;
if (ret==1 && ver==1)
	Erro ("Aluno ja  existente !!!");
return ret;
}





0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora