Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
VivianMachado0 authored Jan 17, 2023
1 parent fdeec0f commit f0ca440
Show file tree
Hide file tree
Showing 4 changed files with 230 additions and 0 deletions.
44 changes: 44 additions & 0 deletions Pilha com Arranjo/exercícios/Pilha.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#include <iostream>
#include "Pilha.hpp"

using namespace std;

void FazPilhaVazia(TipoPilha *pilha) {
pilha->topo = 0;
}

bool VerificaPilhaVazia(TipoPilha *pilha) {
if (pilha->topo == 0) {
return true;
} else return false;
}

void Empilha(TipoPilha *pilha, TipoItem item) {
if (pilha->topo == MAXTAM) {
cout << "\nPilha cheia\n";
} else {
pilha->itens[pilha->topo] = item;
pilha->topo++;
//cout << "\nItem empilhado com sucesso!\n";
}
}

void ExibePilha(TipoPilha *pilha) {
for (int i=pilha->topo-1; i>=0; i--) {
cout << pilha->itens[i].letra << "\n";
}
}

void Desempilha(TipoPilha *pilha, TipoItem *item) {
if (VerificaPilhaVazia(pilha)) {
cout << "\nPilha vazia.\n";
return;
}

pilha->topo--;
*item = pilha->itens[pilha->topo];
}

int Tamanho(TipoPilha *pilha) {
return pilha->topo;
}
22 changes: 22 additions & 0 deletions Pilha com Arranjo/exercícios/Pilha.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#ifndef PILHA_H
#define PILHA_H

#define MAXTAM 5

typedef struct TipoItem {
char letra;
} TipoItem;

typedef struct Pilha {
TipoItem itens[MAXTAM];
int topo;
} TipoPilha;

void FazPilhaVazia(TipoPilha *pilha);
bool VerificaPilhaVazia(TipoPilha *pilha);
void Empilha(TipoPilha *pilha, TipoItem item);
void Desempilha(TipoPilha *pilha, TipoItem *item);
void ExibePilha(TipoPilha *pilha);
int Tamanho(TipoPilha *pilha);

#endif
118 changes: 118 additions & 0 deletions Pilha com Arranjo/exercícios/TPilha.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
#include <iostream>
#include <windows.h>

#define MAXTAM 10

using namespace std;

typedef struct {
int Item[MAXTAM]; // i: 0, 1, 2, 3... 8, 9
int Topo;
} TPilha;

/* Funções básicas de verificação:
[x] Inicializar a pilha: necessária para criação da struct TPilha
[x] Verificar se a Pilha está Vazia: necessária ao Desempilhar um Item[i]
[x] Verificar se a Pilha está Cheia: necessária ao Empilhar um novo Item[i]
*/

void TPilha_Inicializa(TPilha *p) {
p->Topo = -1; // Indica que a pilha está inicializada e vazia
}

int TPilha_Vazia(TPilha *p) {
if (p->Topo == -1) {
return 1; // Retorno verdadeiro, a pilha está vazia
} else {
return 0; // Retorno falso, a pilha não está vazia
}
}

int TPilha_Cheia(TPilha *p) {
if (p->Topo == MAXTAM-1) {
return 1; // Retorno verdadeiro, a pilha está cheia: 0 a 9 preenchidos
} else {
return 0; // Retorno falso, a pilha não está cheia
}
}

/* Funções básicas de manipulação:
[x] Empilhar um item no topo da pilha: necessário verificar se há espaço
[x] Desempilhar um item do topo da pilha: necessário verificar se há item na pilha
*/

void TPilha_Empilha(TPilha *p, int x) {
if (TPilha_Cheia(p) == 1) {
cout << "\nPilha cheia\n";
} else {
p->Topo++;
p->Item[p->Topo] = x;
cout << "Valor empilhado: " << x << endl;
}
}

int TPilha_Desempilha(TPilha *p) {
int aux; // Receber o valor da pilha que será desempilhado
if (TPilha_Vazia(p) == 1) {
cout << "\nImpossível desempilhar. Pilha vazia\n";
} else {
aux = p->Item[p->Topo];
p->Topo--;
return aux;
}
}

/* Funções complementares:
[x] Imprimir a pilha
[x] Tamanho da pilha
*/

void TPilha_Imprime(TPilha *p) {
if (TPilha_Vazia(p) == 1) {
cout << "\nPilha vazia\n";
return;
}
for (int i = p->Topo; i >= 0; i--) {
if (i == p->Topo) {
cout << "\nTopo -> " << p->Item[i] << "\n";
} else {
cout << "\t " << p->Item[i] << "\n";
}
}
}

int TPilha_Tamanho(TPilha *p) {
return p->Topo+1;
}

int main() {
UINT CPAGE_UTF8 = 65001;
UINT CPAGE_DEFAULT = GetConsoleOutputCP();
SetConsoleOutputCP(CPAGE_UTF8);
system("cls");

TPilha p;
int aux, tam;

TPilha_Inicializa(&p);

TPilha_Empilha(&p, 5);
TPilha_Empilha(&p, 7);
TPilha_Empilha(&p, 11);

/*aux = TPilha_Desempilha(&p);
cout << "\nValor desempilhado: " << aux << endl;
aux = TPilha_Desempilha(&p);
cout << "Valor desempilhado: " << aux << endl;
aux = TPilha_Desempilha(&p);
cout << "Valor desempilhado: " << aux << endl;*/

TPilha_Imprime(&p);

tam = TPilha_Tamanho(&p);
cout << "\nTamanho da Pilha: " << tam << endl;

return 0;
}
46 changes: 46 additions & 0 deletions Pilha com Arranjo/exercícios/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#include <iostream>
#include <windows.h>
#include "Pilha.hpp"
#include "Pilha.cpp"

#define MAXTAM 10

using namespace std;

int main()
{
UINT CPAGE_UTF8 = 65001;
UINT CPAGE_DEFAULT = GetConsoleOutputCP();
SetConsoleOutputCP(CPAGE_UTF8);
system("cls");

TipoPilha p, q;
int tam;

FazPilhaVazia(&p);
FazPilhaVazia(&q);

Empilha(&p, 'R');
Empilha(&p, 'O');
Empilha(&p, 'M');
Empilha(&p, 'A');

ExibePilha(&p);

tam = Tamanho(&p);
cout << "\nTamanho da Pilha p: " << tam << endl
<< endl;

for (int i = 0; i < tam; i++)
{
char aux = Desempilha(&p);
Empilha(&q, aux);
}

ExibePilha(&q);

tam = Tamanho(&q);
cout << "\nTamanho da Pilha q: " << tam << endl;

return 0;
}

0 comments on commit f0ca440

Please sign in to comment.