Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @author Mateus Costa
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "registro.h"
- struct escola_t {
- int total_cadastrados;
- Estudante **estudantes;
- };
- struct estudante_t {
- char nome[128];
- char curso[64];
- int ano;
- char grupo;
- };
- Escola *criar_escola(const int max_alunos) {
- Escola *escola;
- escola = malloc(sizeof *escola);
- escola->estudantes = malloc(sizeof(Estudante *) * max_alunos);
- escola->total_cadastrados = 0;
- return escola;
- }
- void destruir_escola(Escola **escola) {
- int i;
- for(i = 0; i < (*escola)->total_cadastrados; i++) {
- free((*escola)->estudantes[i]);
- }
- free(*escola);
- *escola = NULL;
- }
- void cadastrar_estudante(Escola *escola, const char *nome, const char *curso,
- const int ano, const char grupo) {
- Estudante *estudante;
- estudante = malloc(sizeof *estudante);
- strcpy(estudante->nome, nome);
- strcpy(estudante->curso, curso);
- estudante->ano = ano;
- estudante->grupo = grupo;
- escola->estudantes[escola->total_cadastrados] = estudante;
- escola->total_cadastrados++;
- }
- void listar_estudantes(Escola *escola) {
- printf("Todos os estudantes cadastrados:\n\n");
- int i;
- for(i = 0; i < escola->total_cadastrados; i++) {
- printf("Nome: %s\n", escola->estudantes[i]->nome);
- printf("Curso: %s\n", escola->estudantes[i]->curso);
- printf("Ano: %d\n", escola->estudantes[i]->ano);
- printf("Grupo: %c\n\n", escola->estudantes[i]->grupo);
- }
- printf("-----\n");
- }
- void listar_grupo(Escola *escola) {
- struct grupo_t {
- Estudante* estudantes[escola->total_cadastrados];
- int cont_estudantes;
- char letra;
- };
- struct grupo_t grupos[MAX_GRUPOS]; /* suporta até MAX_GRUPOS grupos */
- int cont_grupo = 0;
- int i, j;
- /* separa os estudantes em grupos */
- for(i = 0; i < escola->total_cadastrados; i++) {
- int flag_grupo = 0;
- for(j = 0; j < cont_grupo; j++) {
- if(grupos[j].letra == escola->estudantes[i]->grupo) {
- grupos[j].estudantes[grupos[j].cont_estudantes] = escola->estudantes[i];
- grupos[j].cont_estudantes++;
- flag_grupo = 1;
- }
- }
- if(!flag_grupo) {
- grupos[cont_grupo].letra = escola->estudantes[i]->grupo;
- grupos[cont_grupo].cont_estudantes = 0;
- grupos[cont_grupo].estudantes[grupos[cont_grupo].cont_estudantes] = escola->estudantes[i];
- grupos[cont_grupo].cont_estudantes++;
- cont_grupo++;
- }
- }
- /* exibe os resultados */
- for(i = 0; i < cont_grupo; i++) {
- printf("Estudantes do Grupo: %c\n\n", grupos[i].letra);
- for(j = 0; j < grupos[i].cont_estudantes; j++) {
- printf("Nome: %s\n", grupos[i].estudantes[j]->nome);
- printf("Curso: %s\n", grupos[i].estudantes[j]->curso);
- printf("Ano: %d\n\n", grupos[i].estudantes[j]->ano);
- }
- printf("-----\n");
- }
- }
Add Comment
Please, Sign In to add comment