Ej 2 Busqueda y Ord

mail@pastecode.io avatar
unknown
csharp
25 days ago
4.9 kB
8
Indexable
Never
class Program2
    {

        static int Buscar(int[] arr, int n)
        {
            int len = arr.Length;
            int pos = -1;
            int i = 0;

            while (i < len && pos < 0)
            {
                if (arr[i] == n)
                {
                    pos = i;
                }
                i++;
            }

            return pos;

        }
        static int Insertar(int[] arr, int n)
        {
            int len = arr.Length;
            int i = len-1;
            int pos = -1;

            while (i >= 0 && pos < 0)
            {
                if ((arr[i] != 0 && i<len-1))
                {
                    arr[i+1] = n;
                    pos = i+1;
                }else if((i == 0 && arr[i] == 0))
                {
                    arr[i] = n;
                    pos = i;
                }
                i--;
            }

            return pos;
        }

        static void getEstrenos(int[] pelisEstreno, char[] esEstreno, int[] codPelicula, int CANT_PELICULAS)
        {

            for (int i = 0; i < CANT_PELICULAS; i++)
            {
                pelisEstreno[i] = 0; //lo llenamos de 0s para que este "vacio"
            }

            for (int i = 0; i < CANT_PELICULAS; i++)
            {
                if (esEstreno[i] == 'S')
                {
                    Insertar(pelisEstreno, codPelicula[i]);  //recorremos el array de estrenos, si es estreno agregamos el codigo correspondiente
                }
            }
        }

        static void Main()
        {
            const int CANT_PELICULAS = 3;

            int[] codPelicula = new int[CANT_PELICULAS];
            float[] precioPel = new float[CANT_PELICULAS];
            char[] esEstreno = new char[CANT_PELICULAS];

            for(int i = 0; i < CANT_PELICULAS; i++)
            {
                Console.WriteLine("Ingrese codigo de pelicula: ");
                codPelicula[i] = int.Parse(Console.ReadLine());
                Console.WriteLine("Ingrese precio de la pelicula: ");
                precioPel[i] = float.Parse(Console.ReadLine());
                Console.WriteLine("Es estreno?(S/N) ");
                esEstreno[i] = char.Parse(Console.ReadLine().ToUpper());

                if(esEstreno[i] != 'S' && esEstreno[i] != 'N')
                {
                    esEstreno[i] = 'N';
                } 
            }

            //a
            int[] pelisEstreno = new int[CANT_PELICULAS]; //creamos el vector con el tamaño máximo posible
            getEstrenos(pelisEstreno, esEstreno, codPelicula, CANT_PELICULAS);

            //Imprimimos
            string estrenos = "";
            int j = 0;
            while(j<CANT_PELICULAS && pelisEstreno[j] != 0)
            {
                estrenos += "\n\t-" + pelisEstreno[j];
                j++;
            }
            Console.WriteLine("Peliculas de estreno:" + estrenos+"\n");



            //b          
            Console.WriteLine("Ingrese pelicula a actualizar: (0 para salir)");
            int codPeliculaCambio = int.Parse(Console.ReadLine());
            while(codPeliculaCambio != 0) { 
                int pos = Buscar(codPelicula, codPeliculaCambio);
                if(pos == -1)
                {
                    Console.WriteLine("No se encontro la pelicula");
                }
                else
                {
                    esEstreno[pos] = 'N';
                    precioPel[pos] *= 0.8f;
                }
                Console.WriteLine("Ingrese pelicula a actualizar: (0 para salir)");
                codPeliculaCambio = int.Parse(Console.ReadLine());
            }

            getEstrenos(pelisEstreno, esEstreno, codPelicula, CANT_PELICULAS);

            estrenos = "";
            j = 0;
            while (j < CANT_PELICULAS && pelisEstreno[j] != 0)
            {
                estrenos += "\n\t-" + pelisEstreno[j];
                j++;
            }
            Console.WriteLine("Peliculas de estreno actualizadas:" + estrenos + "\n");

            string vectorPeliculas = "\n\t[" + codPelicula[0];
            string vectorPrecios = "\n\t[" + precioPel[0];
            string vectorEstrenos = "\n\t[" + esEstreno[0];

            for (int i = 1; i < CANT_PELICULAS; i++)
            {
                vectorPeliculas += " , " + codPelicula[i];
                vectorPrecios += " , " + precioPel[i];
                vectorEstrenos += " , " + esEstreno[i];
            }

            vectorPeliculas += "]";
            vectorPrecios += "]";
            vectorEstrenos += "]";

            Console.WriteLine("Vectores actualizados:" + vectorPeliculas + vectorPrecios + vectorEstrenos);
            Console.ReadKey();

        }
    }