Ayuda en C# (Nivel Principiante)

Iniciado por TwisteD420, 18 Mayo 2011, 02:47 AM

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

TwisteD420

Como estan?

Veran tengo un par de dudas, actualmente estoy tratando de agregar la opcion que muestre los alumnos inscritos (nombres y nº de carnet)...

traté de elaborar un case asi:

Código (vbnet) [Seleccionar]
                   

                        case "3":
                        Console.WriteLine("Nº carnet // Nombre alumno");
                        for (i=0; i < c; i++)
                        {
                            Console.Write(carnet[i], name[i]);
                        }
                        Console.ReadLine();
                        break;


Pero solo me muestra los Nº de carnet, y no los nombres..

acaso no se puede hacer esto:

       
Código (vbnet) [Seleccionar]
                       Console.Write(carnet[i], name[i]);

????


PD: por cierto, una pregunta bastante tonta..

que quiere decir el {0}  en el siguiente codigo?

Código (vbnet) [Seleccionar]
                                Console.WriteLine("Telefono: {0}", phone[j]);

Yo siempre lo coloco antes de imprimir un array o variable.

Pero nunca supe el significado de ese "0", puede ser 1, 2, 3... etc?

Novlucker

#11
CitarPero nunca supe el significado de ese "0", puede ser 1, 2, 3... etc?
Esto es el mismo motivo por el cual solo te imprime los carnet pero no los nombres :P

El {0} puede ser 0 o 1, 2, 3 o lo que sea, y es sustituído por los parámetros que pasas en segunda intancia.
Código (csharp) [Seleccionar]
string a = "Texto_1";
string b = "Texto_2";
Console.WriteLine("Primero reemplazamos el cero por {0}, y luego el uno por {1}",a,b)

Código (dos) [Seleccionar]
Primero reemplazamos el cero por Texto_1, y luego el uno por Texto_2

Cuando intentas imprimir carnet y nombre, el primer parametro, el carnet[ i] te lo toma como string, pero el segundo lo toma como un objeto, entonces busca el {0} para sustituír por name[ i], pero como no hay simplemente no hace nada.

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

TwisteD420

Listo, ya lo pude hacer como quería ^^

me quedó algo asi:

Código (vbnet) [Seleccionar]
     case "3":
                        Console.Clear();
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("Nº carnet // Nombre de alumno");
                        Console.ForegroundColor = ConsoleColor.White;
                        for (i=0; i < c; i++)
                        {
                            Console.WriteLine("{0}          {1}", carnet[i], name[i]);
                            Console.WriteLine("");
                        }
                        Console.ReadLine();
                        break;


Muchisimas gracias por tu ayuda!

Ahorita creo que le agregaré la función de modificar datos, investigaré un poco sobre el tema porque no tengo muy claro como lo hare.

Saludos!

Edu

Es decir aca quedaria asi:

Código (csharp) [Seleccionar]

                       case "3":
                       Console.WriteLine("Nº carnet // Nombre alumno");
                       for (i=0; i < c; i++)
                       {
                           Console.Write("El carnet numero {0} pertenece a {1}",carnet[i], name[i]);
                       }
                       Console.ReadLine();
                       break;


Y si hubieras querido poner otra variable mas usarias el numero que sigue, es decir el {2}.

Pero tambien puedes hacer:

Código (csharp) [Seleccionar]

                       case "3":
                       Console.WriteLine("Nº carnet // Nombre alumno");
                       for (i=0; i < c; i++)
                       {
                           Console.Write("El carnet numero " + carnet[i].ToString() + " pertenece a " + name[i]);
                       }
                       Console.ReadLine();
                       break;


Suponiendo que carnet es un numero entonces hay que convertirlo, y que name es un string entonces no se necesita convertir.

Ahora el consejo: Esta bueno el programa, segui leyendo ese tutorial de creo.. 260 paginas xD y cuando aprendas lo de Enum te digo para que lo recuerdes al leer, intenta usarlo y mezclarlo con un array xD, eso piensalo vs xD

Krähne

#14
Hola @TwisteD420, respondiendo a tu cita:

Cita de: TwisteD420 en 24 Mayo 2011, 04:41 AM
Actualmente estoy comenzando a leer "El lenguaje de programación C#" para irme familiarizando con todo.

De nuevo, muchisimas gracias por su ayuda, a todos... En cuanto tenga tiempo libre, seguro me meto a fondo con C#, quiero aprender bastante bien ya que es el primer lenguaje de programación que uso... Después ire probando con java, pero me han dicho que necesito unas buenas bases de C# para que se me haga mas facil.

Saludos!

1) No te recomiendo que leas aquel .pdf de José Antonio González Seco, tiene MUCHOS errores, te confundirá más de lo que te ayudará; Te vendría bien un LIBRO de programación.

2) Tranquilo, estamos todos para ayudar, un gusto que te estés iniciando en programación por cuenta propia.

Bien por otro lado, luego de pensarlo bien he modificado tu código, haciéndolo mucho más compacto, entendible y sin tantos errores.

Pero ahora no sé si dejarte el código ya que, te dejé el pasado y creo que no lo leíste si quiera, de todos modos aquí te dejo el compilado (.exe) para que revises como ha quedado luego de la modificación que le he hecho.

Ojo, si dudas de algún tipo de infección puedes analizarlo bien sea con tu antivirus, o online en virustotal.com.

Si luego de ver como ha quedado la aplicación (A mi parecer con un margen de error bastante bajo y una estética en comparación al que tienes hecho bastante alta) te gusta, o quisieras saber cómo he hecho alguna que otra cosa, avísame por aquí mismo y te dejo el código con comentarios en cada línea para que vayas entendiendo alguna que otra función que de seguro te servirá.

Una previa de como luce la aplicación:



Gruß.
________________________________

Edito:
Por si desconfías, prefiero dejarte el código sin comentarlo por si quieres analizarlo tu mismo, cualquier cosa ya sabes, puedes publicar tus dudas en el foro.

Puedes ver el código online aquí.

Te pido reconsideres si vas a ignorar mi respuesta, venga que invertí unas dos horas para ayudarte, no sería muy cortés que digamos el hecho de no prestar atención a las 501 líneas que (Con gusto claro...) he modificado para tu provecho.
Yo soy más sabio que este hombre; es posible que ninguno de los dos sepamos cosa que valga la pena, pero él cree que sabe algo, pese a no saberlo, mientras que yo, así como no sé nada, tampoco creo saberlo. Yo no tengo conciencia de saber nada.

Novlucker

Y ahora mi crítica :xD
No le hagas caso Krähne en cuanto a las etiquetas y los goto, esos son de otra epoca y vaya a saber el motivo por el cual siguen estando en C# :xD

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

Edu

Yo pense lo mismo, pero que otra forma mas facil de hacer lo de verificar cada dato que ingresa que con un goto?

Krähne

Cita de: Novlucker en 26 Mayo 2011, 03:04 AM
Y ahora mi crítica :xD
No le hagas caso Krähne en cuanto a las etiquetas y los goto, esos son de otra epoca y vaya a saber el motivo por el cual siguen estando en C# :xD

Saludos

Ya interesante, se pueden usar los do-while, o los if... pero, con un goto sería más práctico, si bien... fue solo mi ejemplo, pueden modificarlo a sus necesidades/gustos como he dicho.
Yo soy más sabio que este hombre; es posible que ninguno de los dos sepamos cosa que valga la pena, pero él cree que sabe algo, pese a no saberlo, mientras que yo, así como no sé nada, tampoco creo saberlo. Yo no tengo conciencia de saber nada.

[D4N93R]

En el Console.Write, en vez de usar espacios para el padding.. puedes usar la posición del cursor.. Es más práctico y fácil :)

TwisteD420

Como estan! Como siempre agradeciendo a todos por su ayuda, me ha sido MUY util, les vengo a dejar la ultima adición que le hice a mi "programita", este le brinda al usuario la posibilidad de modificar los datos a la hora de buscarlos, aqui les dejo el código:


Este es la opción 2 del menú general.

           Console.WriteLine("*Ingrese 2 para buscar alumno");


Código (vbnet) [Seleccionar]
case "2":
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Clear();
                        Console.WriteLine("Escriba el Nº de carnet");
                        search = Console.ReadLine();
                        Console.Clear();
                        int j = 0;
                        bool find = false;
                        while (j < carnet.Length && find == false)
                        {
                            if (search == carnet[j])
                            find = true ;   

                            else
                           
                                j++;

                        }
                        if (find == false)
                        {
                               Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("El numero de Carnet ingresado no existe");
                                Console.ReadLine();
                                Console.Clear();
                        }
                        else
                        {
                                Console.ForegroundColor = ConsoleColor.Cyan;
                                Console.WriteLine("Nº de carnet: {0}", carnet[j]);
                                Console.WriteLine("Nombre: {0}", name[j]);
                                Console.WriteLine("Fecha de nacimiento: {0}", date[j]);
                                Console.WriteLine("Telefono: {0}", phone[j]);
                                Console.WriteLine("");

                                Console.ForegroundColor = ConsoleColor.White;
                                Console.WriteLine("¿Desea realizar un cambio?");
                                Console.WriteLine ("<S/N>");
                                string modans = Console.ReadLine();
                                while (modans == "s")
                                {
                                    Console.Clear();
                                    Console.ForegroundColor = ConsoleColor.White;
                                    Console.WriteLine("Ingrese el Nº del campo que desea modificar");
                                    Console.WriteLine("");
                                    Console.ForegroundColor = ConsoleColor.DarkCyan;
                                    Console.WriteLine("1* Nº Carnet");
                                    Console.WriteLine("2* Nombre");
                                    Console.WriteLine("3* Fecha de Nacimiento");
                                    Console.WriteLine("4* Telefono");

                                    string modopt = Console.ReadLine();

                                    switch (modopt)
                                    {

                                    case "1":
                                            Console.Clear();
                                            Console.ForegroundColor = ConsoleColor.Green;
                                            Console.WriteLine("Ingrese el nuevo Nº de Carnet");
                                            Console.ForegroundColor = ConsoleColor.White;
                                            string newcarnet = Console.ReadLine();
                                            carnet[j] = newcarnet;
                                            break;
                                    case "2":
                                            Console.Clear();
                                            Console.ForegroundColor = ConsoleColor.Green;
                                            Console.WriteLine("Ingrese el nuevo Nombre");
                                            Console.ForegroundColor = ConsoleColor.White;
                                            string newname = Console.ReadLine();
                                            name[j] = newname;
                                            break;

                                     case "3":
                                            Console.Clear();
                                            Console.ForegroundColor = ConsoleColor.Green;
                                            Console.WriteLine("Ingrese la fecha de nacimiento correcta");
                                            Console.ForegroundColor = ConsoleColor.White;
                                            string newdate = Console.ReadLine();
                                            date[j] = newdate;
                                            break;

                                        case "4":
                                            Console.Clear();
                                            Console.ForegroundColor = ConsoleColor.Green;
                                            Console.WriteLine("Ingrese el nuevo Nº de Telefono");
                                            Console.ForegroundColor = ConsoleColor.White;
                                            string newphone = Console.ReadLine();
                                            phone[j] = newphone;
                                            break;


                                    }

                                    Console.ForegroundColor = ConsoleColor.Cyan;
                                    Console.WriteLine("");
                                    Console.WriteLine("¿Desea realizar otra modificación?");
                                    Console.WriteLine("<S/N>");
                                    modans = Console.ReadLine();


                                }
                        }
                           
                        break;




Cita de: [D4N93R] en 26 Mayo 2011, 21:17 PM
En el Console.Write, en vez de usar espacios para el padding.. puedes usar la posición del cursor.. Es más práctico y fácil :)

No estoy muy seguro de como hacer eso, si podrias explicarte un poco mas de forma resumida te lo agradecería mucho.

Krähne:
Fíjate que no logre ejecutar el codigo que me pasaste.
Me sale un error de unicode, tengo Visual Studio 2005, no se si eso será el motivo.


Saludos!