Skip to content

Instantly share code, notes, and snippets.

@werbet
Created May 16, 2016 21:53
Show Gist options
  • Save werbet/a42c2b97fc411dfc29ee3fc810ba9375 to your computer and use it in GitHub Desktop.
Save werbet/a42c2b97fc411dfc29ee3fc810ba9375 to your computer and use it in GitHub Desktop.
Listas de objetos
#include <iostream>
#include <stdio.h>
using namespace std;
class Funcionario
{
private:
int matricula;
char* cpf;
char* nome;
public:
Funcionario(int matricula, char* cpf, char* nome)
{
this->matricula = matricula;
this->cpf = cpf;
this->nome = nome;
}
int getMatricula()
{
return matricula;
}
void setMatricula(int mat)
{
this->matricula = mat;
}
void imprimir()
{
printf("%s tem matricula %d e cpf %s\n", nome, matricula, cpf);
}
};
class No
{
private:
Funcionario* valor;
No* proximo;
public:
No()
{
this->valor = NULL;
this->proximo = NULL;
}
No(Funcionario* valor)
{
this->valor = valor;
this->proximo = NULL;
}
void imprimir()
{
this->valor->imprimir();
}
void setValor(Funcionario* valor)
{
this-> valor = valor;
}
Funcionario* getValor()
{
return this->valor;
}
void setProximo(No* proximo)
{
this->proximo = proximo;
}
No* getProximo()
{
return this->proximo;
}
};
class Lista
{
private:
No* primeiro;
public:
Lista()
{
this->primeiro = new No();
}
Lista(Funcionario* valor)
{
this->primeiro = new No(valor);
}
void inserirInicio(Funcionario* valor)
{
No* novo = new No(valor);
novo->setProximo(this->primeiro);
this->primeiro = novo;
}
void imprimir()
{
No* aux;
aux = this->primeiro;
while(aux != NULL)
{
aux->imprimir();
aux = aux->getProximo();
}
}
Funcionario* buscaMatricula(int matricula)
{
No* aux;
aux = this->primeiro;
while(aux != NULL)
{
Funcionario* f = aux->getValor();
int mat = f->getMatricula();
if(mat == matricula)
return f;
aux = aux->getProximo();
}
}
~Lista()
{
No* aux;
aux = this->primeiro;
while(aux != NULL)
{
No* anterior = aux;
aux = aux->getProximo();
//anterior->imprimir();
delete anterior;
}
}
};
class Universidade
{
private:
Lista* funcionarios;
char* nome;
public:
Universidade(char* nome, Funcionario* f)
{
this->nome = nome;
funcionarios = new Lista(f);
}
void contratar(Funcionario* f)
{
funcionarios->inserirInicio(f);
}
Funcionario* buscaFuncionario(int mat)
{
return funcionarios->buscaMatricula(mat);
}
};
class Centro
{
private:
char* nome;
Lista* funcionarios;
public:
Centro(char* nome, Funcionario* f)
{
this->nome = nome;
funcionarios = new Lista(f);
}
void lotar(Funcionario* f)
{
funcionarios->inserirInicio(f);
}
Funcionario* buscaFuncionario(int mat)
{
return funcionarios->buscaMatricula(mat);
}
};
int main()
{
/*Funcionario* eriko = new Funcionario(154, "6378", "Eriko");
Universidade* unifor = new Universidade("UNIFOR", eriko);
Centro* CCT = new Centro("CCT", eriko);
Funcionario* f1 = unifor->buscaFuncionario(154);
Funcionario* f2 = CCT->buscaFuncionario(154);
f1->imprimir();
f2->imprimir();*/
Funcionario* eriko1 = new Funcionario(154, "6378", "Eriko");
Funcionario* eriko2 = new Funcionario(154, "6378", "Eriko");
Funcionario* eriko3 = new Funcionario(154, "6378", "Eriko");
eriko2->setMatricula(777);
eriko1->imprimir();
eriko2->imprimir();
eriko3->imprimir();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment