Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- #include <iomanip>
- using namespace std;
- struct cadastro{ // Inicialização da struct cadastro
- char nome[31];
- long cpf;
- struct cadastro *prox; // Inicialização do ponteiro do tipo da struct cadastro
- };
- void pausa(); // Função de compatibilidade para Linux já que este não possui system('pause'), uma vez que não necessita
- void limpaTela(); // Função de compatibilidade entre o system('clear') no Linux e o system('cls') no Windows
- void cadQnt();
- void cadInserir();
- void cadExibir();
- void cadRemover();
- cadastro *insereFrente(cadastro *ptr, char nomep[31], long cpfp);
- cadastro *lista = NULL, *ini, *aux; int n;
- int main(){
- int op,n,x,f1,f2,f3;
- f1=f2=f3=0;
- float *alunos, soma=0, media;
- do{
- limpaTela();
- cout<<"\n\n~ ~ ~ Alocação dinâmica ~ ~ ~";
- cout<<"\n~ ~";
- cout<<"\n~ 1 - Quantidade de clientes a cadastrar ~";
- cout<<"\n~ 2 - Inserir dados de clientes ~";
- cout<<"\n~ 3 - Exibir ~";
- cout<<"\n~ 4 - Remover ~";
- cout<<"\n~ 5 - Sair ~";
- cout<<"\n~ Opção: ~";
- cout<<"\n~ ~";
- cout<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
- cin>>op;
- cin.get();
- limpaTela();
- switch(op){
- case 1: cadQnt(); // Chamada da função "cadQnt()"
- f1=1;
- break;
- case 2: if(f1==1){
- cadInserir(); // Chamada da função "cadInserir()"
- f2=1;
- }else
- cout<<"\nVocê não determinou a quantidade de clientes\n";
- break;
- case 3: if(f2==1){
- cadExibir(); // Chamada da função "cadExibir()"
- f3=1;
- }else cout<<"\nVocê pulou alguma(s) etapa(s)\n";
- break;
- case 4: if(f3==1){
- cadRemover(); // Chamada da função "cadRemover()"
- }else cout<<"\nVocê pulou alguma(s) etapa(s)\n";
- break;
- case 5: cout<<"\nFim da alocação dinâmica\n";
- // Liberando
- delete lista; lista=0;
- break;
- default:cout<<"\nOpção Inválida\n";
- }
- cout<<"\n\n";
- pausa();
- }while(op!=5);
- return 0;
- }
- void cadQnt(){
- cout<<"\nEntre com a quantidade de clientes para cadastrar: ";cin>>n;cin.get();
- }
- // Inserir clientes na lista
- void cadInserir(){
- char nomep[31]; long cpfp;
- for(int i=0; i<n; i++){
- cout<<"\n\nDigite o nome: "; cin.getline(nomep,31); // Armazena o conteúdo na var "nomep"
- cout<<"\nDigite o CPF: "; cin>>cpfp; // Armazena o conteúdo na var "cpfp"
- cin.get(); // Limpa o buffer do teclado
- lista = insereFrente(lista, nomep, cpfp); // Passagem dos valores para a função "insereFrente" responsável pela adição de ponteiros
- }
- }
- // Função / ponteiro "insereFrente"
- cadastro *insereFrente(cadastro *ptr, char nomep[31], long cpfp){
- cadastro *temp = new cadastro; // Declaração do novo ponteiro "temp" de tipo nodo
- strcpy(temp->nome, nomep); // Copia o conteúdo da var "nomep" para o membro "nome" do ponteiro "temp"
- temp->cpf=cpfp; // Copia o conteúdo da var "cpfp" para o membro "cpf" do ponteiro "temp"
- temp->prox=ptr; // Instancia o membro "prox" do ponteiro "temp" com o conteúdo que veio pelo parâmetro "ptr"
- lista = temp; // Copia o conteúdo do ponteiro "temp" para o ponteiro lista
- ini=lista; // Guarda o início (Copia o conteúdo do ponteiro "lista" para o ponteiro "ini")
- return temp; // Retorna o ponteiro "temp"
- }
- // Exibir a lista de clientes --Contribuição do usuário Tiago Gomes da versão em português da StackOverflow
- void cadExibir(){
- cout<<"\n\nLista de clientes:\n";
- cout<<"Nome"<<setw(19)<<"CPF";
- while(lista){
- int formt = 31-strlen(lista->nome); // seta o tamanho a ser usado no "setw" abaixo
- cout<<"\n"<<lista->nome<<setw(formt)<<lista->cpf; // exibe os membros do ponteiro
- lista=lista->prox; // passa para a próxima lista
- }
- }
- Tiago Gomes
- // Função pausa Windows/Linux
- void pausa(){
- #ifdef WIN32
- system("pause");
- #else
- system("read -p \"Pressione enter para continuar\" saindo");
- #endif // WIN32
- }
- // Função limpaTela Windows/Linux
- void limpaTela(){
- #ifdef WIN32
- system("cls");
- #else
- system("clear");
- #endif // WIN32
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement