elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:54  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 543 veces)
attackers

Desconectado Desconectado

Mensajes: 37


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

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
 
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define p printf
#define s scanf
main ()
{
 
int arreglo[10];
int numero=0;
int tope=0;
int x=0;
int contador;
int cantidad;
int final;
do
 
{
 
 
 
/**COMANDO PARA CAMBIAR COLOR A LA VENTANA**/
 
system("color 1f");
/** COMANDO PARA LIMPIAR LA PANTALLA **/
system("cls");
 
 
 
 
 
 
 
/*******************************************/
/*******************************************/
/************ MENU DE OPCIONES **************/
/*******************************************/
/*******************************************/
 
p("\n\tPOR FAVOR ELIJA UNA DE LAS SIGUIENTES OPCIONES\n\n\n\n");
p("\t\t\tPILA\n");
p("\n\t1.INGRESAR UN DATO A LA PILA \n\n");
p("\t2.MOSTRAR DATOS DE LA PILA\n\n");
p("\t3.ELIMINAR DATO DE LA PILA \n\n");
p("\t4.SALIR DEL PROGRAMA \n");
 
/***********************************************/
s("%i",&numero);
switch(numero)
{
 
/*******************************************/
/*******************************************/
/****** AGREGAR ELEMENTO A LA PILA*********/
/*******************************************/
/*******************************************/
case 1:{
 
system ("cls");
 
p("CUANTOS ELEMENTOS QUIERE AGREGAR A LA PILA ");
scanf("%d", &cantidad);    
 
for( contador = 1; contador <= cantidad; contador++ ){
 
p("\t INTRODIZCA EL DATO DE LA PILA NUMERO %d : ", contador);
s("%i",&arreglo[tope]);    
tope++;
 
 
 
}
}
break;
 
 
/*******************************************/
/*******************************************/
/************ MUESTRA LAS PILA **************/
/*******************************************/
/*******************************************/
 
 
case 2:
{
 
    system ("cls");
    if ( tope==0 ) {
    p("\t LA PILA ESTA VACIA");
    }
 
    else
    {
p("\tDATOS DE LA PILA\n\n");
 
for(x=0; tope>x ;x++)
{
p("\n\t%d ",arreglo[x]);
}
}
}
getch();
break;
 
 
/*******************************************/
/*******************************************/
/******   ELIMINA DATO DE LA PILA  *********/
/*******************************************/
/*******************************************/
 
 
case 3:
 
    {
 
          system ("cls");
 
 
                         if (tope==0)
                   {
 
                         p("\n\t\t NO HAY PILA QUE RETIRAR");
                          getch();
                         }
                         else
{
[b]                p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
               s("%d",&max);
               for ( max = 0; max<tope; max++);
 
               {
 
                             tope--;
                   system ("cls");
 
               p("LOS ELIMENTOS HAN SIDO ELIMINADOS");
     [/b]
                  getch();
 
 
                      }          
                     }
                    }
 
              break;
 
/*******************************************/
/*******************************************/
/********   SALE DEL PROGRMA   ***********/
/*******************************************/
/*******************************************/
 
 
case 6:
{
printf("\tSALIENDO...\n");
return 0;
}
break;
}
}
while(numero<7);
 
}
 
 
 
 


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

Desconectado Desconectado

Mensajes: 37


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

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


En línea
do-while


Desconectado Desconectado

Mensajes: 604


Cuando me afeito, recuerdo porque me dejo barba.


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

¡Buenas!

Código
    s("%d",&max);
   for ( max = 0; max<tope; max++);
 
   {
        tope--;
       system ("cls");
 
       p("LOS ELIMENTOS HAN SIDO ELIMINADOS");
 
       getch();
 
   }
 

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

¡¡¡Feliz año nuevo!!!
attackers

Desconectado Desconectado

Mensajes: 37


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

amigo ya encontre un error

Código
     {
 
          system ("cls");
 
                 if (tope==0)
                   {
 
                         p("\n\t\t NO HAY PILA QUE RETIRAR");
                          getch();
                         }
                         else {
               p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
               s("%d",&max);
 
                     system ("cls");
 
               for ( max = 0; max<tope; max++)
               {
                             tope--;
 
               p("LOS ELIMENTOS HAN SIDO ELIMINADOS");
 
 getch();
 
 
               }
 
 
                       }
                    }


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
     {
 
          system ("cls");
 
                 if (tope==0)
                   {
 
                         p("\n\t\t NO HAY PILA QUE RETIRAR");
                          getch();
                         }
                         else {
               p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
               s("%d",&max);
 
                     system ("cls");
 
               for ( max = 0; cantidad>=max; max++)
 
                {
 
               p("EL ELEMENTO %d \n", tope);
                tope--;
 
     system("pause");
 
 
 
               }
 
 
                       }
                    }

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


Desconectado Desconectado

Mensajes: 382


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

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
p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
s("%d",&max);

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

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
attackers

Desconectado Desconectado

Mensajes: 37


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

Código
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define p printf
#define s scanf
main ()
 
{
 
int arreglo[100];
 
int numero;  /*** guarda el numero ha elegir del menu **/
int tope=0;  
 
int contadorAGREGAR;   /** contador del for de agregar las pilas **/
int contadorMOSTRAR;  /** contador del for de mostrar las  pilas **/
int contadorELIMINAR;  /** contador del for para eliminar las pilas **/
 
int cantidadAGREGAR;  /** guarda la cantidad de elementos que quiero agregar **/
int cantidadELIMINAR; /** guarda la cantidad de elementos que quiero eliminar **/
 
do
 
{
 
 
 
/**COMANDO PARA CAMBIAR COLOR A LA VENTANA**/
system("color 1f");
 
/** COMANDO PARA LIMPIAR LA PANTALLA **/
system("cls");
 
/*******************************************/
/*******************************************/
/************ MENU DE OPCIONES **************/
/*******************************************/
/*******************************************/
 
p("\n\tPOR FAVOR ELIJA UNA DE LAS SIGUIENTES OPCIONES\n\n\n\n");
p("\t\t\tPILA\n");
p("\n\t1.INGRESAR UN DATO A LA PILA \n\n");
p("\t2.MOSTRAR DATOS DE LA PILA\n\n");
p("\t3.ELIMINAR DATO DE LA PILA \n\n");
p("\t4.SALIR DEL PROGRAMA \n");
 
/***********************************************/
s("%i",&numero); /** guarda el numero que el usuario elige **/
switch(numero)  
{
 
/*******************************************/
/*******************************************/
/****** AGREGAR ELEMENTO A LA PILA*********/
/*******************************************/
/*******************************************/
case 1:{
system ("cls");
 
p("CUANTOS ELEMENTOS QUIERE AGREGAR A LA PILA ");
scanf("%d", &cantidadAGREGAR);    
 
 
for( contadorAGREGAR = 1; contadorAGREGAR <= cantidadAGREGAR; contadorAGREGAR++ ){
 
p("\t INTRODIZCA EL DATO DE LA PILA NUMERO %d : ", contadorAGREGAR);
s("%i",&arreglo[tope]);    
tope++;  /** aumenta o suma 1 elemento al tope **/
 
}
}
break;
 
 
/*******************************************/
/*******************************************/
/************ MUESTRA LAS PILA **************/
/*******************************************/
/*******************************************/
case 2:
{
system ("cls");
 
      /** compara si tope es igual a 0 **/
    if ( tope==0 )
    {
         /** si la condicion se cumple se muestra que esta vacia **/
    p("\t LA PILA ESTA VACIA");
    }
 
 
    else
    {
    p("\tDATOS DE LA PILA\n\n");
 
               for(contadorMOSTRAR=0; tope>contadorMOSTRAR ;contadorMOSTRAR++)
               {
               p("\n\t%d ",arreglo[contadorMOSTRAR]);
               }
   }
}
getch();
break;
 
 
 
/*******************************************/
/*******************************************/
/******   ELIMINA DATO DE LA PILA  *********/
/*******************************************/
/*******************************************/
case 3:
 
    {
 
system ("cls");
                 if (tope==0)
                         {  
                         p("\n\t\t NO HAY PILA QUE RETIRAR");
getch();
                         }
                         else
                         {
               p("CUANTOS DATOS QUIERE QUITAR DE LA PILA \? ");
               s("%d",&cantidadELIMINAR);
 
system ("cls");
 
               for ( contadorELIMINAR= 0; contadorELIMINAR<cantidadELIMINAR; contadorELIMINAR++)
                   {
                       tope--;                
                   p("el elemento %d fue eliminado \n",tope);
 
 
getch();
               }                  
               }
               }  
              break;
 
 
 
/*******************************************/
/*******************************************/
/********   SALE DEL PROGRMA   ***********/
/*******************************************/
/*******************************************/
case 4:
{
 
printf("\tSALIENDO...\n");
 
return 0;
 
}
 
break;
}
}
 
while(numero<7);
 
}
 
 
 
 
 


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 con la la Pila (delpi)
Programación General
Riki_89D 9 1,240 Último mensaje 20 Mayo 2009, 10:35
por Riki_89D
Problema con la pila
ASM
B14573R 4 1,675 Último mensaje 12 Diciembre 2009, 10:32
por Eternal Idol
problema con pila del bios
Hardware
Aeros 10 2,177 Último mensaje 11 Julio 2010, 16:46
por simorg
Pila en C++ ¡Problema! Solucionado
Programación C/C++
¡Micronet! 2 2,791 Último mensaje 27 Octubre 2010, 04:46
por ¡Micronet!
ayuda con agregar y eliminar pila
Programación C/C++
attackers 1 816 Último mensaje 31 Octubre 2011, 02:09
por rir3760
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines