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.
Pergunta
BrunaGrassi
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
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.