Archivo

Posts Tagged ‘PROGRAMACION’

Certamen I LENGUAJES DE PROGRAMACIÓN I MS.NET

Este Fue el Primer y unico certamen de .NET xD les dejo el Enunciado y el programa

Enunciado:

Se desea manejar una lista de alumnos, para cada alumno se debe manejar su nombre y su nota finales (en la escala de 1.0 a 7.0) en su “querida” asignatura de LDP2501. Se pide que usted construya una aplicación de CONSOLA en C# que permita cumplir con la siguiente funcionalidad:

  • Crear un archivo XML, llamado Curso.XML que contenga una carga inicial de datos a la lista. (10 PUNTOS)
  • Mostrar la lista de alumnos presentes en la lista. (10 PUNTOS)
  • Mostrar la nota de un alumno a partir del nombre. (15 PUNTOS)
  • Mostrar el promedio de notas de curso. (5 PUNTOS)
  • Mostrar la mediana de las notas de los alumnos del curso. (20 PUNTOS)
  • Mostrar una tabla de frecuencia de las notas que se han registrado en el curso. (20 PUNTOS)
  • Mostrar el nombre de los alumnos que han obtenido la mejor nota. (10 PUNTOS)
  • Mostrar el nombre de los alumnos que han obtenido la peor nota. (10 PUNTOS)

OBSERVACIONES
Suponga el siguiente conjunto de datos:
23 56 78 34 29 56 29 23 67
CÁLCULO DE LA MEDIANA
Para obtener la mediana se deben ordenar los valores de la lista y se tiene:
23 23 29 29 34 56 56 67 78
Ahora es posible calcular la mediana y se obtiene sacando el elemento de la posición central. En este caso es el 34. En el caso de que el número de observaciones sea par se debe seleccionar el elemento central y el siguiente y luego obtener el promedio entre los dos; el resultado de lo anterior corresponde a la mediana.

GENERACIÓN DE LA TABLA DE FRECUENCIA
Para el caso de la tabla de frecuencia se tiene:
DATO FRECUENCIA
23 2
29 2
34 1
56 2
67 1
78 1
Solucion:

Lo Primero es Crear el Curso.xml


  
    111-1
    Esteban Fuentealba
    7.0
  
  
    222-2
    Juan Perez
    2.0
  
  
    333-3
    Leonardo Farkas
    5.5
  
  
    444-4
    El Shipamogli
    4.4
  
  
    555-5
    Alejo
    7.0
  

Despues de eso creamos la Clase Alumno.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace CertamenIDotNet
{
/* La Clase Implementa IComparable */
class Alumno : IComparable
{
/* Atributos de Clase */
private String rut;
private String nombre;
private Double nota;
/* Constructor por defecto */
public Alumno() { }
/* Constructor que recibe todos los parametros */
public Alumno(String r, String n, Double no)
{
this.Rut = r;
this.Nombre = n;
this.Nota = no;
}
/* Metodo Para comparar un objeto de alumno con otro objeto de alumno y ordenar por nota */
public int CompareTo(object x)
{
Alumno o = ((Alumno)x);
if (this.Nota > o.Nota) return 1;
else if (this.Nota < o.Nota) return -1;
else return 0;
}
public Double Nota
{
get { return nota; }
set { nota = value; }
}

public String Nombre
{
get { return nombre; }
set { nombre = value; }
}
public String Rut
{
get { return rut; }
set { rut = value; }
}
}
}

Despues de eso Creamos Nuestro Program.cs que hará todo:

using System;
using System.Collections.Generic;
using System.Text;
/* Importo Collections para poder usar los arraylist */
using System.Collections;
/* Importo XML para usar la lectura de archivos xml */
using System.Xml;

/*
*
* Por Esteban Fuentealba
*
*/
namespace CertamenIDotNet
{
class Program
{
/* Atributos de Clase */
public static ArrayList listaAlumnos;
public static XmlDocument documento;

static void Main(string[] args)
{
/* Inicializo el arrayList que contenerá todos los alumnos*/
listaAlumnos = new ArrayList();
/* paso el xml “Curso.xml” a el arrayList */
XMLToArrayList();
/* este do while es para las opciones */
int opcion = 0;
do
{
Console.WriteLine(“1) Muestra Lista de Alumnos.”);
Console.WriteLine(“2) Muestra la nota a partir del Nombre.”);
Console.WriteLine(“3) Muestra el Promedio de notas del Curso.”);
Console.WriteLine(“4) Muestra la Mediana de notas del Curso.”);
Console.WriteLine(“5) Muestra una Tabla de Frecuencia de notas del Curso.”);
Console.WriteLine(“6) Muestra el nombre de los alumnos con mejor nota.”);
Console.WriteLine(“7) Muestra el nombre de los alumnos con peor nota.”);
Console.WriteLine(“8) Salir.”);
opcion = getNumero();
switch(opcion) {
case 1 :
mostrarLista();
break;
case 2 :
Console.WriteLine(“Ingresa el Nombre:”);
int i = 0;
foreach (Alumno a in buscarPorNombre(Console.ReadLine()))
{
if (i == 0) Console.WriteLine(“\r\nNombre\t\t\t\tRut\t\tNota”);
Console.WriteLine(a.Nombre.PadRight(30, ‘ ‘) + a.Rut.PadRight(20, ‘ ‘) + a.Nota.ToString().PadRight(20, ‘ ‘));
i++;
}
if (i == 0) Console.WriteLine(“No se encontro un alumno con ese Nombre”);
Console.WriteLine();
break;
case 3 :
Console.WriteLine(“Promedio del Curso: ” + obtenerPromedio());
break;
case 4:
Console.WriteLine(“Mediana del Curso: “+ obtenerMediana());
break;
case 5 :
frecuencia();
break;
case 6 :
mejorPeorNota(0);
break;
case 7 :
mejorPeorNota(1);
break;
}
} while (opcion != 8);
}
/*
*
* Metodo Para Pasar el xml al arrayList
*
*/
static void XMLToArrayList()
{
documento = new XmlDocument();
documento.Load(@”..\..\Curso.xml”);
foreach (XmlNode nod in documento)
{
foreach (XmlNode dato in nod)
{
String rut = dato.SelectSingleNode(“rut”).InnerText;
String nombre = dato.SelectSingleNode(“nombre”).InnerText;
Double nota = Double.Parse(dato.SelectSingleNode(“nota”).InnerText);
listaAlumnos.Add(new Alumno(rut, nombre, nota));
}
}
}
/*
*
* Muestro los datos del ArrayList
*
*/
static void mostrarLista()
{
Console.WriteLine(“\r\nNombre\t\t\t\tRut\t\tNota”);
foreach (Alumno alumno in listaAlumnos)
{
Console.WriteLine(alumno.Nombre.PadRight(30, ‘ ‘) + alumno.Rut.PadRight(20, ‘ ‘) + alumno.Nota.ToString().PadRight(20, ‘ ‘));
}
Console.WriteLine();
}
/*
*
* Metodo que busca en el ArrayList un nombre y devuelve un ArrayList con todos Los Resultados de Busqueda
*
*/
static ArrayList buscarPorNombre(String nombre)
{
ArrayList arr = new ArrayList();
foreach(Alumno a in listaAlumnos) {
if (a.Nombre.ToLower().Contains(nombre.ToLower()) || a.Nombre.ToLower() == nombre.ToLower())
arr.Add(a);
}
return arr;
}
/*
*
* Calcula el promedio del curso sumando las notas de todos los alumnos y dividiendolo por el total
*
*/

static Double obtenerPromedio()
{
Double promedio = 0.0;
foreach (Alumno a in listaAlumnos)
{
promedio += a.Nota;
}
return (promedio / listaAlumnos.Count);
}
/*
*
* Metodo Para Obtener la Mediana de las notas
*
*/

static Double obtenerMediana()
{
ArrayList listaOrdenada = listaAlumnos;
listaOrdenada.Sort();
if ((listaOrdenada.Count % 2) == 0)
{
return (((Alumno)listaOrdenada[listaOrdenada.Count / 2]).Nota + ((Alumno)listaOrdenada[(listaOrdenada.Count / 2) + 1]).Nota) / 2;
}
else
{
return ((Alumno)listaOrdenada[listaOrdenada.Count / 2]).Nota;
}
}
/*
*
* Obtiene la Frecuencia de notas
*
*/
static void frecuencia()
{
ArrayList listaFrecuencia = listaAlumnos;
listaFrecuencia.Sort();
Double saltarNota =0;
Console.WriteLine(“\tNota\tFrecuencia”);
foreach (Alumno alumno in listaFrecuencia)
{
int frecuencia = 0;
foreach (Alumno alumno2 in listaFrecuencia)
{
if (alumno.Nota == alumno2.Nota) frecuencia++;
}
if (alumno.Nota != saltarNota) Console.WriteLine(“\t”+alumno.Nota.ToString().PadRight(10, ‘ ‘) + frecuencia.ToString().PadRight(10, ‘ ‘));
saltarNota = alumno.Nota;
}
}
/*
*
* Imprime los alumnos con Mejor o Peor Nota, segun el parametro que se le pase
* Tipo 0 = MejorNota
* Tipo 1 = PeorNota
*
*/
static void mejorPeorNota(int tipo)
{
ArrayList listaNotas = listaAlumnos;
listaNotas.Sort();
if (tipo == 0)
{
listaNotas.Reverse();
Console.WriteLine(“\r\nAlumnos con Mejores Notas:”);
for (int i = 0; i < listaNotas.Count; i++)
{
if (((Alumno)listaNotas[0]).Nota == ((Alumno)listaNotas[i]).Nota) Console.WriteLine("Nombre: " + ((Alumno)listaNotas[i]).Nombre + " Nota: " + ((Alumno)listaNotas[i]).Nota);
}
}
else if (tipo == 1)
{
Console.WriteLine("\r\nAlumnos con Peores Notas:");
for (int i = 0; i < listaNotas.Count; i++)
{
if (((Alumno)listaNotas[0]).Nota == ((Alumno)listaNotas[i]).Nota) Console.WriteLine("Nombre: " + ((Alumno)listaNotas[i]).Nombre + " Nota: " + ((Alumno)listaNotas[i]).Nota);
}
}
Console.WriteLine();
}

static int getNumero()
{
String numeroInsertado;
numeroInsertado = Console.ReadLine();
while (!esNumero(numeroInsertado))
{
Console.WriteLine("ERROR: Ingresa un Numero.");
numeroInsertado = Console.ReadLine();
}
return int.Parse(numeroInsertado);
}
static bool esNumero(String val)
{
bool num = false;
try
{
int.Parse(val);
num = true;
}
catch (Exception e) { num = false; }
return num;
}
}
}

Y Listo =D

Espero que les Sirva, aqui dejo el src …. Esta en VisualStudio 2008
CertamenIDotNet-EstebanFuentealba.rar

Anuncios
Categorías:.NET Etiquetas: , , ,

Certamen III Introduccion a La Programacion

diciembre 9, 2008 1 comentario

A pedido del Pato , subo este certamen de los chicos de Introduccion a la Programacion xD
suerte:
Enunciado:
duocuc-introduccion-a-la-programacion-c3

Clase curso.java

import java.io.*;

public class curso {

    private String alumnosDelCurso[];
    private float notasParciales[][];
    private float promediosFinales[];
    private byte cantidadDeAlumnos;
    private BufferedReader lee;

    public curso() throws Exception {
        cantidadDeAlumnos=2;
        alumnosDelCurso = new String[cantidadDeAlumnos];
        notasParciales = new float[cantidadDeAlumnos][3];
        promediosFinales= new float[cantidadDeAlumnos];
        lee=new BufferedReader(new InputStreamReader(System.in));
    }

//ingresarNotasParciales: (20 puntos) en este método usted debe solicitar el
//ingreso de la siguiente información:
//nombre del alumno, el cual debe quedar almacenado en una de las posiciones
//del vector de alumnos
//notas parciales: usted debe permitir el ingreso de las tres notas parciales
//para el alumno ingresado anteriormente.

    public void ingresarNotasParciales()throws Exception{
        for(byte i=0; i< cantidadDeAlumnos; i++){
	        System.out.print("Ingrese El Nombre:");
			alumnosDelCurso[i] =(lee.readLine());
	        for(byte j=0; j<3; j++){
		        if(j==0) System.out.println("Ingrese La Primera Nota");
		        else if(j==1) System.out.println("Ingrese La Segunda Nota");
				else if(j==2) System.out.println("Ingrese La Tercera Nota");
	        	notasParciales[i][j] = Float.parseFloat(lee.readLine());
	        }
        }
	}
	//calculoDelPromedio: (25 puntos) éste método debe calcular el promedio de notas de cada alumno
    //(obteniendo las notas desde el vector de notas parciales) y el resultado del promedio debe
    //quedar almacenado en el vector de promedios finales.

    public void calculoDelPromedio(){
        for(byte i=0; i < cantidadDeAlumnos; i++){
        	promediosFinales[i] = (notasParciales[i][0]+notasParciales[i][1]+notasParciales[i][2])/3;
        }
    }

    //muestraPromedioDeAlumnos: (15 puntos) este método debe imprimir en pantalla los nombres de cada alumno
    //(obtenido del vector de alumnos) y su promedio final (obtenido del vector de promedios finales

    public void muestraPromediosDeAlumnos(){
        for(byte i=0; i< cantidadDeAlumnos; i++){
            System.out.println("La Nota Final Para El Alumno"+ alumnosDelCurso[i]+" es "+ promediosFinales[i]);
        }
    }
}

Clase CertamenIIIntro.java

public class CertamenIIIntro {

    public static void main(String[] args) throws Exception {
    	curso c = new curso();
    	c.ingresarNotasParciales();
    	c.calculoDelPromedio();
    	c.muestraPromediosDeAlumnos();
    }
}

Saludos!

Categorías:Java Etiquetas: , ,

Efecto Matrix en Consola C#

octubre 26, 2008 2 comentarios

jaja Encontre este código navegando por internet que imita el efecto de matrix solo escribiendo en consola, esta bueno, les dejo el codigo para que lo testeen

#define readkey

using System;

namespace m7tr1x
{
class Program
{
static void Main(string[] args)
{
Console.Title = “tH3 M7tr1x 3ff3 0)
System.Threading.Thread.Sleep(ms);
if (Console.KeyAvailable)
if (Console.ReadKey().Key == ConsoleKey.F5)
Initialize(out width, out height, out y, out l);
}
}

static bool thistime = false;

private static void MatrixStep(int width, int height, int[] y, int[] l)
{
int x;
thistime = !thistime;
for (x = 0; x <width; ++x)
{
if (x % 11 == 10)
{
if (!thistime)
continue;
Console.ForegroundColor = ConsoleColor.White;
}
else
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.SetCursorPosition(x, inBoxY(y[x] – 2 – (l[x] / 40 * 2), height));
Console.Write(R);
Console.ForegroundColor = ConsoleColor.Green;
}
Console.SetCursorPosition(x, y[x]);
Console.Write(R);
y[x] = inBoxY(y[x] + 1, height);
Console.SetCursorPosition(x, inBoxY(y[x] – l[x], height));
Console.Write(' ');
}
}

private static void Initialize(out int width, out int height, out int[] y, out int[] l)
{
int h1;
int h2 = (h1 = (height = Console.WindowHeight) / 2) / 2;
width = Console.WindowWidth – 1;
y = new int[width];
l = new int[width];
int x;
Console.Clear();
for (x = 0; x <width; ++x)
{
y[x] = r.Next(height);
l[x] = r.Next(h2 * ((x % 11 != 10) ? 2 : 1), h1 * ((x % 11 != 10) ? 2 : 1));
}
}

static Random r = new Random();
static char R
{
get
{
int t = r.Next(10);
if (t <= 2)
return (char)('0' + r.Next(10));
else if (t <= 4)
return (char)('a' + r.Next(27));
else if (t <= 6)
return (char)('A' + r.Next(27));
else
return (char)(r.Next(32, 255));
}
}

public static int inBoxY(int n, int height)
{
n = n % height;
if (n <0)
return n + height;
else
return n;
}
}
}

Categorías:.NET Etiquetas: , , , ,

Interprete y Compilador Online

Dando vueltas por internet buscando cosas nuevas encontre esta pagina web que esta muy buena y útil.

CodePag.org

Es una pagina web que sirve de Interpre & Compilador de 13 lenguajes de programacion:

  • C
  • C++
  • D
  • Haskell
  • Lua
  • OCaml
  • PHP
  • Perl
  • Plain Text
  • Python
  • Ruby
  • Scheme
  • Tcl

Indica erres de syntaxis , resalta las lineas del error y ademas se puede compartir el codigo con una URL que te entrega

genial !.

Espero que les sirva

Categorías:Utilidades Etiquetas: , ,

Primera Aplicacion Grails

Ayer Escribi sobre Grails y hoy me puse a buscar mas de como usarlo y cree mi primera aplicacion.

Lo primero fue descargar el grails desde la página oficial pero el instalador para windows no estaba, asi que lo descargue de esta pagina .

Despues de instalar Grails 1.0.3 en mi disco c:\ y hacer correr la consola de grails me decia que el JAVA_HOME no estaba definido. Asi que tube que agregarlo a las variables de Windows.

Para setear el JAVA_HOME se van a Inicio / Click Derecho en My Computer y se van a Properties

Luego se van a la pestaña Advanced y clickean el boton Enviroment Variables


Ahí agregan en System Variables una New variable. En Variable Name escriben JAVA_HOME y en Variable Value inserta la ubicacion del JDK en mi caso es C:\Program Files\Java\jdk1.6.0_05

Ya teniendo eso ya podemos ocupar Grails.

Primero abran la consola de Grails y tecleen grails.

debe aparecer algo parecido a esto:

Welcome to Grails 1.0 - http://grails.org/

Licensed under Apache Standard License 2.0

Grails home is set to: /Developer/grails-1.0

No script name specified. Use ‘grails help’ for more info

Luego crean su Aplicacion tecleando grails create-app <nombre>

Ejemplo:

grails:\> grails create-app holaMundo

luego de teclear eso se empiezan a crear las carpetas y archivos necesarios. Una vez terminado eso entramos a la carpeta que creo grails en la carpeta donde esta ubicado grails tecleando cd <nombre> en mi caso  es

grails:\> cd holaMundo

y para hacer correr nuestra aplicacion tecleamos grails run-app

grails:\> grails run-app

y se empezará a compilar nuestro proyecto , una vez que termine nos entregara un link para poder ver nuestra apliacion

entramos al link que nos entrega con algun navegador web y Taran, ya esta corriendo nuestra web.

Ahora paremos nuestra aplicacion tecleando en la consola CTRL+C y crearemos un domain-class que tendra todos los datos del supermercado. Tecleamos grails create-domain-class <nombreDeLaClase>

grails:\> grails create-domain-class Articulos

y nos crea en nuestra carpeta  “C:\grails-1.0.3\holaMundo\grails-app\domain” una clase llamada Articulo, la abrimos con algun editor de texto y veremos que esta vacia.

class Articulo {

}

A esa clase le agregamos algunos atributos, como nombre,precio,marca,unidades y codigo

class Articulo {

String nombre;

String marca;

String codigo;

int unidades;

double precio

}

guardamos el archivo y tecleamos en la consola grails generate-all Articulo para que nos genere el bytecode de la clase

grails:\> grails generate-all Articulo

Grails se encargará de generar todo el codigo de Mutadores , accesadores, codigo Sql, codigo html, diseño , etc. solo con poner esos 5 atributos

Ahora hacemos correr nuevamente nuestra aplicacion

grails:\> grails run-app

Esperamos unos segundos para que compile, copie y todo lo que tenga que hacer y abrimos nuevamente el link que nos entrega.

y como arte de magia …

nos crea un ArticuloController, si entramos a ese link viene lo genial…

Con los atributos que definimos en la clase Articulo groovy nos creo una lista , donde podemos ingresar, eliminar y editar esos datos usando sql, cuanto tiempo y lineas de codigo nos ha ahorrado groovy xD

Agregaremos un articulo:

y wow se nos agrego a la lista de articulos

GENIAL!!!

Mas informacion en la pagina oficial de Grails

Espero que les haya gustado adio.

Categorías:Grails Etiquetas: , , ,

Libre IDE para C# y Visual Basic

Me he estado metiendo un poco en C# y visual Basic, programando con el poderoso Visual Studio, claro ahora lo uso gracias al convenio de estudiantes con microsoft, pero cuando ya no tenga ese convenio ¿ Tendre que comprar Visual Studio ? ….
Bueno, Buscando una solucion me puse a buscar algun ide Para c# libre, y encontre uno que me parecio muy bueno, se llama ShapDevelop. Es un IDE libre para C# y VB.NET sobre la plataforma .NET de Microsoft, además es Open-Source, que mejor…

Les dejo el link para que lo testeen:

http://www.sharpdevelop.net/OpenSource/SD/

Categorías:.NET Etiquetas: , , ,

Conectar a una Pagina Remota con PHP

Muchas veces queremos incluir datos o cosas de webs remotas, Para eso se usan los Socket para efectuar conexiones a servidores.

Escribi esta Clase en PHP que puede ser usada para conectarse donde uno quiera ( HTTP, POP3, SMTP, MSN,IRC,etc )

Clase SocketsClass.php


sock_host = $host;
		$this-&gt;sock_port = $port;
		if ($this-&gt;fp = @fsockopen($this-&gt;sock_host,$this-&gt;sock_port, $errno, $errstr, 4)) { return true; }
		else { return false; }
	}
	function sk_write($data) { @fputs($this-&gt;fp, $data); }
	function sk_get()
	{
		$this-&gt;data = @fgets($this-&gt;fp, 4096);
		return $this-&gt;data;
	}
	function sk_close() { @fclose($this-&gt;fp); }
	function sk_fp() { return $this-&gt;fp; }
}
?&gt;

Aqui un ejemplo de Uso de la clase:

Supongamos que nos queremos conectar a google.com e imprimir lo mismo en nuestra página

ejemplo_Sockets.php


&lt;?PHP
//Incluimos la clase
include(&#039;SocketsClass.php&#039;);
/*
Creamos la instancia a nuestra clase y le pasamos los parametros:
&quot;Host&quot; y &quot;Puerto&quot;
en este caso
&quot;google&quot; y &quot;80&quot; (80 es el puerto predeterminado para paginas webs)
*/
$s = new SocketsClass(&#039;www.google.com&#039;,80);
//Si el socket conecta enviara un &quot;true&quot; osino &quot;false&quot;
if ($s) {
	/*
	Con el METODO &quot;sk_write()&quot; Enviamos mensajes al servidor y Pasamos como parametro el contenido.
	Para paginas webs es necesario crear una cabecera de datos para que el servidor nos pueda responder
	Esa cabecera es la siguiente:

	GET  HTTP/1.1\r\n
	Host: \r\n
	\r\n
	*/
	$s-&gt;sk_write("GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n");
	//creamos una variable vacia para luego ingresarle informacion adicional
	$contenido_web = '';
	/*
	primero creamos un ciclo si es que no se ha leido todo el contenido del socket
	*/
	// El Metodo "sk_fp()" Devuelve el socket actualmente usado
	while (!feof($s-&gt;sk_fp()))
	{
		/* Y para recibir la respuesta del servidor ocuparemos el METODO "sk_get()"  */
		$contenido_web .= $s-&gt;sk_get();
	}
	/*
	Cuando se halla leido toda la pagina el ciclo culminará y la variable "$contenido_web" tendra toda la informacion
	que el servidor nos respondio .
	Imprimimos para er que nos devuelve
	*/
	echo $contenido_web;
	//y cerramos nuestra conexion ( Socket ) con el metodo "sk_close()"
	$s-&gt;sk_close();

} else {
	echo 'ERROR: No Pudo Conectar';
}
?&gt;

Aqui Pueden ver el Ejemplo

Se Pueden Usar Expresiones Regulares para sacar cualquier contenido de la pagina, algo específico, nose. Para eso Pueden leer sobre Preg_Match , Preg_Match_All , Ereg .

Para mas Usos pueden leer en Wikipedia sobre el protoclo HTTP.

Espero que sirva, adios.

Categorías:PHP Etiquetas: , ,