[ Foro de C# ]

Ayuda con un Ejercicio D - No todas las rutas devuelven un valor

29-Nov-2015 14:25
Aiko Gonzalez
1 Respuestas

Este es mi ejercicio es tema de reservado de asientos en un esenario.
Me salta un error queno lo entiendo porque antes me andaba perfecto y me reservaba la matriz y ahora nop D=
Error 1 'prueba_obli_2.prueba_obli_2.Program.CedulaG(int)': no todas las rutas de código devuelven un valor 2

y Soy nuevo en esto xD

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace prueba_obli_2
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
 
    namespace prueba_obli_2
    {
        class Program
        {
 
            static string[] vip = new string[9];
            static string[,] general = new string[9, 9];
            static string[] cedulaVip = new string[9];
            static int[,] cedulaGeneral = new int[9, 9];
 
            static void ConsultaV(string value)
            {
                if (CedulaV(value))
                {
                    Console.WriteLine("Error, CI ya registrada");
                }
            }
 
            static bool CedulaV(string Value)
            {
                int i;
                for (i = 0; i < cedulaVip.Length; i++)
                {
                    if (Value == cedulaVip[i])
                    {
 
                        return true;
                    }
                    else { cedulaVip[i] = Value; }
                }
 
                return false;
            }
            static void ConsultaG(int value)
            {
                if (CedulaG(value))
                {
                    Console.WriteLine("Error, CI ya registrada");
                }
            }
            static bool CedulaG(int Value)
            {
                for (int i = 0; i < cedulaGeneral.GetLength(0); i++)
                {
                    for (int j = 0; j < cedulaGeneral.GetLength(1); j++)
                    {
                        if (Value == cedulaGeneral[i, j])
                        {
                            return true;
                        }
                        else { cedulaGeneral[i, j] = Value; }
 
 
                        return false;
                    }
                }
 
            }
 
 
            private static void VentaEntrada()
            {
                Console.WriteLine("Ingrese el sector deseado: ");
                Console.WriteLine("A - VIP");
                Console.WriteLine("B - General");
                string opcion = Console.ReadLine();
                switch (opcion.ToUpper())
                {
                    case "A":
                        {
                            Console.ForegroundColor = ConsoleColor.Gray;
                            Console.WriteLine("********************************************************");
                            Console.WriteLine("\t" + "\t" + "\t" + "Escenario" + "\t" + "\t");
                            Console.WriteLine("********************************************************");
                            Console.WriteLine("");
                            Console.WriteLine("Sector VIP");
                            Console.WriteLine("");
 
                            for (int i = 0; i < vip.Length; i++)
                            {
                                if (vip[i] == null)
                                    Console.ForegroundColor = ConsoleColor.Blue;
                                else
                                    Console.ForegroundColor = ConsoleColor.Red;
 
                                Console.Write("\t" + Convert.ToChar(i + 65) /*+ "\t"*/);
                            }
                            Console.WriteLine("\n");
                            string fila;
                            for (int countA = 0; countA < general.GetLength(0); countA++)
                            {
 
                                for (int countB = 0; countB < general.GetLength(1); countB++)
                                {
                                    if (general[countA, countB] == null)
                                    {
                                        Console.ForegroundColor = ConsoleColor.Green;
                                        fila = "\t" + (countA + 1) + "-" + (countB + 1);
                                    }
                                    else
                                    {
                                        Console.ForegroundColor = ConsoleColor.Red;
                                        fila = "\t" + (countA + 1) + "-" + (countB + 1);
 
                                    }
                                    Console.Write(fila);
                                }
 
                                Console.WriteLine("\n");
                            }
 
                            //Venta
 
                            Console.ForegroundColor = ConsoleColor.Gray;
                            Console.Write("Elija el asiento: ");
                            string asiento = Console.ReadLine().ToUpper();
                            int asie = Convert.ToInt32(Convert.ToChar(asiento) - 65);
                            Console.Write("Ingrese cedula: ");
                            string cedulaV = Console.ReadLine();
 
                            while (CedulaV(cedulaV))
                            {
                                Console.WriteLine("Error, CI ya registrada");
                                Console.Write("Ingrese cedula: ");
                                cedulaV = Console.ReadLine();
                            }
 
 
 
                            Console.Write("El asiento reservado es:" + asiento + " y el precio es de 2000 $U. Esta seguro que desea hacer la compra?  Y/N ... ");
                            string decision = Console.ReadLine();
                            if (decision.ToLower().CompareTo("y") == 0)
                            {
                                vip[Convert.ToChar(Convert.ToInt32(asie))] = asiento;
                                Console.WriteLine("Su compra fue exitosa");
 
                            }
                            else if (decision.ToLower().CompareTo("n") == 0)
                            {
                                Console.WriteLine("Ha sido cancelada");
                            }
                            else
                            {
                                //a procesar.....
                            }
                            break;
                        }
 
                    case "B":
                        {
                            Console.ForegroundColor = ConsoleColor.Gray;
                            Console.WriteLine("********************************************************");
                            Console.WriteLine("\t" + "\t" + "\t" + "Escenario" + "\t" + "\t");
                            Console.WriteLine("********************************************************");
                            Console.WriteLine("");
                            Console.WriteLine("Sector General");
                            Console.WriteLine("");
                            for (int i = 0; i < vip.Length; i++)
                            {
                                if (vip[i] == null)
                                    Console.ForegroundColor = ConsoleColor.Blue;
                                else
                                    Console.ForegroundColor = ConsoleColor.Red;
 
                                Console.Write(Convert.ToChar(i + 65) + "\t");
                            }
                            string fila;
                            for (int countA = 0; countA < general.GetLength(0); countA++)
                            {
 
                                for (int countB = 0; countB < general.GetLength(1); countB++)
                                {
                                    if (general[countA, countB] == null)
                                    {
                                        Console.ForegroundColor = ConsoleColor.Green;
                                        fila = "\t" + (countA + 1) + "-" + (countB + 1);
                                    }
                                    else
                                    {
                                        Console.ForegroundColor = ConsoleColor.Red;
                                        fila = "\t" + (countA + 1) + "-" + (countB + 1);
 
                                    }
                                    Console.Write(fila);
                                }
 
                                Console.WriteLine("\n");
                            }
 
 
 
                            //Venta
                            Console.ForegroundColor = ConsoleColor.Gray;
                            for (int CounA = 0; CounA < general.GetLength(0); CounA++)
                            {
                                for (int CounB = 0; CounB < general.GetLength(1); CounB++)
                                {
                                    if (general[CounA, CounB] != null)
                                    {
                                        Console.WriteLine("El asiento esta reservado.Vuelva elegir las opciónes");
                                    }
                                    else
                                    {
                                        Console.ForegroundColor = ConsoleColor.Gray;
                                        Console.Write("Elija la fila: ");
                                        int counA = Convert.ToInt32(Console.ReadLine());
                                        Console.Write("Elija la Columna: ");
                                        int counB = Convert.ToInt32(Console.ReadLine());
                                        int asiento = counA + counB;
                                        Console.Write("Ingrese cedula: ");
                                        int cedulaG =Convert.ToInt32(Console.ReadLine());
 
                                        while (CedulaG(cedulaG))
                                        {
                                            Console.WriteLine("Error, CI ya registrada");
                                            Console.Write("Ingrese cedula: ");
                                            cedulaG = Convert.ToInt32(Console.ReadLine());
                                        }
 
                                        Console.Write("El asiento reservado es:" + asiento + " y el precio es de 750 $U. Esta seguro que desea hacer la compra?  Y/N ... ");
                                        Console.ReadLine();
                                        string decision = Console.ReadLine();
                                        if (decision.ToLower().CompareTo("y") == 0)
                                        {
 
                                            Console.WriteLine("Su compra fue exitosa");
 
                                        }
                                        else if (decision.ToLower().CompareTo("n") == 0)
                                        {
                                            Console.WriteLine("Ha sido cancelada");
                                        }
                                        else
                                        {
                                            //a procesar...
                                        }
                                        break;
                                    }
                                }
 
 
                                //Console.Write("Ingrese cedula: ");
 
 
 
                                ////Reserva de la cedula
                                //string cedula = Console.ReadLine();
                                //while (Cedula(cedula))
                                //{
                                //    Console.WriteLine("Error, CI ya registrada");
                                //    Console.Write("Ingrese cedula: ");
                                //    cedula = Console.ReadLine();
                                //}
                                //Console.ReadLine();
                                break;
                            }
 
                        }
                        Console.ForegroundColor = ConsoleColor.Gray;
                        break;
                }
            }
 
            public static void Invertida()
            {
 
                {
 
                    //******************* despliego la matriz invertia *****************************
                    string fila;
                    for (int countA = general.GetLength(0); countA > 0; countA--)
                    {
 
                        for (int countB = general.GetLength(1); countB > 0; countB--)
                        {
                            if (general[countA - 1, countB - 1] == null)
                            {
                                Console.ForegroundColor = ConsoleColor.Green;
                                fila = "\t" + (countA) + "-" + (countB);
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                fila = "\t" + (countA) + "-" + (countB);
 
                            }
                            Console.Write(fila);
                        }
 
                        Console.WriteLine("\n");
                    }
                    //******************* despliego la matriz derecha  *****************************
 
                    //for (int countA = 0; countA < general.GetLength(0); countA++)
                    //{
 
                    //    for (int countB = 0; countB < general.GetLength(1); countB++)
                    //    {
                    //        if (general[countA, countB] == null)
                    //        {
                    //            Console.ForegroundColor = ConsoleColor.Green;
                    //            fila = "\t" + (countA + 1) + "-" + (countB + 1);
                    //        }
                    //        else
                    //        {
                    //            Console.ForegroundColor = ConsoleColor.Red;
                    //            fila = "\t" + (countA + 1) + "-" + (countB + 1);
 
                    //        }
                    //        Console.Write(fila);
                    //    }
 
                    //    Console.WriteLine("\n");
                    //}
                    //inversa de la VIP
                    string aux;
                    for (int rev = 0; rev < vip.Length / 2; rev++)
                    {
                        aux = vip[rev];
                        vip[rev] = vip[vip.Length - 1 - rev];
                        vip[vip.Length - 1 - rev] = aux;
                    }
                    for (int i = 0; i < vip.Length; i++)
                    {
 
                        if (vip[i] == null)
                            Console.ForegroundColor = ConsoleColor.Blue;
                        else
                            Console.ForegroundColor = ConsoleColor.Red;
 
                        Console.Write(Convert.ToChar(i + 65) + "\t");
                    }
 
                }
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine("        " + "********************************************************");
                Console.WriteLine("\t" + "\t" + "\t" + "Escenario" + "\t" + "\t");
                Console.WriteLine("********************************************************");
            }
 
            static void Main(string[] args)
            {
                int opcion;
                bool salir = false;
                int pos = -1;
                while (!salir)
                {
                    Console.Clear();
                    Console.Write("Bienvenido al sistema de venta de entradas de Musica & Cia.\n");
                    Console.WriteLine("1-Venta de entradas");
                    Console.WriteLine("2-Venta Express");
                    Console.WriteLine("3-Invertir Escenario");
                    Console.WriteLine("4-Total Recaudado");
                    Console.WriteLine("5-Salir");
                    Console.Write("Por favor, ingrese la opción deseada: ");
                    opcion = Convert.ToInt32(Console.ReadLine());
                    switch (opcion)
                    {
                        case 1:
                            {
                                VentaEntrada();
                                break;
                            }
 
                        case 2:
                            {
                                for (int i = 0; i < vip.Length; i++)
                                {
                                    if (vip[i] == null)
                                    {
                                        for (int Posf = 0; Posf < general.GetLength(0); Posf++)
                                        {
                                            for (int Posc = 0; Posc < general.GetLength(1); Posc++)
                                            {
                                                if (Posf == pos && Posc == pos)
                                                {
                                                    Console.WriteLine("No hay asientos disponibles");
                                                }
                                                else
                                                {
                                                    Console.Write("Ingrese cedula: ");
                                                    string cedulaV = Console.ReadLine();
 
                                                    while (CedulaV(cedulaV))
                                                    {
                                                        Console.WriteLine("Error, CI ya registrada");
                                                        Console.Write("Ingrese cedula: ");
                                                        cedulaV = Console.ReadLine();
                                                    }
 
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        Console.Write("Ingrese cedula: ");
                                        int cedulaG = Convert.ToInt32(Console.ReadLine());
 
                                        while (CedulaG(cedulaG))
                                        {
                                            Console.WriteLine("Error, CI ya registrada");
                                            Console.Write("Ingrese cedula: ");
                                            cedulaG = Convert.ToInt32(Console.ReadLine());
                                        }
                                        Console.ReadLine();
                                    }
                                }
 
                            }
                            break;
                        case 3:
                            {
                                Invertida();
                                break;
                            }
                        case 4:
                            {
 
                                //int x = 0;
                                //int bandera = -1;
                                //while (x < vip.Length)
                                //{
                                //    if (asiento == vip[x])
                                //    {
                                //        bandera = x;
                                //        x = vip.Length;
                                //    }
                                //    x++;
                                //}
                                //if (bandera == -1)
                                //{
                                //    Console.WriteLine("");
                                //}
                                //else
                                //{
                                //    int resultado;
                                //    resultado = bandera * 2000;
                                //    Console.WriteLine(resultado);
                                //}
                                break;
                            }
                        case 5:
                            Console.WriteLine("Gracias por su compra");
                            salir = true;
                            break;
                        default:
                            Console.WriteLine("Opcion no valida");
                            break;
                    }
                    Console.ReadLine();
 
                }
            }
 
        }
 
    }
}
 


 


05-Dec-2015 13:16
Nacho Cabanes (+30)

Lo ideal es que, en vez de incluir todo el código, lo limites a la parte que da problemas. Ayudará a detectar errores con más facilidad. En tu caso, el problema está aquí:

 
static bool CedulaG(int Value) 
{ 
   for (int i = 0; i < cedulaGeneral.GetLength(0); i++) 
   { 
       for (int j = 0; j < cedulaGeneral.GetLength(1); j++) 
       { 
           if (Value == cedulaGeneral[i, j]) 
           { 
               return true; 
           } 
           else { cedulaGeneral[i, j] = Value; } 
 
 
           return false; 
       } 
   } 
 
} 
 


La idea es que un "for" es una estructura que podría no llegar a ejecutarse si la condición de repetición no se cumpliese al principio. Por eso, tu función necesita un "return" al final, de modo que siempre se devuelva algo. De hecho, el haber puesto el "return false" tan arriba hace que tengas también un "warning" de código inaccesible, porque sólo se dará una primera pasada al "for" interior:

 
static bool CedulaG(int Value) 
{ 
   for (int i = 0; i < cedulaGeneral.GetLength(0); i++) 
   { 
       for (int j = 0; j < cedulaGeneral.GetLength(1); j++) 
       { 
           if (Value == cedulaGeneral[i, j]) 
           { 
               return true; 
           } 
           else { cedulaGeneral[i, j] = Value; } 
       } 
   } 
   return false; 
} 
 


 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)