Ayuda a modificar una Pila C#

Iniciado por jacj0102, 10 Agosto 2011, 21:35 PM

0 Miembros y 1 Visitante están viendo este tema.

jacj0102

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 (csharp) [Seleccionar]
Random r = new Random();
           int n, i, a;

           n = 20;
           for (i = 1; i <= n; i++)
           {
               a = r.Next(1, 100);
               pilaPrincipal.Push(a);
               Console.WriteLine(a);
           }

           Console.WriteLine();
           Console.Write("Ingrese un numero: ");
           int b = int.Parse(Console.ReadLine());

               int palabra;
               for (byte x = 1; x < 20; x++)
               {
                   palabra = (int)pilaPrincipal.Pop();
                   if (pilaPrincipal.Contains(b))
                   {
                       palabra = 0;
                       
                   }
                   Console.WriteLine(palabra);
               }
           
           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.
"La Raiz del Estudio es Amargo, Pero el Fruto es Dulce"
"Corrige al sabio y se hara mas sabio, corrige al necio y te lo echara de enemigo"

Novlucker

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

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

neoncyber

Hola, si necesitaras la pila despues de modificar los valores, te recomendaria utilizar una pila auxiliar, aca te dejo un pseudo:

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 (csharp) [Seleccionar]

Stack<int> p1 = new Stack<int>();
Stack<int> pAux = new Stack<int>();
while(p1.Count != 0){
   int item = p1.Pop();
   pAux.Push(item == 2? 0 : item);
}
// Para voltear la pila aux en la pila de origen
while(pAux.Count != 0)
   p1.Push(pAux.Pop());


Saludos
Código (python) [Seleccionar]

#!/usr/bin/python
print "Visit:"
print "http:\\donkeysharp.blogspot.com"