• Domingo 6 de Octubre de 2024, 06:50

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - iic610

Páginas: [1]
1
C++ Builder / Re: Otro codigo en el que necesito colaboracion
« en: Jueves 27 de Noviembre de 2008, 17:01 »
Gracias!no se me habia ocurrido.....

2
C++ Builder / Otro codigo en el que necesito colaboracion
« 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.  

3
C++ Builder / Codigo en C se agradece colaboracion!
« en: Miércoles 26 de Noviembre de 2008, 20:55 »
Se supone que mi programa mediante la utilizacion de una lisa doblemente enlazada le permite introducir al usuario palabras por teclado,mostrar la lista y borrar la palabra indicada!Ya no se si el fallo es del menu o del propio codigo del programa xo solamente me coge dos de las opciones posibles q ofrece mi menu!!Porfa necesito ayuda!Gracias!

Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define NILL 0
  5.  
  6. struct lista_elementos {
  7.     char carac[40];
  8.     struct lista_elementos *sig;
  9.     struct lista_elementos *ant;
  10. };
  11. typedef struct lista_elementos nodo;
  12. int menu (void);
  13. nodo *crear (nodo *pt);
  14. nodo *buscar_palabra (nodo *lista);
  15. nodo *borrar_palabra (nodo *lista,nodo *primero);
  16. void mostrar_lista (nodo *lista);
  17. main () {
  18.     nodo *lista;
  19.     nodo *primero;
  20.     int eleccion;
  21.     do {
  22.         eleccion = menu();
  23.         switch (eleccion) {
  24.             case 1 : //crear la lista doblemente enlazada
  25.                 lista = (nodo *) malloc (sizeof(nodo)); //reserva el espacio para el primer nodo
  26.                 crear(lista);
  27.                 break;
  28.             case 2 : //muestra la lista
  29.                 mostrar_lista(lista);
  30.                 break;
  31.             case 3 : //borra el componente que corresponde a la palabra
  32.                 lista = borrar_palabra(lista,primero);
  33.                 break;
  34.             default: //finalizar
  35.                 printf("Fin de las operacionesn");
  36.         }
  37.     } while (eleccion != 4);
  38. }
  39.  
  40. int menu(void) {
  41.     int eleccion;
  42.     do {
  43.         printf("nMenu principaln");
  44.         printf("1. Crea la lista doblemente enlazadan");
  45.         printf("2. Muestra la listan");
  46.         printf("3. Borra el componente que corresponde a la palabra buscadan");
  47.         printf("Elija la opcionn: ");
  48.         scanf("%d",&eleccion);
  49.         setbuf(stdin,NULL);
  50.         if (eleccion<1 || eleccion>4) {
  51.             printf("n El valor introducido no se corresponde con ninguna");
  52.             printf("nde las posibilidades del menu. Intentelo de nuevo n");
  53.         }
  54.     } while (eleccion<1 || eleccion>4);
  55.     return(eleccion);
  56. }
  57.  
  58. nodo *crear (nodo *lista) {
  59.     printf("Introduce la palabra que quieres meter en la lista(para terminar FIN)n: ");
  60.     setbuf(stdin,NULL);
  61.     scanf("%[^n]",lista->carac);
  62.     if (strcmp (lista->carac,"FIN") == 0) {
  63.         lista->sig=NULL;
  64.         lista->ant=NULL;
  65.     }
  66.     else {
  67.         lista->sig=(nodo *) malloc (sizeof(nodo));
  68.         crear(lista->sig);
  69.     }
  70. return(lista);
  71. }
  72.  
  73. nodo *borrar_palabra (nodo *lista,nodo *primero) {
  74.     primero = buscar_palabra(lista);
  75.     if (primero != NULL) {
  76.         if (primero->sig == NULL) {
  77.             primero->ant->sig=NULL;
  78.             free(primero);
  79.         }
  80.         else {
  81.             if (primero == lista) {
  82.                 lista=primero->sig;
  83.                 free(primero);
  84.             }
  85.             else {
  86.                 primero->ant=primero->sig;
  87.                 free(primero);
  88.             }
  89.         }
  90.     }
  91.     else
  92.         printf("No hay nada que borrarn");
  93.     return(lista);
  94. }
  95.  
  96. nodo *buscar_palabra (nodo *lista) {
  97.     nodo *primero;
  98.     char palabra[40];
  99.     printf("Introduce la palabra que quieres que busque el programa: ");
  100.     scanf("%[^n]",palabra);
  101.     primero=lista;
  102.     while (primero != NULL) {
  103.         if (strcmp(primero->carac,palabra) != 0) {
  104.             primero=primero->sig;
  105.             return(NULL);
  106.         }
  107.         else {
  108.             printf("Palabra encontradan");
  109.             return(primero);
  110.         }
  111.     }
  112. }
  113.  
  114. void mostrar_lista (nodo *lista) {
  115.     if (lista->sig != NULL) {
  116.         printf("%sn",lista->carac);
  117.         mostrar_lista(lista->sig);
  118.     }
  119. }
  120.  

Páginas: [1]