HTML 5 E CSS 3

Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

JAVASCRIPT

Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

TAMPLATES

Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Pages

sexta-feira, 21 de outubro de 2016

Programa Orientado a Objeto usando Constante e operadores Ternário em Java

Programa simples em Java onde o usuário irá informar um número e escolher se quer  calcular se e Primo ou calcular o Fatorial ou o Fibonacci. O programa será orientado a Objeto onde a classe Calcular terá todos os método e também vai ter uso de Constantes e Operadores Ternários.

DIAGRAMA DE CLASSE















Classe Calculos
















Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

terça-feira, 18 de outubro de 2016

Programa para achar o Maior Numero Informado em Java usando Orientação a Objeto.

Programa em Java para achar o maior número informado pelo usuário em java usando Orientação a Objeto. Encontre e mostre o maior deles.














Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

segunda-feira, 17 de outubro de 2016

Programa para calcular Número Primo ou Fibonacci Orientado a Objeto

Programa que vai receber um número informado pelo usuário que vai pedir para ser calculado o número Primo ou Fibonacci e pedir se quer calcular um novo número usando operadores Ternário e orientação a Objeto em Java.

















Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Exemplo de Operador condicional ternário em Java

Exemplo Simples de Operador condicional ternário em Java.



























Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Programa para ver a maior idade Orientado a Objeto em java

Programa simples em java que vai receber o nome, a idade e o peso e verificar se a o usuário e maior de idade usando classe.

CLASSE PESSOA




















































Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

domingo, 16 de outubro de 2016

Achar maior ou menor idade em Java

Programa que vai receber o nome e a idade do usuário e vai mostrar se a Pessoa e maior de idade ou não.






























Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Calcular o Fatorial em Java

Programa em Java que vai calcular o Fatorial de um número informado pelo usuário.
















Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Número Primo em Java

Programa em Java para achar se o número informado pelo usuário e Primo ou Não.


























Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

quarta-feira, 12 de outubro de 2016

Localizar o número Triangular e desenhar um Triangulo em Java usando Orientação a Objeto

Desenvolva uma aplicação que permita ao usuário localizar números triangulares a partir
da informação da sequência desejada. Um número triangular é um inteiro que pode ser
representado na forma de triângulo equilátero. Por exemplo, 10 é triangular pois pode ser
representado em forma de triângulo equilátero, conforme a figura abaixo:

Para facilitar a descoberta de quantos elementos (bolinhas) seriam necessários para se
formar um triângulo equilátero, Gauss desenvolveu a seguinte formula:




























































Classe Principal
















Resultado


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

segunda-feira, 11 de julho de 2016

Jogo de acertar o numero sorteado usando manipulação de arquivo em c

faça um programa que sorteie 1 numero entre 0 e 150. peça para o usuário tentar adivinhar o numero sorteado. 
O sistema deverá dar dicas para o usuário, dizendo se o numero sorteado é maior ou menor que o informado pelo usuário.
o programa só irá parar de repetir quando o usuário acertar o numero. no final, mostrar quantas chances o usuário precisou para 
acertar o numero e exiba uma das seguintes mensagens:
  1 a 5 "QUE SORTE! VOCÊ ACERTOU RÁPIDO."
  6 a 10" PARABÉNS VOCÊ FOI BEM, ACERTOU EM X TENTATIVAS."
  ACEIMA DE 10 "VOCÊ PODERIA TER IDO MELHOR"

  MAX PONTUAÇÃO -> 100
  A CADA JOGADA PERDE 1 PONTO
  SE ZERAR, ACABA O JOGO

  MENU 1 NOVO JOGO
  2 - RANKING ->20 MELHORES
  3 - SAIR


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<malloc.h>

struct Jogador{
char nome[30];
int pontuacao;
};

typedef struct Jogador Jog;

struct Arvore{
Jog j;
struct Arvore *left, *right;
};

typedef struct Arvore Arv;

int menu();
Jog jogar();
Arv *criaArvore();
Arv *criaNoh(Arv *arvore, Jog j);
int vazia(Arv *a);
void imprimir(Arv *a);
void ordem(Arv *a, FILE *arq);
Arv *carregar();


int menu(){
int opc;

do{
system("cls");
printf("\tMENU\n\n1-NOVO JOGO\n2-RANKING\n0-SAIR");
scanf("%d",&opc);
getchar();
if(opc<0 || opc>2){
printf("\n\n\tERRO");
getchar();
}
}while(opc<0 || opc>2);

return opc;
}

Jog jogar(){
Jog j;
int num, chute;
system("cls");
printf("NOME DO JOGADOR: ");
gets(j.nome);

j.pontuacao = 100;
srand(time(NULL));
num = rand()%151;

do{
system("cls");
printf("QUAL FOI O NUMERO SORTEADO ?[%d]->",num);
scanf("%d",&chute);
getchar();

if(chute != num){
printf("\n\n\tERROUUUUUUUUUUU!!");
j.pontuacao--;
}else{
printf("\n\n\n\tARCERTOU !!!!\n");
}
getchar();
}while(num !=chute && j.pontuacao >0);

if(j.pontuacao == 0){
printf("\n\n\nVOCE PERDEU");
}

printf("\n\n\tSua pontuacao foi :%d ponto(s)",j.pontuacao);
getchar();

return j;
}

Arv *criaArvore(){
return NULL;
}

Arv *criaNoh(Arv *arvore, Jog j){
Arv *aTemp;

if(arvore == NULL){
aTemp = (Arv *)malloc(sizeof(Arv));
aTemp->j = j;
aTemp->left = criaArvore();
aTemp->right = criaArvore();
return aTemp;
}else{
int dir = 0;
aTemp = arvore;
Arv *pai, *raiz = arvore;

while(!vazia(aTemp)){
if(j.pontuacao<= aTemp->j.pontuacao){
pai = aTemp;
aTemp = aTemp->left;
dir = 0;
}else{
pai = aTemp;
aTemp = aTemp->right;
dir = 1;
}
}

aTemp = (Arv *)malloc(sizeof(Arv));
aTemp->j = j;

aTemp->left = criaArvore();
aTemp->right = criaArvore();

if(dir)
pai->right = aTemp;
else
pai->left = aTemp;

return raiz;
}
}

int vazia(Arv *a){
return a == NULL;
}

void imprimir(Arv *a){
if(a->right != NULL)
imprimir(a->right);

printf("Nome: %s | Pontuacao: %d", a->j.nome,a->j.pontuacao);

if(a->left != NULL)
printf("\n\t ESQ ->Nome: %s | Pontuacao: %d", a->left->j.nome,a->left->j.pontuacao);
else
printf("\n\nESQ: NULL");

if(a->right != NULL)
printf("\n\tDIR ->Nome: %s | Pontuacao: %d\n\n",a->right->j.nome,a->right->j.pontuacao);
else
printf("\n\tDIR: NULL\n\n");

if(a->left != NULL)
imprimir(a->left);
}

void ordem(Arv *a, FILE *arq){
fwrite(&a->j, sizeof(Jog), 1, arq);

if(a->left != NULL)
ordem(a->left, arq);
}

Arv *carregar(){
Arv *a = criaArvore();
FILE *arq = fopen("ranking.bin", "rb");

if(arq){
Jog j;

while(!feof(arq)){
if(fread(&j, sizeof(Jog), 1, arq)){
a = criaNoh(a, j);
}
}
fclose(arq);
return a;
}else{
return NULL;
}
}

int main(){
Arv *a = criaArvore();
int opc;
Jog jogador;

a = carregar();

do{
opc = menu();

switch(opc){
case 1:{
jogador = jogar();

a = criaNoh(a, jogador);
break;
}
case 2:{
if(!vazia(a))
imprimir(a);
else
printf("\n\tARVORE VAZIA");
printf("\n\n");
getchar();
break;
}
case 0:{
if(a != NULL){
FILE *arq = fopen("ranking.bin", "wb");

ordem(a, arq);
fclose(arq);
}
break;
}
default:{
printf("ERRO!!!\n\n");
break;
}
}

}while(opc !=0);

return 0;
}

Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Sistema de controle de alunos usando arvore binaria em c

Sistema de controle de alunos usando arvore binaria em c.

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define VAZIA "\n\n\tARVORE VAZIA!\n\n"

struct Aluno{
char nome[60];
float media;
};
struct ARVORE{
struct Aluno aluno;
struct ARVORE *left, *right;
};

typedef struct ARVORE ARV;

int menu();
ARV *criaArvore();
ARV *criaNoAluno(ARV *arvore);
ARV *insereAluno();
int vazia();
void preOrdem(ARV *a);
void ordem(ARV *a);
void posOrdem(ARV *a);

int main(){
int op;
ARV *a = criaArvore();
do{
op = menu();
switch(op){
case 1:{
a = criaNoAluno(a);
break;
}
case 2:{
if(!vazia(a)){
preOrdem(a);
}else
printf(VAZIA);
getchar();

break;
}
case 3:{
if(!vazia(a)){
ordem(a);
}else
printf(VAZIA);
getchar();
break;
}

case 4:{
if(!vazia(a)){
posOrdem(a);
}else
printf(VAZIA);
getchar();
break;
}
case 0:break;
}
}while(op!=0);

return 0;
}

int menu(){
int opc;
do{
system("cls");
printf("1-INSERIR ALUNO\n2-EXIBIR PRE-ORDEM\n3-ORDEM\n4-POS-ORDEM\n0-SAIR");
scanf("%d",&opc);
getchar();
if(opc<0 || opc >4){
printf("OPCAO INVALIDA!");
getchar();
}
}while(opc<0 || opc >4);
}


ARV *criaArvore(){
return NULL;
}

ARV *criaNoAluno(ARV *arvore){
ARV *atemp;
ARV *a;

if(arvore == NULL){
atemp = (ARV*)malloc(sizeof(ARV));
atemp = insereAluno();
atemp->left = criaArvore();
atemp->right = criaArvore();
return atemp;
}else{
int dir = 0;
atemp = arvore;
ARV *pai, *raiz = arvore;
a = (ARV*)malloc(sizeof(ARV));
a = insereAluno();
while(atemp != NULL){
pai =atemp;
if(a->aluno.media <= atemp->aluno.media ){
dir = 0;
atemp = atemp->left;
}else{
dir = 1;
atemp = atemp->right;
}
}

atemp = (ARV*)malloc(sizeof(ARV));
atemp = a;
atemp->left = criaArvore();
atemp->right = criaArvore();
if(dir)
pai->right = atemp;
else
pai->left = atemp;

return raiz;
}
}

ARV *insereAluno(){
ARV *a = (ARV*)malloc(sizeof(ARV));

printf("INFORME O NOME DO ALUNO: ");
gets(a->aluno.nome);
printf("INFORME A MEDIA DO ALUNO: ");
scanf("%f",&a->aluno.media);
getchar();
return a;
}

int vazia(ARV *a){
return a == NULL;
}

void preOrdem(ARV *a){
printf("%.1f",a->aluno.media);

if(a->left != NULL){
printf("->");
preOrdem(a->left);
}
if(a->right !=NULL){
printf("->");
preOrdem(a->right);
}
}
void ordem(ARV *a){
if(!vazia(a->left)){
ordem(a->left);
}

printf("%.1f ->",a->aluno.media);
if(!vazia(a->right)){
ordem(a->right);
}
}
void posOrdem(ARV *a){
if(!vazia(a->left)){
posOrdem(a->left);
}
if(!vazia(a->right)){
posOrdem(a->right);
}
printf("%1.f ->",a->aluno.media);
}


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Arvore binaria em c

Estrutura básica de como funciona uma arvore binaria alocado dinamicamente em c.

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

struct ARVORE{
       int valor;
       struct ARVORE *left, *right;
};

typedef struct ARVORE ARV;
ARV *criaArvore();
ARV *criaNoh(ARV *arvore, int v);
int vazia();
void imprimir(ARV *a);
void preOrdem(ARV *a);
void ordem(ARV *a);
void posOrdem(ARV *a);

int main(){
    ARV *a = criaArvore();
    int opc, valor;
    do{
        printf("1-Inserir novo noh\n"
               "2-imprimir\n3-Pre-Ordem"
               "\n4-Ordem\n5-Pos-ordem\n"
               "0-sair\n");
        scanf("%d",&opc);
        switch(opc){
          case 1:
               printf("informe um valor: ");
               scanf("%d",&valor);
               a = criaNoh(a, valor);
          break;
          case 2:
               if(!vazia(a))
                 imprimir(a);
               else
                 printf("AROVORE VAZIA\n");
          break;
          case 3:
               if(!vazia(a))
                 preOrdem(a);
               else
                 printf("AROVORE VAZIA\n");
                 printf("\n\n");
          break;
          case 4:
               if(!vazia(a))
                 ordem(a);
               else
                 printf("AROVORE VAZIA\n");
                 printf("\n\n");
          break;
          case 5:
               if(!vazia(a))
                posOrdem(a);
               else
                 printf("AROVORE VAZIA\n");
                 printf("\n\n");
          break;
          case 0: break;
          default: printf("opcao invalida\n");
        }
     getch();
     system("cls");
    }while(opc != 0);
    return 0;
}


ARV *criaArvore(){//maketree
    return NULL;
}

ARV *criaNoh(ARV *arvore, int v){//getnode
    ARV *atemp;
    if(arvore == NULL){
       atemp = (ARV*)malloc(sizeof(ARV));
       atemp ->valor = v;
       atemp->left = criaArvore();
       atemp->right = criaArvore();
       return atemp;
       }
    else{
         int dir = 0;
         atemp = arvore;
         ARV *pai, *raiz = arvore;
         while(atemp != NULL){
           pai = atemp;
           if(v <= atemp->valor){
              dir = 0;
              atemp = atemp->left;
              }
           else{
              dir = 1;
              atemp = atemp->right;
              }
        }
   atemp = (ARV*)malloc(sizeof(ARV));
   atemp->valor = v;
   atemp->left = criaArvore();
   atemp->right = criaArvore();
   if(dir)
     pai->right = atemp;
   else
     pai->left = atemp;
     
         return raiz;
    }
}


int vazia(ARV *a){
    return a == NULL;
}
void imprimir(ARV *a){
     printf("\nPai %d\n",a->valor);
     if(a->left != NULL)
       printf("Esq: %d\t",a->left->valor);
     else
       printf("Esq: NULL\t");
     if(a->right != NULL)
       printf("Dir: %d\t",a->right->valor);
     else
       printf("Dir: NULL\t");
     if(a->left != NULL)
      imprimir(a->left);
     if(a->right != NULL)
       imprimir(a->right);
}
void preOrdem(ARV *a){
printf("%d ",a->valor);

if(a->left != NULL){
printf("-> ");
preOrdem(a->left);
}
if(a->right != NULL){
printf("-> ");
preOrdem(a->right);
}
}
void ordem (ARV *a){
if (!vazia(a->left)){
ordem(a->left);
}

printf("%d -> ", a->valor);

if(!vazia(a->right)){
ordem(a->right);
}
}
void posOrdem(ARV *a){
if(!vazia(a->left)){
posOrdem(a->left);
}
if(!vazia(a->right)){
posOrdem(a->right);
}
printf("%d ->", a->valor);
}


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

Sistema de controle de uma locadora usando arvore binaria em c

Faça um sistema para uma locadora, onde deve-se armazenar as seguintes informações sobre os filmes:
          char titulo[50], diretor[50]
          int anoLancamento
         float precoLocacao
O sistema deve permitir ao usuário fazer as seguintes operações:
    1-Cadastrar filme
    2-Exibir filmes em ordem de cadastro
    3-Exibir filmes em ordem de ano de lançamento
   4-Exibir filmes em ordem de preço de locação
   5-Remover um filme
0-Sair

//bibliotecas padrão
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define T 60
#define ERRO_V "\n\n\tVALOR INVALIDO\n"
#define ERRO_C "\n\n\tNAO HA NADA CADASTRADO\n"
struct FILME{//struct para cadastrar os daddos
char titulo[T], diretor[T];
float preco;
int ano,cod;
struct FILME *ant;
struct FILME *prox;
};
typedef struct FILME F;

struct ARVORE{//1ºArvore para poder ordenar por ano que vai receber os dados das struct FILME
char titulo[T], diretor[T];
float preco;
int ano,cod;
struct ARVORE *left, *right;
};

typedef struct ARVORE ARV;

struct ARVORE2{// 2º ARVORE VAI ORDENAR POR PREÇO 
char titulo[T], diretor[T];
float preco;
int ano,cod;
struct ARVORE2 *left, *right;
};
typedef struct ARVORE2 ARV2;


int menu();// FUNÇÃO MENU PARA ESCOLHER A OPÇÃO DESEJADA
int vazia(ARV *a);// VAI RETORNAR A PRIMAIRA ARVORE VAZIA
int vazia2(ARV2 *a);// VAI RETORNAR A SEGUNDA ARVORE VAZIA
int verificaAno();//VAI VERIFICAR SE O ANO E VALIDO
float verificaPreco();//VAI VERIFICAR SE O PREÇO E VALIDO
ARV *criaArvore();//VAI CRIAR A PRIMEIRA ARVORE
ARV2 *criaArvore2();//VAI CRIAR A SEGUNDA ARVORE
ARV *criaCadastroAno(ARV *a, int cod, char titulo[T],char diretor[T], int ano, float preco);// VAI ORDENAR POR ANO
ARV2 *criaCadastroPreco(ARV2 *a, int cod, char titulo[T], char diretor[T], int ano, float preco);//VAI ORDENAR POR PRECO
F *criaCadastroFilme(F *f, int cod, char titulo[T],char diretor[T], int ano, float preco);// VAI CADASTRAR OS DADOS NUMA LISTA
void ExibiFilmeCadastrado(F *f);//VAI EXIBIR OS FILMES CADASTRADOS
void ExibiAno(ARV *a);// VAI EXIBIR POR ORDEM DOS ANOS CADASTRADOS
void ExibiPreco(ARV2 *a);//VAI EXIBIR POR ORDEM DE PREÇO CADASTRADOS
ARV *procuraNaEsquerda(ARV *a, int cod);//VAI PROCURAR DO LADO ESQUERDO DA ARVORE DA PRIMEIRA ARVORE
ARV2 *procuraNaEsquerda2(ARV2 *a, int cod);//VAI PROCURAR DO LADO ESQUERDO DA SEGUNDA ARVORE
ARV *procuraNaDireita(ARV *a, int cod);// VAI PROCURAR DO LADO DIREITO DA PRIMEIRA ARVORE
ARV2 *procuraNaDireita2(ARV2 *a, int cod);//VAI PROCURAR DO LADO DIREITO DA SEGUNDA ARVORE
F *procuraFilmeCadastrado(F *f, int cod);// VAI PROCURAR OS FILMES CADASTRADOS
void removerFilmeCadastrado(F *f, int cod);// VAI REMOVER O FILME CADASTRADO PASSANDO O COD FORNECIDO PELO USUARIO DA LISTA
ARV *removerCadastroPorAno(ARV *a, int ano);// VAI REMOVER O FILME CADASTRADO DA ARVORE ORDENADO POR ANO
ARV2 *removerCadastroPorPreco(ARV2 *a, float preco);//VAI REMOVER O FILME CADASTRADO DA ARVORE ORDENADO POR PREÇO

int main(){
F *f = NULL;// VAI CRIAR UMA LISTA PARA CADASTRAR OS DADOS
ARV *ANO = criaArvore();//CRIAR UMA ARVORE PARA ORDENAR POR ANO
ARV2 *PRECO = criaArvore2(); //VAI CRIAR UMA ARVORE PARA ORDENAR POR PREÇO
ARV *a1;//ARVORE AUXILIAR
ARV2 *a2;//ARVORE AUXILIAR
int op, ano, cod=1, anoaux, id2;
float precoaux;;
char titulo[T], diretor[T];
float preco;

do{
op = menu();
system("cls");
switch(op){
case 1:{//VAI CADASTRAR OS DADOS
printf("INFORME O TITULO DO FILME: ");
gets(titulo);
printf("INFORME O DIRETOR DO FILME: ");
gets(diretor);
ano = verificaAno();
preco = verificaPreco();
f = criaCadastroFilme(f, cod, titulo,diretor, ano, preco);//VAI QUARDAR NUMA LISTA
ANO = criaCadastroAno(ANO, cod, titulo,diretor, ano, preco);//VAI ORDENAR NA ARVORE POR ANO
PRECO = criaCadastroPreco(PRECO, cod, titulo,diretor, ano, preco);//VAI ORDENAR NA ARVORE POR PRECO
cod = cod + 1;//VAI INCLEMANTAR O CODIGO POR 1
system("cls");
getchar();
printf("\n\n\tCADASTRO REALIZADO COM SUCESSO!");
break;
}
case 2:{// VAI EXIBIR OS FILMES CADASTRADOS POR SEGUENCIA DE CADASTRO
if(f != NULL){//SE A LISTA NÃO ESTIVER FAZIA MOSTRA
ExibiFilmeCadastrado(f);
}else //SE NÃO MOSTRA QUE NÃO HÁ CADASTRO
printf(ERRO_C);
getchar();
break;
}
case 3:{//VAI EXIBIR POR ORDEM DE ANO CADASTRADO DO MENOR POR MAIOR
if(!vazia(ANO))
ExibiAno(ANO);
else
printf(ERRO_C);
getchar();
break;
}
case 4:{//VAI EXIBIR POR ORDEM DE PREÇO DO MENOR AO MAIOR
if(!vazia2(PRECO))
ExibiPreco(PRECO);
else
printf(ERRO_C);

getchar();
break;
}
case 5:{//VAI EXCLUIR UM CADASTRO INFORMANDO O CODIGO 
if(f !=NULL){// SE A LISTA NÃO ESTIVER VAZIA
ExibiFilmeCadastrado(f);//VAI EXIBIR OS FILMES CADASTRADOS PARA PODER ESCOLHER O CODIGO
printf("INFORME O CODIGO PARA EXCLUIR: ");
scanf("%d", &id2);
getchar();
a1 = procuraNaEsquerda(ANO, id2);//VAI PROCURAR O CODIGO NO LADO ESQUERDO DA ARVORE ORDENADA POR ANO
if(a1 == NULL){//SE A1 RETORNAR NULO VAI PARA O LADO DIREITO
a1 = procuraNaDireita(ANO, id2);
}
a2 = procuraNaEsquerda2(PRECO, id2);//VAI FAZER A MESMA COISA PARA ARVORE ORDENADA POR PRECO
if(a2 == NULL){
a2 = procuraNaDireita2(PRECO, id2);
}
if(a1 != NULL){//SE A1 NÃO FOR NULO ELE ENCONTROU O CODIGO E VAI EXCLUIR
system("cls");
printf("CADASTRO EXCLUIDO COM SUCESSO\n");
printf("COD:%d\nTITULO: %s\nDIRETOR: %s\nANO = %d\nPRECO = R$%.2f\n\n", a1->cod ,a1->titulo, a1->diretor, a1->ano, a1->preco);
getchar();
anoaux = a1->ano;
precoaux = a2->preco;
ANO = removerCadastroPorAno(ANO, anoaux);//EXCLUIR DA MEMORIA DA ARVORE DO ANO
PRECO = removerCadastroPorPreco(PRECO, precoaux);//EXCLUIR DA MEMORIA DA ARVORE PRECO
removerFilmeCadastrado(f, id2);//REMOVE DA LISTA DOS FILMES
}
else{
printf(ERRO_C);//SE NÃO ENCONTRAR EXIBI UMA MENSAGEM
getchar();
}
}
else {//NÃO HÁ CADASTRO
printf(ERRO_C);
getchar();;
}
break;
}
case 0: break;// SAIR DO MENU FECHANDO O PROGRAMA
getchar(); 
break;
}
getchar();
}while(op != 0);
return 0;
}


int menu(){//menu para escolher a opção 
int op;
do{
system("cls");
printf("------------------------BEM VINDO AO SIS - LOCADORA-----------------------------\n");
printf("1-CADASTRAR\n2-EXIBIR POR ORDEM DE CADASTRO\n3-EXIBIR POR ANO \n4-EXIBIR POR PRECO\n5-REMOVER CADASTRO\n0-SAIR\n");
scanf("%d", &op);
if(op<0 || op >5){
printf("OPCAO INVALIDA");
getchar();
}
getchar();

}while(op<0 || op >5);

return op;
}

ARV *criaArvore(){//criar a arvore 1
return NULL; 
}
ARV2 *criaArvore2(){//criar arvore 2
return NULL; 
}
F *criaCadastroFilme(F *f, int cod, char titulo[T],char diretor[T], int ano, float preco){//criar uma lista de cadastro
F *nTemp = (F *)malloc(sizeof(F));
strcpy(nTemp->titulo, titulo);
nTemp->cod = cod; 
strcpy(nTemp->diretor, diretor);
nTemp->ano = ano;
nTemp->preco = preco;
nTemp->ant = NULL; 
nTemp->prox = f;
if(f != NULL){
f->ant = nTemp;

return nTemp;
}

ARV *criaCadastroAno(ARV *a, int cod, char titulo[T],char diretor[T], int ano, float preco){//CADASTRA UMA ARVORE QUE ORDENA POR ANO
ARV *aTemp; 
if(a == NULL)
aTemp = (ARV *)malloc(sizeof(ARV));
strcpy(aTemp->titulo, titulo);
aTemp->cod = cod;
strcpy(aTemp->diretor, diretor);
aTemp->ano = ano;
aTemp->preco = preco;
aTemp->left = criaArvore();
aTemp->right = criaArvore();
return aTemp; 
}else{
int dir = 0;
aTemp = a;
ARV *pai, *raiz = a;
while(!vazia(aTemp)){
if(ano<= aTemp->ano){
pai = aTemp;
aTemp = aTemp->left;
dir = 0;
}else{
pai=aTemp; 
aTemp = aTemp->right;
dir = 1;
}
}
aTemp = (ARV *)malloc(sizeof(ARV));
strcpy(aTemp->diretor, diretor);
aTemp->cod = cod;
strcpy(aTemp->titulo, titulo);
aTemp->ano = ano;
aTemp->preco = preco;
aTemp->left = criaArvore();
aTemp->right = criaArvore();

if(dir)
pai->right = aTemp;
else
pai->left = aTemp;
return raiz;
}
}

ARV2 *criaCadastroPreco(ARV2 *a, int cod, char titulo[T],char diretor[T], int ano, float preco){//CADASTRA UMA ARVORE QUE VAI ORDENA POR PREÇO
ARV2 *aTemp; 
if(a == NULL){ 
aTemp = (ARV2 *)malloc(sizeof(ARV2));
strcpy(aTemp->titulo, titulo);
aTemp->cod = cod;
strcpy(aTemp->diretor, diretor);
aTemp->ano = ano;
aTemp->preco = preco;
aTemp->left = criaArvore2();
aTemp->right = criaArvore2();
return aTemp; 
}else{
int dir = 0;
aTemp = a;
ARV2 *pai, *raiz = a;
while(!vazia2(aTemp)){
if(preco<= aTemp->preco){
pai = aTemp;
aTemp = aTemp->left;
dir = 0;
}else{
pai=aTemp; 
aTemp = aTemp->right;
dir = 1;
}
}
aTemp = (ARV2 *)malloc(sizeof(ARV2));
strcpy(aTemp->diretor, diretor);
aTemp->cod = cod;
strcpy(aTemp->titulo, titulo);
aTemp->ano = ano;
aTemp->preco = preco;
aTemp->left = criaArvore2();
aTemp->right = criaArvore2();
if(dir)
pai->right = aTemp;
else
pai->left = aTemp;
return raiz;
}
}

int vazia(ARV *a){//VERIFICAR A PRIMEIRA ARVORE ESTÁ VAZIA
return a==NULL;
}

int vazia2(ARV2 *a){//VERIFICAR SE A SEGUNDA ARVORE ESTÁ VAZIA
return a==NULL;
}

void ExibiFilmeCadastrado(F *f){//EXIBIR OS FILMES POR ORDEM DE CADASTRO
F *temp = f;
while(temp->prox != NULL){
temp = temp->prox;
}
while(temp != NULL) {
printf("COD:%d\nTITULO: %s\nDIRETOR: %s\nANO = %d\nPRECO = R$%.2f\n\n", temp->cod ,temp->titulo, temp->diretor, temp->ano, temp->preco);
temp = temp->ant;
}

}

void ExibiPreco(ARV2 *a){ //EXIBIR OS FILMES CADASTRADOS POR PREÇO
if(a->left != NULL) {
ExibiPreco(a->left);
}
printf("COD:%d\nTITULO: %s\nDIRETOR: %s\nANO = %d\nPRECO = R$%.2f\n\n", a->cod ,a->titulo, a->diretor, a->ano, a->preco);

if(a->right != NULL){
ExibiPreco(a->right);
}
}

void ExibiAno(ARV *a){//EXIBIR OS FILMES POR ORDEM DE ANO
if(a->left != NULL) {
ExibiAno(a->left);
}
printf("COD:%d\nTITULO: %s\nDIRETOR: %s\nANO = %d\nPRECO = R$%.2f\n\n", a->cod ,a->titulo, a->diretor, a->ano, a->preco);
if(a->right != NULL){
ExibiAno(a->right);
}
}

ARV *procuraNaEsquerda(ARV *a, int cod){//VAI PROCURAR NO LADO ESQUERDO DA ARVORE ORDENADO POR ANO
ARV *p;
p = NULL;
while(a != NULL){
if((a->cod) == cod) {
p = a;
break;
}
a = a->left;
}
return p;
}

ARV *procuraNaDireita(ARV *a, int cod){//VAI PROCURAR NO LADO DIREITO DA ARVORE ORDENADO POR ANO
ARV *p;
p = NULL;
while(a != NULL){
if((a->cod) == cod) {
p = a;
break;
}
a = a->right;
}
return p;
}


ARV2 *procuraNaEsquerda2(ARV2 *a, int cod){//VAI PROCURAR DO LADO ESQUERDO DA ARVORE ORDENADO POR PREÇO
ARV2 *p;
p = NULL;
while(a != NULL){
if((a->cod) == cod){
p = a;
break;
}
a = a->left;
}
return p;
}


ARV2 *procuraNaDireita2(ARV2 *a, int cod){//VAI PROCURAR DO LADO DIREITO DA ARVORE ORDENADO POR PREÇO
ARV2 *p;
p = NULL;
while(a != NULL) {
if((a->cod) == cod){
p = a;
break;
}
a = a->right;
}
return p;
}


F *procuraFilmeCadastrado(F *f, int cod){//VAI PROCURAR OS FILMES CADASTRADOS NA LISTA

F *p; 
p = NULL;
while(f != NULL){
if((f->cod) == cod){
p = f;
break;
}
f = f->prox;
}
return p;
}

void removerFilmeCadastrado(F *f, int cod){// VAI REMOVER OS FILMES CADASTRADOS NA LISTA
F *nTemp;
nTemp = procuraFilmeCadastrado(f, cod);

if(nTemp != NULL){
if(nTemp->prox != NULL)
{
nTemp->prox->ant = nTemp->ant;
}
if(nTemp->ant != NULL){
nTemp->ant->prox = nTemp->prox;
}
else{
f = nTemp->prox;
}
free(nTemp);
}
}


ARV *removerCadastroPorAno(ARV *a, int ano){//VAI REMOVER OS CADASTROS DA ARVORE ORDENADO POR ANO
if(a == NULL)
return NULL;
else if(a->ano > ano)
a->left = removerCadastroPorAno(a->left, ano);

else if(a->ano < ano)
a->right = removerCadastroPorAno(a->right, ano);

else {
if(a->left == NULL && a->right == NULL) {
free(a);
a = NULL;
}
else if(a->left == NULL){
ARV *temp = a;
a = a->right;
free(temp);
}
else if(a->right == NULL){
ARV *temp = a;
a = a->left;
free(temp);
}
else {
ARV *atemp = a->left;
while(atemp->right != NULL) {
atemp = atemp->right;
}
a->ano = atemp->ano;
atemp->ano = ano;
a->left = removerCadastroPorAno(a->left, ano);
}
}
return a;
}

ARV2 *removerCadastroPorPreco(ARV2 *a, float preco){//VAI REMOVER OS CADASTROS DOS FILMES DA ARVORE ORDENADO POR PREÇO
if(a == NULL)
return NULL;
else if(a->preco > preco)
a->left = removerCadastroPorPreco(a->left, preco);

else if(a->preco < preco)
a->right = removerCadastroPorPreco(a->right, preco);

else {
if(a->left == NULL && a->right == NULL){
free(a);
a = NULL;
}
else if(a->left == NULL){
ARV2 *temp = a;
a = a->right;
free(temp);
}
else if(a->right == NULL){
ARV2 *temp = a;
a = a->left;
free(temp);
}
else {
ARV2 *atemp = a->left;
while(atemp->right != NULL) {
atemp = atemp->right;
}
a->preco = atemp->preco;
atemp->preco = preco;
a->left = removerCadastroPorPreco(a->left, preco);
}
}
return a;
}
int verificaAno(){//VAI VERIFICAR POR ANO VALIDO
int ano;
do{
printf("INFORME O ANO DE LANCAMENTO: ");
scanf("%d",&ano);
if(ano<=0 || ano >2016){
printf(ERRO_V);
getchar();
}

}while(ano<=0 || ano >2016);
return ano;
}
float verificaPreco(){// VAI VERIFICAR SE O PREÇO E VALIDO
float preco;
do{
printf("INFORME O PRECO DO FILME: ");
scanf("%f",&preco);
if(preco<=0){
printf(ERRO_V);
getchar();
}

}while(preco<=0);
return preco;
}


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com