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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con for en c (eliminar pila)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con for en c (eliminar pila)  (Leído 8,963 veces)
attackers

Desconectado Desconectado

Mensajes: 38


Ver Perfil
problema con for en c (eliminar pila)
« en: 4 Noviembre 2011, 04:15 am »

estaba haciendo este programa que me mandaron en la universidad pero no logro eliminar las pilas que deseo, por ejemplo si agregue 5 pilas y quiero eliminar 4 me elimina es una sola y no logro que me elimine las cuatro de una vez

aqui les dejo el codigo para que me puedan ayudar



Código
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include <stdlib.h>
  5. #define p printf
  6. #define s scanf
  7. main ()
  8. {
  9.  
  10. int arreglo[10];
  11. int numero=0;
  12. int tope=0;
  13. int x=0;
  14. int contador;
  15. int cantidad;
  16. int final;
  17. do
  18.  
  19. {
  20.  
  21.  
  22.  
  23. /**COMANDO PARA CAMBIAR COLOR A LA VENTANA**/
  24.  
  25. system("color 1f");
  26. /** COMANDO PARA LIMPIAR LA PANTALLA **/
  27. system("cls");
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. /*******************************************/
  36. /*******************************************/
  37. /************ MENU DE OPCIONES **************/
  38. /*******************************************/
  39. /*******************************************/
  40.  
  41. p("\n\tPOR FAVOR ELIJA UNA DE LAS SIGUIENTES OPCIONES\n\n\n\n");
  42. p("\t\t\tPILA\n");
  43. p("\n\t1.INGRESAR UN DATO A LA PILA \n\n");
  44. p("\t2.MOSTRAR DATOS DE LA PILA\n\n");
  45. p("\t3.ELIMINAR DATO DE LA PILA \n\n");
  46. p("\t4.SALIR DEL PROGRAMA \n");
  47.  
  48. /***********************************************/
  49. s("%i",&numero);
  50. switch(numero)
  51. {
  52.  
  53. /*******************************************/
  54. /*******************************************/
  55. /****** AGREGAR ELEMENTO A LA PILA*********/
  56. /*******************************************/
  57. /*******************************************/
  58. case 1:{
  59.  
  60. system ("cls");
  61.  
  62. p("CUANTOS ELEMENTOS QUIERE AGREGAR A LA PILA ");
  63. scanf("%d", &cantidad);    
  64.  
  65. for( contador = 1; contador <= cantidad; contador++ ){
  66.  
  67. p("\t INTRODIZCA EL DATO DE LA PILA NUMERO %d : ", contador);
  68. s("%i",&arreglo[tope]);    
  69. tope++;
  70.  
  71.  
  72.  
  73. }
  74. }
  75. break;
  76.  
  77.  
  78. /*******************************************/
  79. /*******************************************/
  80. /************ MUESTRA LAS PILA **************/
  81. /*******************************************/
  82. /*******************************************/
  83.  
  84.  
  85. case 2:
  86. {
  87.  
  88.     system ("cls");
  89.     if ( tope==0 ) {
  90.     p("\t LA PILA ESTA VACIA");
  91.     }
  92.  
  93.     else
  94.     {
  95. p("\tDATOS DE LA PILA\n\n");
  96.  
  97. for(x=0; tope>x ;x++)
  98. {
  99. p("\n\t%d ",arreglo[x]);
  100. }
  101. }
  102. }
  103. break;
  104.  
  105.  
  106. /*******************************************/
  107. /*******************************************/
  108. /******   ELIMINA DATO DE LA PILA  *********/
  109. /*******************************************/
  110. /*******************************************/
  111.  
  112.  
  113. case 3:
  114.  
  115.     {
  116.  
  117.           system ("cls");
  118.  
  119.  
  120.                          if (tope==0)
  121.                    {
  122.  
  123.                          p("\n\t\t NO HAY PILA QUE RETIRAR");
  124.                           getch();
  125.                          }
  126.                          else
  127. {
  128. [b]                p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
  129.                s("%d",&max);
  130.                for ( max = 0; max<tope; max++);
  131.  
  132.                {
  133.  
  134.                              tope--;
  135.                    system ("cls");
  136.  
  137.                p("LOS ELIMENTOS HAN SIDO ELIMINADOS");
  138.      [/b]
  139.                   getch();
  140.  
  141.  
  142.                       }          
  143.                      }
  144.                     }
  145.  
  146.               break;
  147.  
  148. /*******************************************/
  149. /*******************************************/
  150. /********   SALE DEL PROGRMA   ***********/
  151. /*******************************************/
  152. /*******************************************/
  153.  
  154.  
  155. case 6:
  156. {
  157. printf("\tSALIENDO...\n");
  158. return 0;
  159. }
  160. break;
  161. }
  162. }
  163. while(numero<7);
  164.  
  165. }
  166.  
  167.  
  168.  
  169.  


« Última modificación: 4 Noviembre 2011, 05:17 am por attackers » En línea

attackers

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: problema con for en c (eliminar pila)
« Respuesta #1 en: 4 Noviembre 2011, 04:24 am »

esta en negrita la parte del codigo donde se eliminan los datos de la pila


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: problema con for en c (eliminar pila)
« Respuesta #2 en: 4 Noviembre 2011, 06:22 am »

¡Buenas!

Código
  1.    s("%d",&max);
  2.    for ( max = 0; max<tope; max++);
  3.  
  4.    {
  5.         tope--;
  6.        system ("cls");
  7.  
  8.        p("LOS ELIMENTOS HAN SIDO ELIMINADOS");
  9.  
  10.        getch();
  11.  
  12.    }
  13.  

Estas leyendo el numero de datos que quieres eliminar, despues descartas ese valor para usar la variable que lo almacena como contador en un bucle que no hace nada (inmediatamente despues del for tienes ; ), e inmediatamente despues declaras un bloque que decrementa el tope y realiza algunas instrucciones...

Repasa esta parte a ver si encuentras el (los) errores.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
attackers

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: problema con for en c (eliminar pila)
« Respuesta #3 en: 4 Noviembre 2011, 15:49 pm »

amigo ya encontre un error

Código
  1.     {
  2.  
  3.           system ("cls");
  4.  
  5.                  if (tope==0)
  6.                    {
  7.  
  8.                          p("\n\t\t NO HAY PILA QUE RETIRAR");
  9.                           getch();
  10.                          }
  11.                          else {
  12.                p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
  13.                s("%d",&max);
  14.  
  15.                      system ("cls");
  16.  
  17.                for ( max = 0; max<tope; max++)
  18.                {
  19.                              tope--;
  20.  
  21.                p("LOS ELIMENTOS HAN SIDO ELIMINADOS");
  22.  
  23.  getch();
  24.  
  25.  
  26.                }
  27.  
  28.  
  29.                        }
  30.                     }


pero ahora si instruduzco  10 elementos y quiero eliminar 8 lo que me elimina son 5 no los 8


edit: le cambie la variable de tope por cantidad pero aqui me elimina todo los datos


Código
  1.     {
  2.  
  3.           system ("cls");
  4.  
  5.                  if (tope==0)
  6.                    {
  7.  
  8.                          p("\n\t\t NO HAY PILA QUE RETIRAR");
  9.                           getch();
  10.                          }
  11.                          else {
  12.                p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
  13.                s("%d",&max);
  14.  
  15.                      system ("cls");
  16.  
  17.                for ( max = 0; cantidad>=max; max++)
  18.  
  19.                 {
  20.  
  21.                p("EL ELEMENTO %d \n", tope);
  22.                 tope--;
  23.  
  24.      system("pause");
  25.  
  26.  
  27.  
  28.                }
  29.  
  30.  
  31.                        }
  32.                     }

« Última modificación: 4 Noviembre 2011, 16:14 pm por attackers » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: problema con for en c (eliminar pila)
« Respuesta #4 en: 5 Noviembre 2011, 01:54 am »

Si no tienes un buen libro ya es hora de conseguir uno, revisa el tema [Libros/Papers] C/C++.

El error sigue siendo el mismo que ya indico do-while:

1) Lees el numero de elementos a eliminar y almacenas este en la variable "max":
Código
  1. p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
  2. s("%d",&max);

2) Ejecutas un bucle utilizando la variable "max" como contador donde ella toma los valores 0 a "cantidad":
Código
  1. for ( max = 0; cantidad>=max; max++){
  2.   p("EL ELEMENTO %d \n", tope);
  3.   tope--;
  4.   system("pause");
  5. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
attackers

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: problema con for en c (eliminar pila)
« Respuesta #5 en: 5 Noviembre 2011, 16:22 pm »

Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include <stdlib.h>
  4. #define p printf
  5. #define s scanf
  6. main ()
  7.  
  8. {
  9.  
  10. int arreglo[100];
  11.  
  12. int numero;  /*** guarda el numero ha elegir del menu **/
  13. int tope=0;  
  14.  
  15. int contadorAGREGAR;   /** contador del for de agregar las pilas **/
  16. int contadorMOSTRAR;  /** contador del for de mostrar las  pilas **/
  17. int contadorELIMINAR;  /** contador del for para eliminar las pilas **/
  18.  
  19. int cantidadAGREGAR;  /** guarda la cantidad de elementos que quiero agregar **/
  20. int cantidadELIMINAR; /** guarda la cantidad de elementos que quiero eliminar **/
  21.  
  22. do
  23.  
  24. {
  25.  
  26.  
  27.  
  28. /**COMANDO PARA CAMBIAR COLOR A LA VENTANA**/
  29. system("color 1f");
  30.  
  31. /** COMANDO PARA LIMPIAR LA PANTALLA **/
  32. system("cls");
  33.  
  34. /*******************************************/
  35. /*******************************************/
  36. /************ MENU DE OPCIONES **************/
  37. /*******************************************/
  38. /*******************************************/
  39.  
  40. p("\n\tPOR FAVOR ELIJA UNA DE LAS SIGUIENTES OPCIONES\n\n\n\n");
  41. p("\t\t\tPILA\n");
  42. p("\n\t1.INGRESAR UN DATO A LA PILA \n\n");
  43. p("\t2.MOSTRAR DATOS DE LA PILA\n\n");
  44. p("\t3.ELIMINAR DATO DE LA PILA \n\n");
  45. p("\t4.SALIR DEL PROGRAMA \n");
  46.  
  47. /***********************************************/
  48. s("%i",&numero); /** guarda el numero que el usuario elige **/
  49. switch(numero)  
  50. {
  51.  
  52. /*******************************************/
  53. /*******************************************/
  54. /****** AGREGAR ELEMENTO A LA PILA*********/
  55. /*******************************************/
  56. /*******************************************/
  57. case 1:{
  58. system ("cls");
  59.  
  60. p("CUANTOS ELEMENTOS QUIERE AGREGAR A LA PILA ");
  61. scanf("%d", &cantidadAGREGAR);    
  62.  
  63.  
  64. for( contadorAGREGAR = 1; contadorAGREGAR <= cantidadAGREGAR; contadorAGREGAR++ ){
  65.  
  66. p("\t INTRODIZCA EL DATO DE LA PILA NUMERO %d : ", contadorAGREGAR);
  67. s("%i",&arreglo[tope]);    
  68. tope++;  /** aumenta o suma 1 elemento al tope **/
  69.  
  70. }
  71. }
  72. break;
  73.  
  74.  
  75. /*******************************************/
  76. /*******************************************/
  77. /************ MUESTRA LAS PILA **************/
  78. /*******************************************/
  79. /*******************************************/
  80. case 2:
  81. {
  82. system ("cls");
  83.  
  84.       /** compara si tope es igual a 0 **/
  85.     if ( tope==0 )
  86.     {
  87.          /** si la condicion se cumple se muestra que esta vacia **/
  88.     p("\t LA PILA ESTA VACIA");
  89.     }
  90.  
  91.  
  92.     else
  93.     {
  94.     p("\tDATOS DE LA PILA\n\n");
  95.  
  96.                for(contadorMOSTRAR=0; tope>contadorMOSTRAR ;contadorMOSTRAR++)
  97.                {
  98.                p("\n\t%d ",arreglo[contadorMOSTRAR]);
  99.                }
  100.    }
  101. }
  102. break;
  103.  
  104.  
  105.  
  106. /*******************************************/
  107. /*******************************************/
  108. /******   ELIMINA DATO DE LA PILA  *********/
  109. /*******************************************/
  110. /*******************************************/
  111. case 3:
  112.  
  113.     {
  114.  
  115. system ("cls");
  116.                  if (tope==0)
  117.                          {  
  118.                          p("\n\t\t NO HAY PILA QUE RETIRAR");
  119.                          }
  120.                          else
  121.                          {
  122.                p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
  123.                s("%d",&cantidadELIMINAR);
  124.  
  125. system ("cls");
  126.  
  127.                for ( contadorELIMINAR= 0; contadorELIMINAR<cantidadELIMINAR; contadorELIMINAR++)
  128.                    {
  129.                        tope--;                
  130.                    p("el elemento %d fue eliminado \n",tope);
  131.  
  132.  
  133. getch();
  134.                }                  
  135.                }
  136.                }  
  137.               break;
  138.  
  139.  
  140.  
  141. /*******************************************/
  142. /*******************************************/
  143. /********   SALE DEL PROGRMA   ***********/
  144. /*******************************************/
  145. /*******************************************/
  146. case 4:
  147. {
  148.  
  149. printf("\tSALIENDO...\n");
  150.  
  151. return 0;
  152.  
  153. }
  154.  
  155. break;
  156. }
  157. }
  158.  
  159. while(numero<7);
  160.  
  161. }
  162.  
  163.  
  164.  
  165.  
  166.  


amigos ahora me podrian explicar un poco  para hacer uno de cola

tendria que hacer otra variable para el inicio ?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema pila cmos pc
Electrónica
smokg 9 9,637 Último mensaje 26 Febrero 2009, 01:12 am
por smokg
Problema con la pila
ASM
B14573R 4 3,969 Último mensaje 12 Diciembre 2009, 10:32 am
por Eternal Idol
problema con pila del bios « 1 2 »
Hardware
Aeros 10 9,594 Último mensaje 11 Julio 2010, 16:46 pm
por simorg
ayuda con agregar y eliminar pila
Programación C/C++
attackers 1 3,742 Último mensaje 31 Octubre 2011, 02:09 am
por rir3760
buscar y eliminar datos en una pila c#
.NET (C#, VB.NET, ASP)
enkris 4 6,580 Último mensaje 22 Noviembre 2014, 01:59 am
por Yaldabaot
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines