Ir para conteúdo
Fórum Script Brasil
  • 0

Pilha com vetor C++ - Iniciante


BrunaGrassi

Pergunta

Boa noite,

Estou com dificuldades em fazer uma pilha em C++, pois só conhecia Java. Se puderem me ajudar, agradeço desde já.

A proposta do exercício é criar uma pilha alocada dinamicamente. Tem os métodos empilha, desempilha, topo (verificar o valor), getPosTopo, limparPilha e pilhaCheia. Tem que ser genérica.

Os erros que não consegui solucionar foram: 

Streams are highly discouraged. [readability/streams] [3] na linha do #include<iostream>; 

error: ‘_’ was not declared in this scope * _it = _&pontVetor[0]; na última linha do construtor Pilha() * _it = _&pontVetor[0];

#include<iostream>
template<typename T>
class Pilha {
 private:
    int _tam;
    int _valorTopo;
    int _posiTopo;
    int * _pontVetor;
    int * _it;

 public:
    Pilha() {
        _tam = 10;
        _valorTopo = -1;
        _posiTopo = -1;
        * _pontVetor = new int[_tam];
        * _it = _&pontVetor[0];
    }
    Pilha<T>(int t) {
        _tam = t;
        _valorTopo = -1;
        _posiTopo = -1;
        * _pontVetor = new int[_tam];
        * _it = _&pontVetor[0];
    }
    void empilha(T dado) {
            if (PilhaCheia() != true) {
                (*_it++) = dado;
                _valorTopo = dado;
                _posiTopo = _posiTopo + 1;
            } else {
                std::cout << "A pilha está cheia." << std::endl;
                throw 20;
            }
    }
    T desempilha() {
        if (PilhaVazia() != true) {
            (*_it--);
            _valorTopo = _&pontVetor[*it];
            _posiTopo = _posiTopo - 1;
            return _valorTopo;
        } else {
            std::cout << "A pilha está vazia." << std::endl;
            throw 21;
        }
    }
    T topo() {
        if (PilhaVazia() == true) {
            std::cout << "A pilha está vazia. Não possui topo." << std::endl;
            throw 22;
        }
        return _valorTopo;
    }
    int getPosTopo() {
        if (PilhaVazia() == true) {
            std::cout << "A pilha está vazia. Não possui topo." << std::endl;
            throw 22;
        }
        return _posiTopo;
    }
    void limparPilha() {
        _posiTopo = -1;
    }
    bool PilhaVazia() {
        return (_posiTopo == -1);
    }
    bool PilhaCheia() {
        return (_posiTopo == (_tam - 1));
    }
}

 

Na realidade tem mais erros ocorrendo, porém o que está me impedindo de prosseguir é o erro do #include.

Desculpem-me se postei em lugar que não deveria, ou se fiz algo de errado, esse é meu primeiro post.

Muito obrigada pela atenção!! :)

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

remova os underscor`s das variaveis, crie um construtor vazio Pilha(){} e outro recebedo como parametro a acapacidade da pilha que é seu t e setando a sua pilha uma instancia de vetor de tamanho t Pilha(int t){ this->pilha = int pilha[t]}

O this nesse caso não é estritamente necessarios, somente se as variaveis tiverem o mesmo nome, ai é importante não esquecer de usar, hehe.

 

class pilha{
 private:
	T * pilha;
	int ponteiro = -1;
 public:
	Pilha<T>(){}
	Pilha(int capacidadePilha){
		this->pilha = new T[capacidadePilha];
	}
}

outra coisa, se você tem uma classe pilha de tipos generico, então você deve ter um vetor tambem de tipo generico, vide código de exemplo.

faça isso e veja se compila!!!

Editado por williamthewill
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...