Jump to content
Sign in to follow this  
Tiago_gad

Função Empilha e Desempilha

 Read 1 minute

Recommended Posts

 Read 1 minute

Boa noite, alguém pode corrigir meu código e me ajudar?
Estou fazendo um código que empilha e depois desempilha reempilhando na ordem contrária, alguém me ajuda aí no que falta, segue p código em questão:

//Bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
//Definindo uma constante com o tamanho exato que comporta o número do meu RA

#define tamanho 8

//Definindo uma estrutura
typedef struct {
    int dados[tamanho];
    int ini;
    int Topo;
} TPilha;

void TPilha_Inicia(TPilha *p) { 
    p->Topo = -1;
    
}
int TPilha_Vazia (TPilha *p) {
    if(p->Topo == -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

int TPilha_Cheia (TPilha *p) {
    if(p->Topo == tamanho -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

void TPilha_Insere (TPilha *p, int x) {
    if(TPilha_Cheia(p) ==1){
        printf("\n Erro: Pilha cheia");
    }
    else
    {
        p->Topo++;
        p->dados[p->Topo] = x;
    }
}

void imprimir(TPilha *p) {
    int i = 0;
    printf("\n\nImprimir:");
    for(i = 0; i < tamanho; i++) {
        printf("%d", p->dados);
    }
    
}

int TPilha_Retira (TPilha *p) {
    int aux;
    if(TPilha_Vazia(p) == 1){
        printf("\n Erro: A Pilha está vazia");
    }
    else
    {
        aux = p->dados[p->Topo];
        p->Topo--;
        return aux;
    }
}

 

 

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "portuguese");
    TPilha *p = (TPilha*)malloc(sizeof(TPilha));
    TPilha_Inicia(p);
    
    TPilha_Insere (p, 1);
    printf("\n Empilhou o 1");
    TPilha_Insere (p, 9);
    printf("\n Empilhou o 9");
    TPilha_Insere (p, 8);
    printf("\n Empilhou o 8");
    TPilha_Insere (p, 1);
    printf("\n Empilhou o 1");
    TPilha_Insere (p, 8);
    printf("\n Empilhou o 8");
    TPilha_Insere (p, 4);
    printf("\n Empilhou o 4");
    TPilha_Insere (p, 4);
    printf("\n Empilhou o 4");
    TPilha_Insere (p, 5);
    printf("\n Empilhou o 5");
    
    void imprimir(TPilha *p) ;
    
    system("\n pause");
    
    int aux;
    
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    
    system(" pause");
    
    return 0;
}

Share this post


Link to post
Share on other sites
 Read less than a minute

1136259128_Exerccio_M(2).jpeg.8140bc7d08e409297c19455a3345dfc5.jpeg18155548_Oqueeufiz.thumb.jpeg.48ff16e2b49f858f670a333d9b63ea1d.jpegNão entendi, poderia explicar melhor por favor, vou enviar 2 fotos em anexo do que pretendo fazer:
A primeira foto é do que pretendo fazer e a segunda é que saiu na execução, pode corrigir para mim?????

Share this post


Link to post
Share on other sites
 Read less than a minute
void imprimir(TPilha *p) ;

Desculpe a pergunta, mas porque vc fez isso dentro da main?

Share this post


Link to post
Share on other sites
 Read less than a minute
//Bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
//Definindo uma constante com o tamanho exato que comporta o número do meu RA

#define tamanho 8

//Definindo uma estrutura
typedef struct {
    int dados[tamanho];
    int ini;
    int Topo;
} TPilha;

void TPilha_Inicia(TPilha *p) { 
    p->Topo = -1;
    
}
int TPilha_Vazia (TPilha *p) {
    if(p->Topo == -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

int TPilha_Cheia (TPilha *p) {
    if(p->Topo == tamanho -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

void TPilha_Insere (TPilha *p, int x) {
    if(TPilha_Cheia(p) ==1){
        printf("\n Erro: Pilha cheia");
    }
    else
    {
        p->Topo++;
        p->dados[p->Topo] = x;
    }
}

void imprimir(TPilha *p) {
    int i = 0;
    printf("\n\nImprimir:");
    for(i = 0; i < tamanho; i++) {
        printf("%d", p->dados);
    }
    
}

int TPilha_Retira (TPilha *p) {
    int aux;
    if(TPilha_Vazia(p) == 1){
        printf("\n Erro: A Pilha está vazia");
    }
    else
    {
        aux = p->dados[p->Topo];
        p->Topo--;
        return aux;
    }
}

 

 

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "portuguese");
    TPilha *p = (TPilha*)malloc(sizeof(TPilha));
    TPilha_Inicia(p);

    int num[] = {1, 9, 8, 1, 8, 4, 4, 5};
    int count;

    for(count = 0; count < sizeof(num)/sizeof(int); count++){
	TPilha_Insere(p, num[count]);
	printf("%d ", p->dados[count]);
    }

    printf("\n\n");

    int aux;

    for(count = 0; count < 8; count++){
	aux = TPilha_Retira(p);
	printf("%d ", aux);
    }

    putchar('\n');
    system(" pause");

    return 0;
}

Era isso que vc queria fazer?

Share this post


Link to post
Share on other sites
 Read less than a minute
6 horas atrás, oito8bits disse:

void imprimir(TPilha *p) ;

Desculpe a pergunta, mas porque vc fez isso dentro da main?

Fiz para chamar a função Imprimir (mostrar os dados na tela) mas parece que não funcionou ou foi desnecessário...

Share this post


Link to post
Share on other sites
 Read less than a minute
6 horas atrás, oito8bits disse:

//Bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
//Definindo uma constante com o tamanho exato que comporta o número do meu RA

#define tamanho 8

//Definindo uma estrutura
typedef struct {
    int dados[tamanho];
    int ini;
    int Topo;
} TPilha;

void TPilha_Inicia(TPilha *p) { 
    p->Topo = -1;
    
}
int TPilha_Vazia (TPilha *p) {
    if(p->Topo == -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

int TPilha_Cheia (TPilha *p) {
    if(p->Topo == tamanho -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

void TPilha_Insere (TPilha *p, int x) {
    if(TPilha_Cheia(p) ==1){
        printf("\n Erro: Pilha cheia");
    }
    else
    {
        p->Topo++;
        p->dados[p->Topo] = x;
    }
}

void imprimir(TPilha *p) {
    int i = 0;
    printf("\n\nImprimir:");
    for(i = 0; i < tamanho; i++) {
        printf("%d", p->dados);
    }
    
}

int TPilha_Retira (TPilha *p) {
    int aux;
    if(TPilha_Vazia(p) == 1){
        printf("\n Erro: A Pilha está vazia");
    }
    else
    {
        aux = p->dados[p->Topo];
        p->Topo--;
        return aux;
    }
}

 

 

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "portuguese");
    TPilha *p = (TPilha*)malloc(sizeof(TPilha));
    TPilha_Inicia(p);

    int num[] = {1, 9, 8, 1, 8, 4, 4, 5};
    int count;

    for(count = 0; count < sizeof(num)/sizeof(int); count++){
	TPilha_Insere(p, num[count]);
	printf("%d ", p->dados[count]);
    }

    printf("\n\n");

    int aux;

    for(count = 0; count < 8; count++){
	aux = TPilha_Retira(p);
	printf("%d ", aux);
    }

    putchar('\n');
    system(" pause");

    return 0;
}

Era isso que vc queria fazer?

Sim, era isso, muito obrigado, valeu!!!

Share this post


Link to post
Share on other sites
 Read less than a minute
Em 07/05/2020 em 18:00, oito8bits disse:

//Bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
//Definindo uma constante com o tamanho exato que comporta o número do meu RA

#define tamanho 8

//Definindo uma estrutura
typedef struct {
    int dados[tamanho];
    int ini;
    int Topo;
} TPilha;

void TPilha_Inicia(TPilha *p) { 
    p->Topo = -1;
    
}
int TPilha_Vazia (TPilha *p) {
    if(p->Topo == -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

int TPilha_Cheia (TPilha *p) {
    if(p->Topo == tamanho -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

void TPilha_Insere (TPilha *p, int x) {
    if(TPilha_Cheia(p) ==1){
        printf("\n Erro: Pilha cheia");
    }
    else
    {
        p->Topo++;
        p->dados[p->Topo] = x;
    }
}

void imprimir(TPilha *p) {
    int i = 0;
    printf("\n\nImprimir:");
    for(i = 0; i < tamanho; i++) {
        printf("%d", p->dados);
    }
    
}

int TPilha_Retira (TPilha *p) {
    int aux;
    if(TPilha_Vazia(p) == 1){
        printf("\n Erro: A Pilha está vazia");
    }
    else
    {
        aux = p->dados[p->Topo];
        p->Topo--;
        return aux;
    }
}

 

 

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "portuguese");
    TPilha *p = (TPilha*)malloc(sizeof(TPilha));
    TPilha_Inicia(p);

    int num[] = {1, 9, 8, 1, 8, 4, 4, 5};
    int count;

    for(count = 0; count < sizeof(num)/sizeof(int); count++){
	TPilha_Insere(p, num[count]);
	printf("%d ", p->dados[count]);
    }

    printf("\n\n");

    int aux;

    for(count = 0; count < 8; count++){
	aux = TPilha_Retira(p);
	printf("%d ", aux);
    }

    putchar('\n');
    system(" pause");

    return 0;
}

Era isso que vc queria fazer?

 

Em 08/05/2020 em 00:08, Tiago_gad disse:

Sim, era isso, muito obrigado, valeu!!!

pode me ajudar novamente????
Esse mesmo código, só que antes reimprimir ao contrário no aux igual vc fez, jogar em uma segunda pilha e aí reimprimir na ordem contrária...

Share this post


Link to post
Share on other sites
 Read 1 minute
Em 06/05/2020 em 23:45, Tiago_gad disse:

Boa noite, alguém pode corrigir meu código e me ajudar?
Estou fazendo um código que empilha e depois desempilha reempilhando na ordem contrária, alguém me ajuda aí no que falta, segue p código em questão:

//Bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
//Definindo uma constante com o tamanho exato que comporta o número do meu RA

#define tamanho 8

//Definindo uma estrutura
typedef struct {
    int dados[tamanho];
    int ini;
    int Topo;
} TPilha;

void TPilha_Inicia(TPilha *p) { 
    p->Topo = -1;
    
}
int TPilha_Vazia (TPilha *p) {
    if(p->Topo == -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

int TPilha_Cheia (TPilha *p) {
    if(p->Topo == tamanho -1) {
        return 1;
    }
    else 
    {
        return 0;
    }
}

void TPilha_Insere (TPilha *p, int x) {
    if(TPilha_Cheia(p) ==1){
        printf("\n Erro: Pilha cheia");
    }
    else
    {
        p->Topo++;
        p->dados[p->Topo] = x;
    }
}

void imprimir(TPilha *p) {
    int i = 0;
    printf("\n\nImprimir:");
    for(i = 0; i < tamanho; i++) {
        printf("%d", p->dados);
    }
    
}

int TPilha_Retira (TPilha *p) {
    int aux;
    if(TPilha_Vazia(p) == 1){
        printf("\n Erro: A Pilha está vazia");
    }
    else
    {
        aux = p->dados[p->Topo];
        p->Topo--;
        return aux;
    }
}

 

 

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "portuguese");
    TPilha *p = (TPilha*)malloc(sizeof(TPilha));
    TPilha_Inicia(p);
    
    TPilha_Insere (p, 1);
    printf("\n Empilhou o 1");
    TPilha_Insere (p, 9);
    printf("\n Empilhou o 9");
    TPilha_Insere (p, 8);
    printf("\n Empilhou o 8");
    TPilha_Insere (p, 1);
    printf("\n Empilhou o 1");
    TPilha_Insere (p, 8);
    printf("\n Empilhou o 8");
    TPilha_Insere (p, 4);
    printf("\n Empilhou o 4");
    TPilha_Insere (p, 4);
    printf("\n Empilhou o 4");
    TPilha_Insere (p, 5);
    printf("\n Empilhou o 5");
    
    void imprimir(TPilha *p) ;
    
    system("\n pause");
    
    int aux;
    
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    aux = TPilha_Retira(p);
    printf("\n Desenpilhou: %d", aux);
    
    system(" pause");
    
    return 0;
}

Olá thiago_gad, você conseguiu fazer ??poderia me ajudar ? é o mesmo mapa... falta 3 dias 😕

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...