lunes, 19 de abril de 2010

Practica Estructura de Datos (Arreglos)

Ingenieros, aqui les he dejo un ejemplo que hace poco hice, el mismo tiene el principio del programa que ustedes deben de hacer, si lo leen y estudian bien, se daran cuenta de que las demas opciones seran casi las mismas. Deben de saber que por el hecho de que ho se lo haya hecho quiere decir que ninguno de ustedes deberan llevar uno igual a este. La idea es que tengan luz de como deben de trabajar.

using System;
using System.Collections.Generic;
using System.Text;

namespace RegistroCalificaciones
{
class Program
{
static void Main(string[] args)
{
//Entonces en su metodo static Main pueden tener sus operaciones de la siguiente forma

string[,] mat1; // declaracion del arreglo

int f1, c1; // El número de filas y columnas del arreglo

//Aqui Llaman al menu y recojen la opción seleccionada
byte opcion;
do
{
opcion = menu();
} while (opcion >= 5);

switch (opcion)
{
case 1: // Registro de estudiantes

// Leemos el número de filas y columnas de la matriz
Console.WriteLine("Introduzca el número de filas de la matriz");
f1 = int.Parse(Console.ReadLine());
Console.WriteLine("Introduzca el número de columnas de la matriz");
c1 = int.Parse(Console.ReadLine());

// Pedimos los datos de filas y columnas
Console.WriteLine("Introduzca los datos de los estudiantes: Nombres y Notas");
mat1 = leer(f1, c1);
Console.Clear();
Main(null);

//Aqui si quieren imprimen en pantalla los datos que introdueron en el arreglo
/*Para mas utilidad en vez de imprimir la matriz directamente crean un metodo

que se llame imprimir y que el mismo espere una matriz*/

break;



case 2: // Segunda Opcion
Console.WriteLine("Metan mano de aqui pa lante, ya lo ma fuerte esta hecho");
break;



//Tercera opcion
default: //Aqui iria cualquier otro desnivel que quieran controlar
break;
}
Console.ReadKey();
}

// Mas o menos pueden hacer un menu que tenga vida pripia, es decir un metodo, asi:
public static byte menu()
{
try {
byte opcion;
Console.SetCursorPosition(10,1);
Console.WriteLine("Sistema de Registro de Notas");
Console.SetCursorPosition(0,3);
Console.WriteLine("Elija la operación que quiere hacer:");
Console.WriteLine("1 - Registrar Estudiantes");
Console.WriteLine("2 - Registrar Notas");
Console.WriteLine("3 - Imprimir Notas con Promedio");

opcion = byte.Parse (Console.ReadLine());

if (opcion >=1 && opcion <=3) {
Console.Clear();
return opcion;
}
else {
Console.Clear();
return 5;
}
}

catch { //En caso de error
Console.Clear();
return 5;
}
}

// Función que lee los datos de la matriz
public static string[,] leer(int filas, int columnas)
{
string[,] ret = new string[filas, columnas];
for (int fila = 0; fila < filas; fila++)
{
for (int columna = 0; columna < columnas; columna++)
{
ret[fila, columna] = Console.ReadLine();
}
}
return ret;
}
}
}

22 comentarios:

  1. Recuerden, NO deberán copiar y pegar este ejercicio, la idea que quiero transmitir es la de el principio de utilización de métodos con matrices lo que les servirá de mucho más que ayuda.

    ResponderBorrar
  2. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  3. Hubo una estudiante que me pregunto como poner el menú en una sola línea, creo que la pregunta es válida. Para ese caso solo bastaria con usar Wirte en vez de WriteLine y colocar los textos en la parte que deseen de la pantalla.

    Otra forma super simple sería hacerlo todo en una sola línea utilizando secuencias de escape, por ejemplo:

    Console.WriteLine("Sistema de Calificaciones \r\n Opcion1 \t Option2 \t Option3");

    ResponderBorrar
  4. teacher yo lo estoy haciendo solo con arraylist
    me falta calcular el promedio

    ResponderBorrar
  5. profe necesito hacerle varias preguntas, tengo mucha duda y mi grupo y yo necesitamos saber si el ejemplo que yo le mande por correo, tiene algo bien, porque algo que no entendemos s sobre el ejemplo que usted pone aqui en el blog sobre matrices, porque usted nos dijo que lo podiamos hacer con ArrayList, List, estamos un poco perdida y queremos saber que podemos hacer. por favor digame algo .

    ResponderBorrar
  6. En el curso que les dije que la practica es para hacerse con COLECCIONES, eso quiere decir que pueden usar cualquiera de las clases vistas en el curso: ArrayList, List, etc, o Arreglos.

    Me parece que su confusión viene porque cree que los Arreglos no son colecciones o quizas piensa que un arreglo es un vector y que una matriz es otra cosa; NO, una matriz son dos vectores (si es escalonada cada elemento sera dos vectores mas) y por tanto los terminos estan 100% asociados con Colecciones.

    El ejemplo aqui dado con arreglos lo he hecho con la mejor de las intenciones, para que aprendan a programar haciendo los objetos reutilizables o dinamicos, otra cosa es que a ese ejemplo le falta muy poco para cumplir con lo de la practica. Si no es de su agrado NO tienen que hacerlo asi, hay muchisimas formas de hacerlo utilizando colecciones.

    Nota: DEBEN LEER COLECCIONES NUEVA VEZ.

    ResponderBorrar
  7. profe...podemos completar el programa con partes de su ejemplo?...

    ResponderBorrar
  8. Como les dije antes, puede tomar la idea. Resuelvan.

    ResponderBorrar
  9. profesor necesito saber como puedo poner para el programa de fabricacelulares, que cuando iniciel el programa le de la opcion al usuario que lo utilizara, buscar el cel que desea visualizar, claro esta en console

    ResponderBorrar
  10. Al parecer usted madrugó hoy...que bueno.
    Antes de responderte eso te aclarare que no es el celular en si que fabricaras, sino el o los softares de celulares. Acerca de tu pregunta noto que lo que quieres hacer es un menu de opciones, para ello tambien utilizaras las colecciones que desees, en este mismo tema (practica estructuras de datos) esta eso resuelto, lea mas arriba y vera la respuesta, si quiere copie y pegue el menu de opciones que arriba muestro y vera que es un menu totalmente funcional. De ahi en adelante siga trabajando.

    ResponderBorrar
  11. ok , se que no es un celular pero lo que tratare de hacer es un menu de opiones como ya usted lo dijo, donde el usuario podra seleccionar el software del cel que desee y que este incluido en el programa

    ResponderBorrar
  12. bueno con el ejemplo que dio de mas arriba ya entendi como hare las opciones gracias profesor

    ResponderBorrar
  13. Profesor este programa es mas o menos lo que se requiere para la practica final...es COMUNICACION DEL CELULAR A LA PC.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;

    namespace ConsoleApplication1
    {
    class Program
    {
    // define the URL to send an SMS
    const string ACCESS_KEY = "568d6a389aa";
    const string MESSAGE = "Hello+World";
    const string TO_PHONE_NUMBER = "33612345678";
    const string URL = "http://sms.alpha.orange-api.net/sms/sendSMS.xml?
    id="+ACCESS_KEY+"&to="+TO_PHONE_NUMBER+"&content="+MESSAGE;
    static void Main(string[] args)
    {
    // XmlDocument allowed to query a xml document with xpath expression
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(URL);
    Console.WriteLine("Status Message=" + xmldoc.SelectSingleNode
    ("/response/status/status_msg").InnerText);
    }
    }
    }

    private void UpdateSMSList() {
    string sbj; // Email subject
    string[] sbjw; // the words of the email subject
    int nsm; // number of email
    SMS sm; // SMS content, date, phone number

    listSMS.Clear(); // clear the arraylist of SMS
    // get and parse the email lists
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(URL_GET_MAIL_LIST);
    XmlNodeList nodes = xmldoc.SelectNodes("/response/list/message");
    // loop on each message
    foreach (XmlNode node in nodes) {
    sbj = node.SelectSingleNode("subject").InnerText;
    sbjw = sbj.Split(' ');
    if (sbjw.Length >= 3)
    {
    if ((sbjw[0] == "Sms") &
    (sbjw[1] == "from")) // this email is a forwarded SMS
    {
    sm = new SMS();
    sm.phoneSender = sbjw[2]; // phone number of the SMS sender
    nsm = Convert.ToInt32(node.SelectSingleNode("number").InnerText);
    xmldoc.Load(URL_GET_MAIL+nsm); // get the body of the
    // nsm email (i.e. content of the SMS)
    sm.content = xmldoc.SelectSingleNode
    ("/response/message/body").InnerText;
    sm.date = xmldoc.SelectSingleNode
    ("/response/message/date").InnerText;
    listSMS.Add(sm); // add the SMS to the arraylist
    }
    }
    }

    ResponderBorrar
  14. Hola yo tambien estoy estoy haciendo la practica de estructura que nos dejo el profesor y vi ese mismo ejemplo en la url: http://www.codeproject.com/KB/webservices/OrangeSmsApi2.aspx
    Ese ejemplo no tiene nada que ver con lo que el profesor dejo de practica.

    ResponderBorrar
  15. Saludos a todos, con respecto a la práctica de estructura les repito que lo único que haran es lo básico del menú de un celular como: Agenda, Bandeja entrada y salida de mensajes, etc., nada que ver con la parte de comunicación, NADA. Toda la logística de almacenamiento se basará en colecciones como las que ya han visto en clases anteriores. Desde allí se podrá hacer búsquedas, agregar, eliminar, editar, etc. Pueden simular envio de mensajes y recepción de los mismos, pero NO me interesa la parte de comunicación real. Me interesa el manejo de COLECCIONES.

    ResponderBorrar
  16. hey hola como esta prof. Me gustaria saber como puedo recorrer las columnas de un datagridview para guardar los datos introducidos en ellos Espero su Respuestas!!!!!

    ResponderBorrar
  17. Como yo le dije en la universidad a usted, recorrer un grid es exactamente lo mismo que recorrer cualquier otra coleccion, ya que es un conjunto de filas y columnas. Se puede recorrer tanto con un for como con un foreach:

    Ej.:
    foreach (DataGridViewRow fila in DataGridView1.Rows)
    {
    if (fila.Selected == true)
    {
    //Codigos xxxxxxxxxx
    }
    }

    o con For

    for(int i=0; i<DataGridView1.Rows.Coun;i++)
    {
    if(DataGridView1.Rows[i].Selected == true)
    {
    //Codigo xxxxxxxxxxxxxxxxx
    }
    }

    ResponderBorrar
  18. ok habia visto ejemplos parecidos a este inplementare uno de estos bucles....Gracias.. y refiriemdome a la cuestion del metodo sort() de una lista<> implemte este ejemplo y vere ke el sort() ejecuta un orden diferente al que suspuestamente deveria de hacer

    List colores = new List();

    colores.Add("Blanco");
    colores.Add("Amarrillo");
    colores.Add("Azul");
    colores.Insert(1, "Negro");

    foreach (string joomla in colores)
    {
    Console.WriteLine(joomla);
    }
    colores.Sort();
    Console.WriteLine("");
    Console.WriteLine("");
    foreach (string joomla in colores)
    {
    Console.WriteLine(joomla);

    }

    Console.ReadKey();

    echele un vistaso solo te tomara 1 minuto.....
    Wrote by leudi

    ResponderBorrar
  19. el tipo de la lista no salio creeo ke por culpa de editor de texto del blog voy aver si engaño el editor estes
    List string colores = new List string();
    bueno no pude pero este es el tipo de hay para sabemos ke nos fataria entrar el tipo dentro de <> pero echele un vistaso y vera lo ke le dige

    ResponderBorrar
  20. Esta bien no importa que no salgan los simbolos, lo que pasa es que tienes que poner el codigo ascii de esos simbolos y no el simbolo. Con respecto al ejercicio que arriba plantea en ambos casos esta correcto, y el Sort() esta funcionando como simpere: Bien. Por ejemplo estos son los resultados:

    Resultado1
    Blanco
    Negro
    Amarrillo
    Azul
    Resultado2
    Amarrillo
    Azul
    Blanco
    Negro

    En la primera impresion los elementos se imprimen con el orden adecuado donde el Negro aparece en la posicion uno (1) comenzando desde cero.
    En la Segunda impresion luego del Sort() tambien esta correcto ya que los elementos estan en orden alfabetico y de esa forma es que el Sort() ordena cuando hay letras y si hay numeros los coloca primero, asi como tambien cuando hay caracteres especiales delante del elemento este aparecera primero. El orden es el siguiente: Caracteres especiales, numeros y luego letras en orden alfabetico.

    ResponderBorrar
  21. yo entendi pero supuesta mente era en un orden de indice que era como tenia entendido, pero al aprecer no es de esa forma esa era la incognita que tenia Gracias,thanks so much

    ResponderBorrar
  22. profesor cundo pondra el ejemplo del programa. de la biblioteca. ??

    ResponderBorrar

Preguntas;Comentarios;Aportes;Criticas Positivas;Recomendaciones.