MuriloHB
-
Posts
4 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por MuriloHB
-
-
se você usa-se o dev eu até saberia responder mais nem conheço esse problem e eu n achei nenhum erro aqui vou tenar achar de novo
Eu tenho o DEV C++ aqui também, mas ele dá a mesma coisa. Na hora de compilar ele aponta:
Compilation results...
--------
- Errors: 0
- Warnings: 0
- Output Filename: C:\Users\Murilo\Desktop\dev.exe
- Output Size: 130,6328125 KiB
- Compilation Time: 2,81s
Mas na hora que eu rodo o programa, informo os elementos da Pilha e dou Enter, o programa também para de funcionar.
-
mostre a parte do DEV que mostra onde foi localizado os erros
Então, eu uso o CodeBlocks pra compilar e quanto eu rodo o programa ele não mostra onde estão os erros, apenas aponta " Exercício.exe parou de funcionar... "
-
Olá galera! Então, estou tendo problemas com o seguinte exercício de Algoritmos e Estrutura de Dados:
Escreva um algoritmo para ordenar os elementos de uma pilha durante o processo de inserção - push(x). Após todas as inserções, os elementos da pilha devem estar dispostos em ordem crescente, estando o maior valor no topo da pilha e o menor, na primeira posição válida da pilha.
Entrada: Todos os elementos a serem inseridos na pilha separados por espaço, aqui os elementos não estão ordenados.
Saída: Elementos na pilha, sendo que o topo da pilha é o primeiro elemento a ser exibido, e assim por diante...
Ex de Entrada: 6 1 9 4 3 2 10 22
Ex de Saída: 22 10 9 6 4 3 2 1
OBS PARA OBTER A ENTRADA: Leia cada linha utilizando a função fgets, utilizando como ponteiro de arquivo stdin. Para obter cada número da linha lida, utilize a função strtok. A conversão de cada número obtido com strtok para seu valor inteiro pode ser feita com a função atoi.
Então, eu escrevi meu código e na minha cabeça a lógica está completamente correta, no entando quando executo dá erro e o programa para de funcionar...
Meu código está assim:
#include <stdio.h>#include <stdlib.h>typedef struct node { int info; struct node *ant;}node;typedef struct Pilha{ node *topo;}Pilha;Pilha *P;void cria(Pilha *P){ P->topo = NULL;}void push(Pilha *P, int x){ node *p; node *aux; node *proximo; proximo = NULL; aux = NULL; p =(node*)malloc(sizeof(node)); if(p == NULL){ printf("Erro de alocacao!"); exit(1); } else{ p->info = x; if(P->topo == NULL){ p->ant = NULL; P->topo = p; } else{ aux = P->topo; while(aux != NULL && aux->info > x ){ proximo = aux; aux = aux->ant; } proximo->ant = p; p->ant = aux; } proximo = NULL; aux = NULL; }}void converte(char string[], Pilha *P){ char *pch; int x; pch = strtok(string," "); while (pch != NULL){ x = atoi(pch); push(P, x); pch = strtok (NULL, " "); }}void imprime(Pilha *P){ node *p; if(P->topo == NULL){ printf("A Pilha esta vazia!"); exit(1); } else{ p = P->topo; while(p!=NULL){ printf("%d ", p->info); p = p->ant; } }}void esvazia(Pilha *P){ node *p, *aux; p = P->topo; while(p != NULL){ aux = p; p = p->ant; free(aux); } free(P);}int main(){ char string[6000]; Pilha *P = (Pilha*) malloc (sizeof(Pilha)); cria(P); printf("Informe os valores da pilha: "); fgets(string, 6000, stdin); converte(string, P); imprime(P); esvazia(P); return 0;}
Gostaria de saber o que estou errando, pois realmente não tenho a menor ideia.
Agradeço a atenção!
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Ordenar Pilha Encadeada
em C/C#/C++
Postado
Caso alguem tenha alguma dúvida, o problema se encontrava na função push, especificamenten o trecho:
Realizei a seguinte alteração:
Agora o programa roda normalmente!