Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: jacj0102 en 10 Agosto 2011, 21:35 pm



Título: Ayuda a modificar una Pila C#
Publicado por: jacj0102 en 10 Agosto 2011, 21:35 pm
Hola ante todo que tenga un buen dia. Tengo una duda del cual no puedo salir, ando intentandolo y no me resulta.
el problema es: Como modifico un dato que se encuentra dentro de una Pila, claro la pila fue llanado anteriormente por numeros aleatorios.

          
Código
  1. Random r = new Random();
  2.            int n, i, a;
  3.  
  4.            n = 20;
  5.            for (i = 1; i <= n; i++)
  6.            {
  7.                a = r.Next(1, 100);
  8.                pilaPrincipal.Push(a);
  9.                Console.WriteLine(a);
  10.            }
  11.  
  12.            Console.WriteLine();
  13.            Console.Write("Ingrese un numero: ");
  14.            int b = int.Parse(Console.ReadLine());
  15.  
  16.                int palabra;
  17.                for (byte x = 1; x < 20; x++)
  18.                {
  19.                    palabra = (int)pilaPrincipal.Pop();
  20.                    if (pilaPrincipal.Contains(b))
  21.                    {
  22.                        palabra = 0;
  23.  
  24.                    }
  25.                    Console.WriteLine(palabra);
  26.                }
  27.  
  28.            Console.Read();

como muestra en el codigo quiero buscar un dato y si se encuentra que lo cambie por el 0 en las posiciones que se encuentra, Por ejemplo cuando busco el numero 2 todos los 2 que se encuentren en la Pila se cambien por 0, no me resulta y no se como hacerlo espero me ayuden de antemano gracias.


Título: Re: Ayuda a modificar una Pila C#
Publicado por: Novlucker en 18 Agosto 2011, 05:30 am
Cual es el problema con lo que planteas? Que con pop estas extrayendo el elemento de la pila, por lo que lo más sencillo para hacerlo de manera lineal es sacar todos los datos y volverlos a poner modificados.

De cualquier modo mi sugerencia es revisar el planteo porque tu problema por sobre todo es de lógica


Saludos
 


Título: Re: Ayuda a modificar una Pila C#
Publicado por: neoncyber en 18 Agosto 2011, 05:49 am
Hola, si necesitaras la pila despues de modificar los valores, te recomendaria utilizar una pila auxiliar, aca te dejo un pseudo:
Código:
Pila p1 = LlenarAleatoriamente()
Pila pAux

While p1 no es vacia
   x = p1.Pop()
   If x es 2
      x = 0
   pAux.Push(x)

While pAux no es vacia
   p1.Push(pAux.Pop())

En C# seria algo como:

Código
  1. Stack<int> p1 = new Stack<int>();
  2. Stack<int> pAux = new Stack<int>();
  3. while(p1.Count != 0){
  4.   int item = p1.Pop();
  5.   pAux.Push(item == 2? 0 : item);
  6. }
  7. // Para voltear la pila aux en la pila de origen
  8. while(pAux.Count != 0)
  9.   p1.Push(pAux.Pop());
  10.  

Saludos