Está en la página 1de 16

ALUMNO:GABRIEL NICODEMO ESPINOZA HUAMAN

EJERCICIOS DE POO
Desarrolle un algoritmo para cada una de los siguientes ejercicios utilizando el paradigma de programación
POO:
1. Dado la altura y la base de un rectángulo, calcule su área (base * altura) y perímetro (2*base + 2*altura).

sing System;

namespace Rectangulo
{
class Program
{
static void Main(string[] args)
{
System.Console.Write("Ingrese base del rectangulo: ");
double b = int.Parse(Console.ReadLine());
System.Console.Write("Ingrese altura del rectangulo: ");
double alt = int.Parse(Console.ReadLine());
Rectangulo t1 = new Rectangulo(b, alt);
t1.mostrarInfo();
}
}

class Rectangulo
{
private double b, alt;

public Rectangulo(double ba, double altura)


{
alt = altura;
b = ba;
}

private double calcularArea() => (b * alt);


private double calcularPerimetro() => (2 * b) + (2 * alt);

public void mostrarInfo()


{

double area = calcularArea();


double perimetro = calcularPerimetro();
System.Console.WriteLine("El area del rectangulo es: " + area);
System.Console.WriteLine("El perimetro del rectangulo es: " +
perimetro);
Console.WriteLine();
}
}
}
2. Se conoce de un artículo su costo base y se sabe que se ofrecen 2 precios de venta: al detal (30% de
incremento del costo base) y al mayor (15% de incremento del costo base). Se desea conocer los distintos
PVP del artículo, al detal y al mayor.
using System;

namespace Costos
{
class Program
{
static void Main(string[] args)
{
System.Console.Write("Ingrese costo base: ");
double preciob = Convert.ToDouble(Console.ReadLine());
Articulo articulo1 = new Articulo(preciob);
articulo1.mostrarInfo();
}
}
class Articulo
{
private double costob;

public Articulo(double cb)


{
costob = cb;
}

private double precioDetal() => (costob*0.3)+costob;


private double precioMayor() => (costob * 0.15) + costob;

public void mostrarInfo() {

double pd=precioDetal(), pm = precioMayor();


System.Console.WriteLine("Precio al detal del articulo: " + pd);
System.Console.WriteLine("Precio al mayor del articulo: " +pm);
}
}
}
3. Crea una clase Cuenta con los métodos ingreso, reintegro y transferencia. La clase contendrá un constructor
por defecto, un constructor con parámetros, un constructor copia y los métodos getters y setters.
using System;

namespace Cuenta
{
class Program
{
static void Main(string[] args)
{
Cuenta cuenta1 = new Cuenta("Luis", "1002520171", 1500);
Cuenta cuenta2 = new Cuenta("Marco", "423423423", 100);
//Clonamos la cuenta 1
Cuenta cuenta3 = new Cuenta(cuenta1);
cuenta1.mostrarInfo();
//Hacemos un ingreso
System.Console.Write("Ingrese el monto a ingresar: ");
double ingreso = Convert.ToDouble(Console.ReadLine());
cuenta1.ingreso(ingreso);
cuenta2.mostrarInfo();
//Hacemos un tranferencia a cuenta1
cuenta1.tranferencia(500, cuenta2);
cuenta1.mostrarInfo();
cuenta2.mostrarInfo();
//Hacemos un ejemplo de reintegro
cuenta1.reintegro(800);
cuenta1.mostrarInfo();
cuenta3.mostrarInfo();
}
}
class Cuenta
{
public string propietario, ncuenta;
public double montobase;
String[] lingresos;
public Cuenta()
{

}
public Cuenta(string prop, string numcuenta, double montob)
{
propietario = prop;
ncuenta = numcuenta;
montobase = montob;

}
public Cuenta(Cuenta cuentita)
{
this.propietario = cuentita.propietario;
this.ncuenta = cuentita.ncuenta;
this.montobase = cuentita.montobase;

}
public string Propietario { get; set; }
public string NumCuenta { get; set; }
public string MontoBase { get; set; }

public double ingreso(double ing) => montobase = montobase + ing;


public double reintegro(double ri) => montobase = montobase - ri;
public void tranferencia(double m, Cuenta cuentadestino)
{
montobase = montobase - m;
cuentadestino.montobase = +cuentadestino.montobase + m;
}

public void mostrarInfo()


{
System.Console.WriteLine("El propietario de la cuenta es: " +
propietario);
System.Console.WriteLine("El monto base: " + montobase);
}
}
}

4. Crea una clase Libro con los métodos préstamo, devolución y toString. La clase contendrá un constructor por
defecto, un constructor con parámetros y los métodos getters y setters.
using System;

namespace Libro
{
class Program
{
static void Main(string[] args)
{
Libro libro1 = new Libro("La Iliada", "Homero", 20);
Libro libro2 = new Libro("La Odisea", "Homero", 30);
Console.WriteLine(libro1);
System.Console.Write("Ingrese el numero de ejemplares a prestar: ");
int pres = Convert.ToInt32(Console.ReadLine());
libro1.prestamo(pres);
Console.WriteLine(libro1);
Console.WriteLine(libro2);
System.Console.Write("Ingrese el numero de ejemplares a devolver: ");
int dev = Convert.ToInt32(Console.ReadLine());
libro2.devolucion(dev);
Console.WriteLine(libro2);
}
}
class Libro
{
public string titulo, autor;
public int nejemplares;
public Libro()
{

}
public Libro(string tit, string aut, int nejempl)
{
titulo = tit;
autor = aut;
nejemplares = nejempl;

}
public int prestamo(int p) => nejemplares = nejemplares - p;
public int devolucion(int d) => nejemplares = nejemplares + d;

public string Titulo { get; set; }


public string Autor { get; set; }
public string Nejemplares { get; set; }

public override string ToString()


{
return "La cantidad de ejemplares del libro "+ titulo +
" es: " + nejemplares;
}
}
}
5. Crea una clase llamada Libro que guarde la información de cada uno de los libros de una biblioteca. La clase
debe guardar el título del libro, autor, número de ejemplares del libro y número de ejemplares prestados. La
clase contendrá los siguientes métodos: Constructor por defecto. Constructor con parámetros. Métodos
Setters/getters, Método préstamo que incremente el atributo correspondiente cada vez que se realice un
préstamo del libro. No se podrán prestar libros de los que no queden ejemplares disponibles para prestar.
Devuelve true si se ha podido realizar la operación y false en caso contrario. Método devolución que
decremente el atributo correspondiente cuando se produzca la devolución de un libro. No se podrán devolver
libros que no se hayan prestado. Devuelve true si se ha podido realizar la operación y false en caso contrario.
Método toString para mostrar los datos de los libros. Este método se heredada de Object y lo debemos
modificar (override) para adaptarlo a la clase Libro.
using System;

namespace Libro2
{
class Program
{
static void Main(string[] args)
{
Libro libro1 = new Libro("La Iliada", "Homero", 20, 0);
Console.WriteLine(libro1);
System.Console.Write("Ingrese el numero de ejemplares a prestar: ");
int pres = Convert.ToInt32(Console.ReadLine());
libro1.prestamo(pres);
Console.WriteLine(libro1);
System.Console.Write("Ingrese el numero de ejemplares a devolver: ");
int dev = Convert.ToInt32(Console.ReadLine());
libro1.devolucion(dev);
Console.WriteLine(libro1);
}
}
class Libro
{
public string titulo, autor;
public int nejemplares, nejemprestados;
public Libro()
{

}
public Libro(string tit, string aut, int nejempl, int nejp)
{
titulo = tit;
autor = aut;
nejemplares = nejempl;
nejemprestados = nejp;
}
public bool prestamo(int p)
{
if (nejemplares > 0 && nejemplares > p)
{
nejemplares = nejemplares - p;
nejemprestados = nejemprestados + p;
return true;
}
else
{
return false;
}

}
public bool devolucion(int d)
{
if (nejemplares > 0 && nejemplares > d && d < nejemprestados)
{
nejemplares = nejemplares + d;
nejemprestados = nejemprestados - d;
return true;
}
else
{
return false;
}
}

public string Titulo { get; set; }


public string Autor { get; set; }
public string Nejemplares { get; set; }
public string NejemplaresPrestados { get; set; }

public override string ToString()


{
return "La cantidad de ejemplares del libro " + titulo + " es: " +
nejemplares + "\n" + "La cantidad de ejemplares prestados es:" + nejemprestados;
}
}
}
6. Elaborar una clase RACIONAL que modele los números racionales implementando al menos las operaciones
de suma, resta, opuesto e inverso de un número racional a imitación de la suma o resta de los números reales
o enteros.
using System;

namespace Racional
{
class Program
{
static void Main(string[] args)
{
Fraccion x = new Fraccion(2, 5);
Fraccion y = new Fraccion(3, 4);
System.Console.WriteLine("x+y= " + Fraccion.sumar(x, y));
System.Console.WriteLine("x-y= " + Fraccion.restar(x, y));
System.Console.WriteLine("Inversa: " + Fraccion.inversa(x));
System.Console.WriteLine("Opuesta: " + Fraccion.opuesta(x));
}
}

public class Fraccion


{
int num, den;
public Fraccion()
{
num = 0;
den = 1;
}
public Fraccion(int x, int y)
{
num = x;
den = y;
}
public static Fraccion sumar(Fraccion a, Fraccion b)
{
Fraccion c = new Fraccion();
c.num = a.num * b.den + b.num * a.den;
c.den = a.den * b.den;
c.simplificar();
return c;
}
public static Fraccion restar(Fraccion a, Fraccion b)
{
Fraccion c = new Fraccion();
c.num = a.num * b.den - b.num * a.den;
c.den = a.den * b.den;
return c;
}
public static Fraccion inversa(Fraccion a)
{
return new Fraccion(a.den, a.num);
}
public static Fraccion opuesta(Fraccion a)
{
a.num = a.num * -1;
return a;
}
private int mcd()
{
int u = Math.Abs(num);
int v = Math.Abs(den);
if (v == 0)
{
return u;
}
int r;
while (v != 0)
{
r = u % v;
u = v;
v = r;
}
return u;
}
public Fraccion simplificar()
{
int dividir = mcd();
num /= dividir;
den /= dividir;
return this;
}
public override string ToString()
{
String texto = num + " / " + den;
return texto;
}

}
}
7. Elaborar una clase COMPLEJO que modele los números complejos implementando al menos las
operaciones de suma, resta y módulo de un número complejo a imitación de la suma o resta de los números
reales o enteros.
using System;

namespace Complejo
{
class Program
{
static void Main(string[] args)
{
Complejo c1 = new Complejo(-6.0, 3.0);
Complejo c2 = new Complejo(2.0, 2.0);
Complejo c3;
c3 = c1.sumar(c2);
Console.WriteLine(c1 + " + " + c2 + " = " + c3);
c3 = c1.restar(c2);
Console.WriteLine(c1 + " - " + c2 + " = " + c3);

Console.WriteLine("Modulo: " + c2.modulo());


}
}
class Complejo
{
double real, imag;

public Complejo()
{

}
//Constructor con parámetros
public Complejo(double real, double imag)
{
this.real = real;
this.imag = imag;
}
//sumar dos números complejos
//(a, b) + (c, d) = (a + c, b + d);
public Complejo sumar(Complejo c)
{
Complejo aux = new Complejo();
aux.real = real + c.real;
aux.imag = imag + c.imag;
return aux;
}
//restar dos números complejos
//(a, b) - (c, d) = (a - c, b - d);
public Complejo restar(Complejo c)
{
Complejo aux = new Complejo();
aux.real = real - c.real;
aux.imag = imag - c.imag;
return aux;
}
public double modulo()
{
return Math.Sqrt(real * real + imag * imag);
}
public override string ToString()
{
return "(" + real + ", " + imag + ")";
}
}
}

8. Elaborar una clase POLINOMIO que modele los polinomios de grado dos implementando al menos las
operaciones de suma (de un polinomio con Currentpara obtener un tercer polinomio) y producto por un
número y el cálculo de las raíces reales del polinomio, si es que existen.
using System;

namespace Polinomio
{
class Program
{
static void Main(string[] args)
{
Polinomio p1 = new Polinomio(4,7,3);
Polinomio p2 = new Polinomio(-3, 8, 5);
Console.WriteLine(p1.sumar(p2));
p1.escalar(3);
Console.WriteLine(p1);
p2.evaluar();
Console.WriteLine(p2);

}
}
class Polinomio
{
double Coeficiente1, Coeficiente2, Coeficiente3;
public Polinomio()
{

}
public Polinomio(double c1, double c2, double c3)
{
Coeficiente1 = c1;
Coeficiente2 = c2;
Coeficiente3 = c3;

public Polinomio sumar(Polinomio pol)


{
Polinomio aux = new Polinomio();
aux.Coeficiente1 = Coeficiente1 + pol.Coeficiente1;
aux.Coeficiente2 = Coeficiente2 + pol.Coeficiente2;
aux.Coeficiente3 = Coeficiente3 + pol.Coeficiente3;
return aux;
}
public void escalar(int num)
{
Coeficiente1 = num * Coeficiente1;
Coeficiente2 = num * Coeficiente2;
Coeficiente3 = num * Coeficiente3;
}
public void evaluar()
{
double X1, X2;
X1 = ((-1 * Coeficiente2) + Math.Sqrt(Math.Pow(Coeficiente2, 2) - (4 *
Coeficiente1 * Coeficiente3))) / (2 * Coeficiente1);
X2 = ((-1 * Coeficiente2) - Math.Sqrt(Math.Pow(Coeficiente2, 2) - (4 *
Coeficiente1 * Coeficiente3))) / (2 * Coeficiente1);
Console.WriteLine("El valor de X1 es: " + X1 + "\n" +
"El valor de X2 es: " + X2);
}

public override string ToString()


{

return Coeficiente1 + "X^2 " + (Coeficiente2 > 0 ? "+" +


Coeficiente2.ToString() : Coeficiente2.ToString())
+ "X " + (Coeficiente3 > 0 ? "+" + Coeficiente3.ToString() :
Coeficiente3.ToString());
}
}
}
9. Escribir una clase RELOJ que simule el comportamiento de un cronómetro digital (con las características
puesta_a_cero, incremento, etc.). Cuando el contador llegue a 23:59:59 y reciba el mensaje de incremento
deberá pasar a 00:00:00.
using System;
using System.Threading;

namespace Reloj
{
class Program
{
static void Main(string[] args)
{
Reloj r1 = new Reloj();
r1.iniciar();
}
}
class Reloj
{
int s, m, h;

public Reloj()
{
s = 0;
m = 0;
h = 0;
}
public void puestacero()
{
s = 0;
m = 0;
h = 0;
}

public void iniciar()


{
for (h = 0; h < 24; h++)
{
for (m = 0; m < 60; m++)
{
for (s = 0; s < 60; s++)
{
Console.Clear();
Console.WriteLine("Reloj");
incremento();
Console.WriteLine("Tiempo: " + h + ":" + m + ":" + s);
System.Threading.Thread.Sleep(50);

}
}
}
}
public void incremento()
{
s++;
if (s == 60)
{
s = 0;
m++;
if (m == 60)
{
m = 0;
h = (h + 1) % 24;
}
}
}
public override string ToString()
{
return h.ToString("D2") + ":" + m.ToString("D2") + ":" +
s.ToString("D2");
}
}
}

10. Elaborar una clase que modele ángulos medidos en grados. La clase debe incorporar al menos la suma de
ángulos, su resta, el opuesto de un ángulo y el ángulo 0, quedando bien entendido que el ángulo 0 y el ángulo
360 son el mismo.
using System;

namespace Angulo
{
class Program
{
static void Main(string[] args)
{
Angulo a1 = new Angulo(70, 20, 78);
Angulo a2 = new Angulo(160, 45, 350);
Console.WriteLine(a1.sumar(a2));
Console.WriteLine(a1.restar(a2));
a2.opuesto();
}
}
class Angulo
{
int g, m, s;
public Angulo()
{
}
public Angulo(int gr, int min, int seg)
{
g = gr;
m = min;
s = seg;
}
public Angulo(int g)
{
this.g = g;
}
public Angulo sumar(Angulo sangulo)
{
Angulo aux = new Angulo();
aux.g = this.g + sangulo.g;
if (aux.g >= 360)
{
int div = aux.g / 360;
aux.g = aux.g - (360 * div);
}
aux.m = this.m + sangulo.m;
if (aux.m >= 60)
{
aux.g += 1;
aux.m = aux.m - 60;
}
aux.s = this.s + sangulo.s;
if (aux.s >= 60)
{
aux.m += 1;
aux.s = aux.s - 60;
}
return aux;
}
public Angulo restar(Angulo sangulo)
{
Angulo aux = new Angulo();
aux.g = this.g - sangulo.g;
if (aux.g < 0)
{
int div = aux.g / 360;
aux.g = aux.g - (360 * div);
}
aux.m = this.m - sangulo.m;
if (aux.m < 0)
{
aux.g -= 1;
aux.m = aux.m + 60;
}
aux.s = this.s - sangulo.s;
if (aux.s < 0)
{
aux.m -= 1;
aux.s = aux.s + 60;
}
return aux;
}
public void opuesto()
{
int opuesto = 0;
if (g > 0)
{
opuesto = 360 - g;
}
else if (g < 0)
{
opuesto = (360 + g) * -1;
}
Console.WriteLine("El opuesto es: " + opuesto);
}
public override string ToString()
{
return g + "° " + m + "' " + s + "''";
}
}
}

También podría gustarte