Archivo

Posts Tagged ‘Certamen’

Preparando Certamen 3 – Ejercicio 1 [POO – Java] PEF2501

noviembre 28, 2009 1 comentario

Aquí un ejercicio para practicar para su certamen del día lunes, la profesora Yasna se los envió por blackboard a sus cuentas según me informan por interno xD.

 

 

 

Enunciado:
Se desea manejar los antecedentes de un curso. Cada curso cuenta
con un nombre y con una nómina de alumnos. Por su parte, cada
alumno cuenta con un ID, un nombre y un promedio final.

Algunos de los métodos asociados al curso son los que se indican a
continuación:

MÉTODO DESCRIPCIÓN
public void matricular(Alumno a) Permite AGREGAR al alumno ‘a’
al curso.
public boolean remover(Alumno a) Permite REMOVER al alumno ‘a’
del curso.
public boolean estaInscrito(Alumno a) Permite saber si el alumno ‘a’
se encuentra presente en el
curso

En el curso no se pueden tener alumnos repetidos, es decir, NO
SERÍA POSIBLE tratar de matricular a un mismo alumno dos veces.

Se pide implementar las clases que permitan almacenar los datos de
un curso y sus alumnos.

Se pide implementar la clase Main que contenga el método main que
permita cumplir con la siguiente funcionalidad:

· Crear a tres alumnos con los siguientes datos:
o ID = 1; NOMBRE = “ALFA”; PROMEDIO = 6.5
o ID = 2; NOMBRE = “BETA”; PROMEDIO = 4.5
o ID = 3; NOMBRE = “GAMMA”; PROMEDIO = 5.5
· Crear el curso llamado PEF2501
· Imprimir la nómina de alumnos del curso
· Matricular a ALFA y BETA en el curso PEF2501

· Imprimir en la salida estándar, utilizando el método
estaInscrito(), si el alumno llamado BETA se encuentra
inscrito en el curso.
· Imprimir en la salida estándar, utilizando el método
estaInscrito(), si el alumno llamado GAMMA se encuentra
inscrito en el curso.
· Remover del curso al alumno llamado BETA
· Imprimir la nómina del curso

Descarga Codigo de Fuente:
http://estebanfuentealba.net/ayudantia/PreparandoCertamen3EjercicioUno.rar

Saludos!

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

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: , ,

Certamen II (Introduccion a la Programacion)

ENUNCIADO:

Construir un programa Java que permita manipular los datos de una Automotora en base a la siguiente especificación:

Existen algunos supuestos y restricciones de negocio ya establecidos, los cuales se especifican a continuación:
El nombre inicial de la Automotora es “Automotora MeisterGilde”, dirección “Av. Paicaví #10040, Concepción”, Fono: “20002203”.
La llegada de un nuevo vehículo se conoce como importación, y está sujeta al registro por parte del usuario.
Se pide entonces construir el programa respectivo, que incluya las siguientes opciones de menú:

  • 1) Registrar Nuevo Vehículo (Importación)
  • 2) Vender Vehículo (previa selección del Nº correlativo del Vehículo)
  • 3) Obtener estado de la Automotora (Mostrar Datos del Local y Vehículos)
  • 4) Salir

Se permite establecer supuestos sobre elementos que no hayan sido parte de la especificación inicial, como atributos y constructores.

SOLUCION:

Clase SegundoCertamen

package sistema;

public class SegundoCertamen {

    public static void main(String[] args)
    {
		new Aplicacion().ejecutar();
    }
}

Clase Aplicacion

package sistema;
import negocio.*;
import java.util.Scanner;

public class Aplicacion
{

    private Automotora a;
	private Scanner s;


    public Aplicacion ()
    {
    	setA(new Automotora());
    	getA().setNombre ("Automotora MeisterGilde");
    	getA().setDireccion ("Av. Paicaví #10040, Concepción");
    	getA().setTelefono ("20002203");
    	setScanner(new Scanner(System.in));
    }

    public Automotora getA () {
        return a;
    }
    public void setA (Automotora val) {
        this.a = val;
    }
	public void ejecutar()
	{
		int opcion = 0;
		do
		{
			opcion = menu();
			if (opcion == 1)
				registrarVehiculo();
			else if (opcion == 2)
				venderVehiculo();
			else if (opcion == 3)
				obtenerEstado();
		} while (opcion != 4);
		System.exit(0);

	}
	public int menu()
	{
		System.out.println("!---- MENU ----");
		System.out.println("!- Ingresa El Numero de la Opcion que quieras ejecutar.");
		System.out.println("!-- 1) Registrar Nuevo Vehículo.");
		System.out.println("!-- 2) Vender Vehículo.");
		System.out.println("!-- 3) Obtener estado de la Automotora.");
		System.out.println("!-- 4) Salir.");
		System.out.println("!--------------");
		return Integer.parseInt(getScanner().nextLine());
	}
	public void setScanner(Scanner s)
	{
		this.s = s;
	}
	public Scanner getScanner()
	{
		return this.s;
	}
	public void registrarVehiculo()
	{
		Automovil a = new Automovil();
		System.out.println("Ingresa la Marca.");
		a.setMarca (getScanner().nextLine());
		System.out.println("Ingresa El Modelo.");
		a.setModelo (getScanner().nextLine());
		System.out.println("Ingresa El Año.");
		a.setYear (Integer.parseInt(getScanner().nextLine()));
		a.setEntregado (false);
		getA().importarVehiculo(a);
	}
	public void venderVehiculo()
	{
		if (getA().getAutosEnAutonmotora () &gt; 0)
		{
			System.out.println("\n########################################################\n");
			mostrarParaVender();
			System.out.println("Ingresa la ID del Producto que Quieres Vender:");
			int vender = (Integer.parseInt(getScanner().nextLine()) -1);
			getA().getAutomoviles ()[vender].setEntregado (true);
			System.out.println("Deseas eliminar de la Lista de Automoviles (Ingresa Opcion)");
			System.out.println("-- 1) Si.");
			System.out.println("-- 2) No.");
			int pregunta = Integer.parseInt(getScanner().nextLine());
			if (pregunta == 1)
			{
				for (int i = vender; i <getA().getAutosEnAutonmotora (); i++)
				{
					getA().getAutomoviles ()[i] = getA().getAutomoviles ()[(i+1)];
				}
				getA().setAutosEnAutonmotora (getA().getAutosEnAutonmotora () -1);
			}
			getA().venderAutomovil(getA().getCantidadVendidos ()+1);
			System.out.println("Venta completa.");
			System.out.println("\n########################################################\n");
		} else
		{
			System.out.println("\n########################################################\n");
			System.out.println("ERROR: No hay Automoviles disponibles en la Automotora.");
			System.out.println("\n########################################################\n");

		}
	}
	public void obtenerEstado()
	{
		System.out.println("\n########################################################\n");
		System.out.println("--- [Automotora: "+getA().getNombre ()+"] [Direccion: "+getA().getDireccion ()+"] [Telefono: "+getA().getTelefono ()+"]\n");
		System.out.println("--- Automoviles: ( "+getA().getAutosEnAutonmotora ()+" de "+getA().getAutomoviles ().length+" ) ( Vendidos: "+getA().getCantidadVendidos ()+" ) ");
		mostrarAutomoviles();
		System.out.println("\n########################################################\n");

	}
	public void mostrarParaVender()
	{
		int i=0,id=0;
		while (i < getA().getAutosEnAutonmotora ())
		{
			if (!getA().getAutomoviles ()[i].getEntregado ())
			{
				System.out.println("---- [ ID del Producto: "+(i+1)+" ] [Estado: Disponible.] [Marca: "+getA().getAutomoviles ()[i].getMarca ()+"] [Modelo: "+getA().getAutomoviles ()[i].getModelo ()+"] [Año: "+getA().getAutomoviles ()[i].getYear ()+"]" );
				id++;
			}
			i++;
		}
		if (id == 0)
		{
			System.out.println("ERROR: No hay Automoviles Disponibles.");
			System.out.println("\n########################################################\n");
			ejecutar();
			return;
		}
	}
	public void mostrarAutomoviles()
	{

		for (int i=0; i < getA().getAutosEnAutonmotora (); i++)
		{
			String estado;
			if (getA().getAutomoviles ()[i].getEntregado ())
			{
				estado = "Vendido.";
			} else
			{
				estado = "Disponible.";
			}
			System.out.println("---- [ ID del Producto: "+(i+1)+" ] [Estado: "+estado+"] [Marca: "+getA().getAutomoviles ()[i].getMarca ()+"] [Modelo: "+getA().getAutomoviles ()[i].getModelo ()+"] [Año: "+getA().getAutomoviles ()[i].getYear ()+"]" );
		}
	}
}

Clase Automotora

package negocio;

public class Automotora
{

    private String nombre;
    private String direccion;
    private String telefono;
    private Automovil[] automoviles;
    private int cantidadVendidos;
	private int autosEnAutonmotora = 0;

    public Automotora ()
    {
    	setAutomoviles (new Automovil[100]);
    }

    public Automovil[] getAutomoviles () {
        return automoviles;
    }
    public void setAutomoviles (Automovil[] val) {
        this.automoviles = val;
    }

    public int getCantidadVendidos () {
        return cantidadVendidos;
    }

    public void setCantidadVendidos (int val) {
        this.cantidadVendidos = val;
    }

    public String getDireccion () {
        return direccion;
    }

    public void setDireccion (String val) {
        this.direccion = val;
    }

    public String getNombre () {
        return nombre;
    }

    public void setNombre (String val) {
        this.nombre = val;
    }

    public String getTelefono () {
        return telefono;
    }

    public void setTelefono (String val) {
        this.telefono = val;
    }
	public void importarVehiculo(Automovil a)
	{
		this.automoviles[getAutosEnAutonmotora ()] = a;
		setAutosEnAutonmotora (getAutosEnAutonmotora () +1);
	}
	public void venderAutomovil(int num)
	{
		this.cantidadVendidos = num;
	}
	public int getAutosEnAutonmotora () {
		/* Contador */
        return autosEnAutonmotora;
    }

    public void setAutosEnAutonmotora (int val) {
        this.autosEnAutonmotora = val;
    }

}

Clase Automovil

package negocio;

public class Automovil
{


    private String marca;
    private String modelo;
    private int year;
    private boolean entregado;

    public Automovil () {
    }

    public boolean getEntregado () {
        return entregado;
    }
    public void setEntregado (boolean val) {
        this.entregado = val;
    }

    public String getMarca () {
        return marca;
    }

    public void setMarca (String val) {
        this.marca = val;
    }

    public String getModelo () {
        return modelo;
    }
    public void setModelo (String val) {
        this.modelo = val;
    }

    public int getYear () {
        return year;
    }
    public void setYear (int val) {
        this.year = val;
    }

}

Saludos , Adios.

Categorías:Java Etiquetas: ,