ESTRUTURAS DE DADOS UNIP - UNIVERSIDADE PAULISTA
Por: matheusaug • 12/5/2015 • Trabalho acadêmico • 1.675 Palavras (7 Páginas) • 594 Visualizações
UNIVERCIDADE PAULISTA-UNIP[pic 1]
CAMPUS SÃO JOSÉ DO RIO PRETO-JK
ICET – Instituto de Ciências Exatas e Tecnológicas
Trabalho
de
Estruturas de Dados
DISCENTES:
MATHEUS AUGUSTO DA SILVA- (C10CCC-3)
MATHEUS OLIVEIRA DOURADO-(C14GCB-2)
GABRIEL CESAR ROSA FERREIRA(C00258-5)
THIAGO LUIZ DE MORAES(C12119-3)
DOCENTE: MICHAEL PONTES
Turma CC3P
Período : NOTURNO
O trabalho de Estrutura de Dados se resume em um cadastro de filmes usando a linguagem de programação C++.
“1” - nome, gênero, formato do vídeo, ano de lançamento, um código para o filme cadastrado.
[pic 2]
“2” - “Listar”, mostra na tela os filmes já cadastrados atualmente.
[pic 3]
“3” - informa ao usuário para digitar um nome de um filme já cadastrado anteriormente (obs: o nome digitado tem que estar de acordo com o nome do filme cadastrado, caso o nome do filme estiver digitado errado, o filme não será encontrado).
[pic 4]
“4” - esta opção exclui o registro escolhido já cadastrado.
[pic 5]
“5” - esta opção faz com que o usuário escolha e altere algum cadastrado.
[pic 6]
“6” - sair do programa salvando automaticamente os registros, quando o usuário abrir o programa novamente, os registros não são apagados do banco de dados do programa.
“7” – digita a opção escolhida.
CODIGOS
#include
#include
#include
struct cliente {
int codigo, lancamento;
char nome[35], genero[35], midia[35];
struct cliente *proximo;
} *inicio, *ultimo, *novo; // cria 3 ponteiros q iram apontar para a struct.
typedef cliente client;
int cadastrado(char str[35], int k);
int inserir()
{
int j = 0;
char nome2[35];
client p; // crio um ponteiro dentro da função inserir q aponta para a struct(escopo dele se resume a essa funcao,q uandoe la eh finalizada, ele deixa de existir, ao contrario dos outros 3 (inicio, ultimo e novo).
novo = (client *)malloc(sizeof(client)); // armazena espaço na memória para a nova struct.
if(novo == NULL) {
printf("Erro ao tentar alocar memoria.\n");
return 0;
}
printf("\nDigite o codigo do Filme: ");
scanf("%d", &novo->codigo); //copia string q foi entrada pelo usuário no campo nome da struct apontada por novo(cliente)
printf("\nDigite o nome do novo Filme: ");
scanf("%s", &novo->nome); // atriubui ao campo codigo da struct client o valor q foi digitado pelo usuário
printf("\nDigite a Genero do Filme : ");
scanf("%s", &novo->genero);
printf("\nDigite o Tipo de Midia: ");
scanf("%s", &novo->midia);
printf("\nDigite o ano de Lancamento: ");
scanf("%d", &novo->lancamento);
if(cadastrado(novo->nome, novo->codigo) == 1){
printf("Erro ao tentar cadastrar Filme.\nCodigo ou nome já estão em uso.\n");
return 0;
}
novo->proximo = NULL; // garante q o campo proximo da struct client esteja NULL
if(inicio == NULL) /* verifica se o ponteiro para o primeiro elemento da lista foi setado
caso esse if seja verdadeiro, então significa q o ponteiro para a
'cabeça'(primeiro elemento) não foi setado, sendo assim, esses
dados q foram inseridos ainda agora passam a ser apontados pelo
ponteiro(do tpw struct) *inicio(q tem escopo global). */
{
inicio = novo; // atribui um valor para ser o primeiro elemento da lista.
ultimo = novo; // atribui para q o *ultimo aponte para inicio;
}
else // caso o ponteiro inicio nào seja null, logo significa q inicio jah está apontando para
// o primeiro elemento da lista.
{
ultimo->proximo = novo; /* caso esteja sendo a segunda vez q vc chamou essa função
o ponteiro ultimo, continua apontando para a mesma struct
q o ponteiro inicio apontada, sendo assim, mudamos o valor
da primeira struct q foi criar para apontar para a nova struct
q acabou se ser criada
*/
novo->proximo = NULL; /* garantimos q a struct q acabo de ser criada vai apontar
para um valor null, indicando ser o ultimo elemento da lista
*/
ultimo = novo; // as ultimas informacoes digitas são atribuidas ao ponteiro ultimo q tem escopo global,,
}
return 1;
}
int limparmemoria()
{
client *p, *p2;
p2 = p = inicio;
if( inicio != NULL ){ // so liberar se tiver apontando para algum lugar(conhecido(struct))
do {
p2 = p;
p = p->proximo; // aponta para o segundo elemento;
free(p2); // libera posição q p2 está usando
}while(p != NULL);
}
exit(0);
}
int listar()
{
client *p; //cria um ponteiro para a struct cliente
p = inicio; //o ponteiro p agora aponta para o mesmo local q o *inicio está apontando.
if(inicio == NULL){ // se algum usuário jah foi adicionado
printf("Nao há Filme adicionaros\n");
}
else
{
printf("\n\n*** LISTANDO FILMES CADASTRADOS ***\n");
...