elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con programa en C de Pilas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con programa en C de Pilas  (Leído 2,960 veces)
Emily

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Ayuda con programa en C de Pilas
« en: 2 Febrero 2019, 07:43 am »

Hola a todos
verán tengo que realizas un programa en c utilizando pilas
Al programa le tengo que ingresar una ecuación ejemplo {(3+3)} de esta ecuación solo tengo que guardar el {,( en una pila pero cuando detecte los ),} tengo que eliminar la pila en donde se encuentra su pareja

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <string.h>
  5.  
  6. typedef struct Nodo{
  7. int Dato;
  8. struct Nodo *sig;
  9. }Nodo;
  10.  
  11. Nodo *Crear(char dato){
  12. Nodo *espacio;
  13. espacio=(Nodo*)malloc(sizeof(Nodo));
  14. espacio->Dato=dato;
  15. espacio->sig=NULL;
  16. return espacio;
  17. }
  18.  
  19. Nodo *Alta(char dato,Nodo *cima){
  20. Nodo *box;
  21. box=Crear(dato);
  22. if(cima==NULL){
  23. cima=box;
  24. }else{
  25. box->sig=cima;
  26. cima=box;
  27. }
  28. return cima;
  29. }
  30.  
  31. void Mostrar(Nodo *cima){
  32. if(cima==NULL){
  33. printf("\nNo hay ningun dato\n");
  34. }else{
  35. while(cima!=NULL){
  36. printf ("\n| %c |\n ___  ",cima->Dato);
  37.            cima=cima->sig;
  38. }
  39. printf("\n");
  40. }
  41. }
  42.  
  43. Nodo *Baja(Nodo *cima){
  44. Nodo *aux;
  45. if(cima==NULL){
  46. return 0;
  47. }else{
  48. aux=cima;
  49. cima=aux->sig;
  50. free(aux);
  51. return cima;
  52. }
  53. }
  54.  
  55.  
  56. int main(){
  57. int c;
  58. struct Nodo *Pila;
  59.    Pila=NULL;
  60.    while (EOF != (c=getchar())){
  61.     switch (c){
  62.     case '(':
  63.     Pila=Alta(c,Pila);
  64.     break;
  65.     case '{':
  66.     Pila=Alta(c,Pila);
  67.     break;
  68.     case '[':
  69.     Pila=Alta(c,Pila);
  70.     break;
  71.     case ')':
  72.  
  73.     break;
  74. }
  75. }
  76. Mostrar(Pila);  
  77. }
tengo este avance de mi código, ya guarda en las pilas los (,{,[ pero no se de que manera decirle que cuando encuentre un ),},] y coincida con el ultimo que se ingreso lo elimine
por favor alguien explíqueme de que manera puedo compararlos


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con programa en C de Pilas
« Respuesta #1 en: 2 Febrero 2019, 13:46 pm »

Cuándo te encuentres un ), ], } vas vaciando la pila y realizando operaciones hasta que te encuentres con su par.

*Si llegas a un símbolo diferente o al inicio de la pila es que la entrada está mal construida.

Cuándo llegues al par introduces en la pila el valor resultante de las operaciones que has realizado hasta ahora y continuas leyendo la entrada.


En línea

Emily

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda con programa en C de Pilas
« Respuesta #2 en: 3 Febrero 2019, 08:22 am »

Eso es lo que necesito hacer pero ya me atore en las comparaciones
En línea

Emily

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda con programa en C de Pilas
« Respuesta #3 en: 3 Febrero 2019, 09:08 am »

Ya logre avanzar mas con mi programa, pero ahora mi duda es como puedo hacer la comparación de que cuando al inicio de la cadena se ingrese un ),],} marque un error
Aquí esta mi código
Alguien de favor me podría decir una manera con la cual pueda hacer la comparación o explicarme una forma de hacerla

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <string.h>
  5.  
  6. typedef struct Nodo{
  7. int Dato;
  8. struct Nodo *sig;
  9. }Nodo;
  10.  
  11. Nodo *Crear(char dato){
  12. Nodo *espacio;
  13. espacio=(Nodo*)malloc(sizeof(Nodo));
  14. espacio->Dato=dato;
  15. espacio->sig=NULL;
  16. return espacio;
  17. }
  18.  
  19. Nodo *Alta(char dato,Nodo *cima){
  20. Nodo *box;
  21. box=Crear(dato);
  22. if(cima==NULL){
  23. cima=box;
  24. }else{
  25. box->sig=cima;
  26. cima=box;
  27. }
  28. return cima;
  29. }
  30.  
  31. void Mostrar(Nodo *cima){
  32. if(cima==NULL){
  33. printf("\nNo hay ningun dato\n");
  34. }else{
  35. while(cima!=NULL){
  36. printf ("\n| %c |\n ___  ",cima->Dato);
  37.            cima=cima->sig;
  38. }
  39. printf("\n");
  40. }
  41. }
  42.  
  43. Nodo *Baja(Nodo *cima){
  44. Nodo *aux;
  45. if(cima==NULL){
  46. return 0;
  47. }else{
  48. aux=cima;
  49. cima=aux->sig;
  50. free(aux);
  51. return cima;
  52. }
  53. }
  54.  
  55.  
  56. int main(){
  57. int c;
  58. struct Nodo *Pila;
  59.    Pila=NULL;
  60.    while (EOF != (c=getchar())){
  61.     switch (c){
  62.     case '(':
  63.     Pila=Alta(c,Pila);
  64.     break;
  65.     case '{':
  66.     Pila=Alta(c,Pila);
  67.     break;
  68.     case '[':
  69.     Pila=Alta(c,Pila);
  70.     break;
  71.     case ')':
  72.     if ((Pila->Dato)=='('){
  73.     Pila=Baja(Pila);
  74. }else{
  75. printf("La ecuacion no esta balanceada");
  76. return 0;
  77. }
  78.     break;
  79.     case ']':
  80.     if ((Pila->Dato)=='['){
  81.     Pila=Baja(Pila);
  82. }else{
  83. printf("La ecuacion no esta balanceada");
  84. return 0;
  85. }
  86.     break;
  87.     case '}':
  88.     if ((Pila->Dato)=='{'){
  89.     Pila=Baja(Pila);
  90. }else{
  91. printf("La ecuacion no esta balanceada");
  92. return 0;
  93. }
  94.     break;
  95. }
  96. }
  97. printf("La ecuacion esta balanceada");
  98. Mostrar(Pila);
  99. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Aplicacion de Consola C# - Programa Pilas « 1 2 »
.NET (C#, VB.NET, ASP)
Castiel 10 16,506 Último mensaje 3 Agosto 2016, 05:58 am
por El Benjo
Ayuda con Pilas c#
.NET (C#, VB.NET, ASP)
javyhor 1 2,930 Último mensaje 27 Mayo 2016, 08:47 am
por mdkusz
[Error] ld returned 1 exit status en mi programa de pilas y colas
Programación C/C++
creiko 0 4,148 Último mensaje 19 Octubre 2016, 07:38 am
por creiko
Programa de archivos y pilas
Programación C/C++
celest275 1 2,058 Último mensaje 10 Abril 2018, 22:44 pm
por Kenji-chan
Duda con programa de Pilas
Programación C/C++
Emily 2 3,250 Último mensaje 3 Febrero 2019, 08:25 am
por Emily
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines