SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: iic610 en Miércoles 26 de Noviembre de 2008, 20:58

Título: Otro codigo en el que necesito colaboracion
Publicado por: iic610 en Miércoles 26 de Noviembre de 2008, 20:58
Se supone q mi codigo pretende sumar dos numeros enteros muy grandes mediante la utilizacion de pilas. No se que narices pasa xo no me entra en ninguno de los dos ultimos bucles tal vez xq considera las pilas nulas¿?Ayuda porfa!!

Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stddef.h>
  4.  
  5. typedef struct nodo {
  6. int num;
  7. struct nodo *sig;
  8. }tiponodo;
  9. typedef tiponodo *pila;
  10.  
  11. pila apilar (pila p,int e); //almacena el elemento e en la pila
  12. pila desapilar (pila p); //elimina el ultimo elemento introducido en la pila p
  13. int cima (pila p); //devuelve el ultimo elemento introducido en la pila p
  14. pila pnula (void); //construye una pila p sin elementos
  15. int nula (pila p); //decide si la pila p tiene elementos*/
  16.  
  17. main () {
  18. int a,b,num,llevada;
  19. pila pa,pb,aux;
  20. int suma;
  21. char respa,respb;
  22. pa = pnula();
  23. pb = pnula();
  24. aux = pnula();
  25. respa='a';
  26. respb='a';
  27. llevada = 0;
  28. printf("Paso al programa de los numeros que se quieren sumarn");
  29. while (respa != 'n') {
  30. printf("Introduce el numero a: ");
  31. scanf("%d",&a);
  32. apilar(pa,a);
  33. printf("Deseas continuar metiendo elementos en la pila a (introduce n si no quires continuar)n: ");
  34. /*setbuf(stdin,NULL);*/
  35. scanf("%c",&respa);
  36. }
  37. while (respb != 'n') {
  38. printf("Introduce el numero b: ");
  39. scanf("%d",&b);
  40. apilar(pb,b);
  41. printf("Deseas continuar metiendo elementos en la pila b (introduce n si no quires continuar): n");
  42. /*setbuf(stdin,NULL);*/
  43. scanf("%c",&respb);
  44. }
  45. while ((nula(pa) != 1) && (nula(pb) != 1 )) {
  46. printf("entro en el primer bucle");
  47. a = cima(pa);
  48. b = cima(pb);
  49. desapilar(pa);
  50. desapilar(pb);
  51. suma = a + b + llevada;
  52. llevada = 0;
  53. if (suma>9)
  54. llevada = 1;
  55. apilar(aux,suma);
  56. printf("salgo del primer bucle");
  57. }
  58. while (nula(aux) != 1) {
  59. printf("entro en el segundo bucle");
  60. num = cima(aux);
  61. desapilar(aux);
  62. printf("El numero resultantes es el siguiente");
  63. printf("%d",num);
  64. printf("salgo del segundo bucle");
  65. }
  66. }
  67.  
  68. pila pnula (void) {
  69. return(NULL);
  70. }
  71.  
  72. pila desapilar (pila p) {
  73. pila q;
  74. q = (pila) malloc (sizeof(tiponodo));
  75. q = p;
  76. p = p->sig;
  77. free(q);
  78. return(p);
  79. }
  80.  
  81. pila apilar (pila p,int e) {
  82. pila q;
  83. q = (pila) malloc (sizeof(tiponodo));
  84. q->num = e;
  85. q->sig = p;
  86. p = q;
  87. return(p);
  88. }
  89.  
  90. int cima (pila p) {
  91. int e;
  92. if (nula(p) == 1)
  93. printf("La pila esta vacian");
  94. else
  95. e = p->num;
  96. return(e);
  97. }
  98.  
  99. int nula (pila p) {
  100. int resultado;
  101. printf("he entrado en el buclen");
  102. if (p==NULL) {
  103. resultado = 1;
  104. printf("La pila esta vacian");
  105. }
  106. else {
  107. resultado = 0;
  108. printf("La pila no esta vacian");
  109. }
  110. return(resultado);
  111. }
  112.  
Título: Re: Otro codigo en el que necesito colaboracion
Publicado por: Eternal Idol en Miércoles 26 de Noviembre de 2008, 22:29
Depuralo.
Título: Re: Otro codigo en el que necesito colaboracion
Publicado por: iic610 en Jueves 27 de Noviembre de 2008, 17:01
Gracias!no se me habia ocurrido.....
Título: Re: Otro codigo en el que necesito colaboracion
Publicado por: Eternal Idol en Jueves 27 de Noviembre de 2008, 17:36
De nada, a ver si la proxima vez estas mas ocurrente y pones el codigo entre la etiqueta CODE.