-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
db09b77
commit eade5b4
Showing
4 changed files
with
371 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
#include <iostream> | ||
#include <windows.h> | ||
#include "lista.hpp" | ||
|
||
#define MAXTAM 5 | ||
|
||
using namespace std; | ||
|
||
void CriaListaVazia(TipoLista *lista) | ||
{ | ||
if (!listaCriada) | ||
{ | ||
lista->tamanho = 0; | ||
lista->Primeiro = 0; | ||
lista->Ultimo = lista->Primeiro; | ||
cout << "Lista criada com sucesso!"; | ||
listaCriada = true; | ||
} | ||
else | ||
{ | ||
cout << "Lista já existe!"; | ||
} | ||
Sleep(1500); | ||
} | ||
|
||
int VerificaListaVazia(TipoLista *lista) | ||
{ | ||
return (lista->Primeiro == lista->Ultimo); | ||
} | ||
|
||
int VerificaListaCheia(TipoLista *lista) | ||
{ | ||
return (lista->Ultimo == MAXTAM); | ||
} | ||
|
||
int TamanhoLista(TipoLista *lista) | ||
{ | ||
return lista->tamanho; | ||
} | ||
|
||
int InsereItem(TipoLista *lista, TipoItem item) | ||
{ | ||
if (VerificaListaCheia(lista)) | ||
{ | ||
return -1; | ||
} | ||
|
||
strcpy(lista->Item[lista->Ultimo].matricula, item.matricula); | ||
strcpy(lista->Item[lista->Ultimo].nome, item.nome); | ||
lista->Item[lista->Ultimo].turma = item.turma; | ||
lista->Item[lista->Ultimo].p1 = item.p1; | ||
lista->Item[lista->Ultimo].p2 = item.p2; | ||
lista->Item[lista->Ultimo].p3 = item.p3; | ||
lista->tamanho++; | ||
lista->Ultimo++; | ||
return 1; | ||
} | ||
|
||
void ImprimeLista(TipoLista lista) | ||
{ | ||
if (listaCriada) | ||
{ | ||
int Aux; | ||
for (Aux = lista.Primeiro; Aux <= (lista.Ultimo - 1); Aux++) | ||
{ | ||
cout << "Matricula: " << lista.Item[Aux].matricula << endl; | ||
cout << "Nome: " << lista.Item[Aux].nome << endl; | ||
cout << "Turma: " << lista.Item[Aux].turma << endl; | ||
cout << "P1: " << lista.Item[Aux].p1 << endl; | ||
cout << "P2: " << lista.Item[Aux].p2 << endl; | ||
cout << "P3: " << lista.Item[Aux].p3 << endl; | ||
cout << endl; | ||
} | ||
cout << endl; | ||
system("Pause"); | ||
} | ||
else | ||
{ | ||
cout << "Crie a lista primeiramente."; | ||
Sleep(1000); | ||
} | ||
} | ||
|
||
int PesquisaItem(TipoLista *lista, char matricula[]) | ||
{ | ||
for (int i = lista->Primeiro; i < lista->Ultimo; i++) | ||
{ | ||
if (strcmp(matricula, lista->Item[i].matricula) == 0) | ||
{ | ||
return i; | ||
} | ||
} | ||
return -1; | ||
} | ||
|
||
void ImprimeItem(TipoLista *lista, int posicao) | ||
{ | ||
if (posicao != -1) | ||
{ | ||
cout << "\nMatricula: " << lista->Item[posicao].matricula << endl; | ||
cout << "Nome: " << lista->Item[posicao].nome << endl; | ||
cout << "Turma: " << lista->Item[posicao].turma << endl; | ||
cout << "P1: " << lista->Item[posicao].p1 << endl; | ||
cout << "P2: " << lista->Item[posicao].p2 << endl; | ||
cout << "P3: " << lista->Item[posicao].p3 << endl | ||
<< endl; | ||
} | ||
else | ||
{ | ||
cout << "Aluno não encontrado."; | ||
} | ||
system("Pause"); | ||
} | ||
|
||
void RetiraItem(TipoApontador p, TipoLista *lista, TipoItem *item) | ||
{ | ||
int Aux; | ||
|
||
if (VerificaListaVazia(lista) || p > lista->Ultimo) | ||
{ | ||
cout << "Erro: Posição não existe na lista\n"; | ||
return; | ||
} | ||
|
||
*item = lista->Item[p]; | ||
|
||
for (Aux = p; Aux <= lista->Ultimo; Aux++) | ||
{ | ||
lista->Item[Aux] = lista->Item[Aux + 1]; | ||
} | ||
|
||
lista->Ultimo--; | ||
lista->tamanho--; | ||
} | ||
|
||
void ImprimeTurma(TipoLista *lista, char turma) | ||
{ | ||
if (listaCriada) | ||
{ | ||
int Aux; | ||
for (Aux = lista->Primeiro; Aux <= (lista->Ultimo - 1); Aux++) | ||
{ | ||
if (lista->Item[Aux].turma == turma) | ||
{ | ||
cout << "Matricula: " << lista->Item[Aux].matricula << endl; | ||
cout << "Nome: " << lista->Item[Aux].nome << endl; | ||
cout << "Turma: " << lista->Item[Aux].turma << endl; | ||
cout << "Média: " << (lista->Item[Aux].p1 + lista->Item[Aux].p2 + lista->Item[Aux].p3) / 3 << endl; | ||
cout << endl; | ||
} | ||
} | ||
cout << endl; | ||
system("Pause"); | ||
} | ||
else | ||
{ | ||
cout << "Crie a lista primeiramente."; | ||
Sleep(1000); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#ifndef LISTA_H | ||
#define LISTA_H | ||
|
||
#define MAXTAM 3 | ||
|
||
typedef int TipoApontador; | ||
|
||
typedef struct TipoItem | ||
{ | ||
char nome[81]; | ||
char matricula[12]; | ||
char turma; | ||
float p1, p2, p3; | ||
}; | ||
|
||
typedef struct TipoLista | ||
{ | ||
TipoItem Item[MAXTAM]; | ||
TipoApontador Primeiro, Ultimo; | ||
int tamanho; | ||
}; | ||
|
||
bool listaCriada = false; | ||
|
||
void CriaListaVazia(TipoLista *lista); // Cria uma lista vazia | ||
int VerificaListaVazia(TipoLista *lista); // Retorna TRUE se a lista estiver vazia, FALSE caso contrário | ||
int VerificaListaCheia(TipoLista *lista); // Retorna TRUE se a lista estiver cheia, FALSE caso contrário | ||
int InsereItem(TipoLista *lista, TipoItem item); // Insere ITEM (chave) na lista TipoLista | ||
void ImprimeLista(TipoLista lista); // Imprime a lista | ||
int PesquisaItem(TipoLista *lista, char matricula[]); // Pesquisa um aluno pela matrícula | ||
void RetiraItem(TipoApontador p, TipoLista *lista, TipoItem *item); // Remove um item da lista pela sua posição | ||
int TamanhoLista(TipoLista *lista); // Retorna o número de itens da lista | ||
void ImprimeItem(TipoLista *lista, int posicao); | ||
void ImprimeTurma(TipoLista turmas, char turma); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
#include <iostream> | ||
#include <windows.h> | ||
#include "lista.hpp" | ||
#include "funcoes.cpp" | ||
|
||
using namespace std; | ||
|
||
void Menu() | ||
{ | ||
system("cls"); | ||
cout << "--------------------------------\n"; | ||
cout << " Cadastro de Alunos \n"; | ||
cout << "--------------------------------\n"; | ||
cout << "1. Criar Lista\n"; | ||
cout << "2. Verifica Lista Vazia\n"; | ||
cout << "3. Verifica Lista Cheia\n"; | ||
cout << "4. Cadastro de Aluno\n"; | ||
cout << "5. Imprime por Turma\n"; | ||
cout << "6. Pesquisa Aluno\n"; | ||
cout << "7. Remove Aluno\n"; | ||
cout << "0. Sair\n\n"; | ||
} | ||
|
||
void Cadastro(TipoItem *aluno) | ||
{ | ||
cout << "Nome: "; | ||
cin >> aluno->nome; | ||
cout << "Matricula: "; | ||
cin >> aluno->matricula; | ||
cout << "Turma: "; | ||
cin >> aluno->turma; | ||
cout << "P1: "; | ||
cin >> aluno->p1; | ||
cout << "P2: "; | ||
cin >> aluno->p2; | ||
cout << "P3: "; | ||
cin >> aluno->p3; | ||
} | ||
|
||
int main() | ||
{ | ||
UINT CPAGE_UTF8 = 65001; | ||
UINT CPAGE_DEFAULT = GetConsoleOutputCP(); | ||
SetConsoleOutputCP(CPAGE_UTF8); | ||
|
||
TipoLista lista; | ||
TipoItem aluno; | ||
int opcao, ret; | ||
char turma; | ||
|
||
do | ||
{ | ||
system("cls"); | ||
Menu(); | ||
cout << "Opção: "; | ||
cin >> opcao; | ||
|
||
switch (opcao) | ||
{ | ||
case 1: | ||
CriaListaVazia(&lista); | ||
break; | ||
case 2: | ||
if (VerificaListaVazia(&lista)) | ||
cout << "Lista vazia!"; | ||
else | ||
cout << "A lista não está vazia ou não foi inicializada."; | ||
Sleep(1500); | ||
break; | ||
case 3: | ||
if (VerificaListaCheia(&lista)) | ||
cout << "Lista cheia!"; | ||
else | ||
cout << "A lista não está cheia ou não foi inicializada."; | ||
Sleep(1500); | ||
break; | ||
case 4: | ||
// Função de cadastro | ||
Cadastro(&aluno); | ||
ret = InsereItem(&lista, aluno); | ||
if (ret == 1) | ||
{ | ||
cout << "Aluno cadastrado com sucesso!"; | ||
Sleep(500); | ||
} | ||
else if (ret == -1) | ||
{ | ||
cerr << "ERRO ao cadastrar o aluno. Lista cheia."; | ||
Sleep(1000); | ||
} | ||
else | ||
{ | ||
cout << "Crie a lista primeiramente."; | ||
Sleep(1000); | ||
} | ||
break; | ||
case 5: | ||
if (listaCriada) | ||
{ | ||
char turma; | ||
cout << "Turma: "; | ||
cin >> turma; | ||
ImprimeTurma(&lista, turma); | ||
} | ||
else | ||
{ | ||
cout << "Crie a lista primeiramente."; | ||
Sleep(1000); | ||
} | ||
break; | ||
case 6: | ||
if (listaCriada) | ||
{ | ||
char matricula[12]; | ||
cout << "Matricula: "; | ||
cin >> matricula; | ||
ret = PesquisaItem(&lista, matricula); | ||
if (ret >= 0) | ||
{ | ||
cout << "Matrícula encontrada na posição " << ret << endl; | ||
Sleep(1000); | ||
ImprimeItem(&lista, ret); | ||
} | ||
else | ||
{ | ||
cout << "A matrícula não está cadastrada."; | ||
Sleep(1000); | ||
} | ||
} | ||
else | ||
{ | ||
cout << "Crie a lista primeiramente."; | ||
Sleep(1000); | ||
} | ||
break; | ||
case 7: | ||
if (listaCriada) | ||
{ | ||
char matricula[12]; | ||
cout << "Matricula: "; | ||
cin >> matricula; | ||
ret = PesquisaItem(&lista, matricula); | ||
if (ret >= 0) | ||
{ | ||
cout << "Matrícula encontrada na posição " << ret; | ||
Sleep(1000); | ||
cout << "\n\nRemovendo..."; | ||
RetiraItem(ret, &lista, &aluno); | ||
Sleep(1000); | ||
} | ||
else | ||
{ | ||
cout << "A matrícula não está cadastrada."; | ||
Sleep(1000); | ||
} | ||
} | ||
else | ||
{ | ||
cout << "Crie a lista primeiramente."; | ||
Sleep(1000); | ||
} | ||
break; | ||
default: | ||
break; | ||
} | ||
|
||
} while (opcao != 0); | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
## Atividade Prática | ||
|
||
1. Implemente uma função que imprima o número de matrícula, o nome, a turma e a média de todos os alunos que pertencem a uma determinada turma. Essa função deve obedecer o protótipo: | ||
|
||
void imprime_turma (Lista turmas, char turma); |