Está en la página 1de 7

Universidad Nacional de Ingeniería | FIM-UNI | Programación Orientada a Objetos (MB545)

FIM-UNI Tercera Práctica Calificada – 17/06/2021.


Apellidos: OBREGON AGUILAR
Nombres: JAHIR
Código: 20172577I
Curso: MB545
Sección: G
NOTA: (dejar en blanco)

Indicaciones generales:

1) La práctica es individual.
2) En el programa (al inicio) incluir un rótulo de identificación con el nombre del programa, autor
(apellidos y nombres), código, fecha y versión.
3) En el programa principal (main) no deberá realizar ninguna operación de cálculo ni de impresión
de resultados. Usar todos los métodos que sean necesarios.
4) No usar identificadores o variables globales, salvo el valor constante de PI.
5) Validar todos los datos ingresados y mostrar mensajes de error según sea el caso.
6) Usar comentarios con textos adecuados indicando la operación a realizar.
7) Los nombres de las variables deben ser afines a la función o tipo de valor que guardan.
8) El programa finalizará cuando el usuario responda con “S” a la pregunta “¿Desea Salir?”.
9) Copiar en este documento sólo el código fuente del programa (*.h, *.cpp) y además, incluir al
menos tres corridas (“pantallazos”) del programa.
10) Subir a la plataforma del Aula Virtual FIM-UNI, este mismo documento en WORD con la solución
y corridas. No lo convierta a formato PDF. Y en el nombre del archivo Word incluir también su
sección, apellido y nombre.

Pregunta 1:

Se solicita realizar un programa en el lenguaje de programación Visual C++ que - usando el paradigma de
Programación Orientada a Objetos POO (Clases, Atributos, Métodos, Objetos) – permita definir una
clase denominada cTRIANGULO la cual deberá tener cinco atributos [base, altura, lado1, lado2, lado3],
estos atributos deben ser de acceso privado. Para definir e implementar la clase deberá usar un archivo
cabecera *.h y *.cpp Los métodos a implementar, permitirá:

1) Deberá usar sobrecarga de constructores. Uno de los constructores se usará cuando se conozca
la base y la altura; mientras que el otro se usará cuando se sepan los valores de los tres lados.
Para ello deberá preguntar previamente al usuario que ingrese por teclado cuál de las dos
opciones empleará.
2) Usar un método para el cálculo del área del triángulo.
3) Usar un método para calcular el perímetro del triángulo.
4) Para el caso en que se conozca solo los tres lados, se deberá usar un método que valide si con
esos tres lados ingresados se puede formar o no un triángulo. Enviar un mensaje con el
resultado.
5) Usar un método para imprimir todos los resultados [área, perímetro].
Pregunta 2:

Se solicita realizar un programa en el lenguaje de programación Visual C++ que - usando el


paradigma POO (Clases, Atributos, Métodos, Objetos) - permita leer una frase/cadena de máximo
128 caracteres, la cual puede contener letras, números y/o símbolos. La clase por definir puede
llamarse COracion y uno de sus atributos contendrá la frase a procesar. El programa deberá calcular
y mostrar la cantidad de vocales que tenga la frase, cantidad de consonantes, número de dígitos y
el número de caracteres especiales (*, %, #, @, …).

Usar un método para imprimir los resultados.

Solución (Pregunta 1)
//===========================================================//
// Programa_01.cpp //
// Autor: OBREGON AGUILAR JAHIR Código: 20172577I //
//Fecha: 17/06/2021 Versión: Visual c++ 2019 //
//===========================================================//

#include <iostream>
#include <string>
using namespace std;

//CREANDO LA CLASE Y SUS ATRIBUTOS PRIVADOS Y


class cTRIANGULO {
private:

int base;
int altura;
float lado1;
float lado2;
float lado3;
string opcion;
public:
cTRIANGULO(int, int);
cTRIANGULO(float, float, float);
float area_triangulo();
float perimetro_triangulo();
void validacion_triangulo();
void imprimir(string opcion);
};

//PROGRAMA MEDIO
// Constructor de la clase cTRIANGULO
cTRIANGULO::cTRIANGULO(int _base, int _altura)
{
base = _base;
altura = _altura;
}
cTRIANGULO::cTRIANGULO(float _lado1, float _lado2, float _lado3)
{
lado1 = _lado1;
lado2 = _lado2;
lado3 = _lado3;
}

//IMPLEMENENTACION DE LOS METODOS


float cTRIANGULO::area_triangulo() {
float area_triangulo;
float s = (lado1 + lado2 + lado3) / 2;
area_triangulo = (base * altura) / 2;
area_triangulo = sqrt(s * (s - lado1) * (s - lado2) * (s - lado3));
return area_triangulo;
}

float cTRIANGULO::perimetro_triangulo() {
float perimetro_triangulo;
perimetro_triangulo = (lado1 + lado2 + lado3);
return perimetro_triangulo;
}

void cTRIANGULO::validacion_triangulo() {
if ((lado2 - lado3) < lado1 < (lado2 + lado3) && (lado1 - lado3) < lado2 < (lado1
+ lado3))
cout << "Los lados del triangulo SI forman un triangulo ";
else
cout << "Los lados del triangulo NO forman un triangulo ";
}
void cTRIANGULO::imprimir(string opcion) {
if (opcion == "opc1") {
float area = area_triangulo();
cout << "El area del triangulo es... : " << area << endl;

}
if (opcion == "opc2") {
float perimetro = perimetro_triangulo();
float area = area_triangulo();
cout << "El area del triangulo es....: " << area << endl;
cout << "El perimetro del triangulo es....: " << perimetro << endl;

// Programa Principal
int main() {
int base, altura;
float lado1, lado2, lado3;
string opcion;
cout << "Si quiere colocar base y altura escriba: opc1" << endl;
cout << "Si quiere colocar los lados del triangulo escriba: opc" << endl;

cout << "opc1 o opc2 ,cual de esas opciones desea digitar :";getline(cin, opcion);
if (opcion == "opc1") {
cout << "Ingrese el valor de la base: "; cin >> base; cout << endl;
cout << "Ingrese el valor de la altura: "; cin >> altura; cout << endl;
cTRIANGULO SOLUCION1(base, altura);
SOLUCION1.imprimir(opcion);
cTRIANGULO VALIDACION1(base, altura);
VALIDACION1.validacion_triangulo();

}
if (opcion == "opc2") {
cout << "Ingrese el valor del lado1: "; cin >> lado1; cout << endl;
cout << "Ingrese el valor del lado2: "; cin >> lado2; cout << endl;
cout << "Ingrese el valor del lado3: "; cin >> lado3; cout << endl;
cTRIANGULO SOLUCION2(lado1, lado2, lado3);
SOLUCION2.imprimir(opcion);
cTRIANGULO VALIDACION2(lado1, lado2, lado3);
VALIDACION2.validacion_triangulo();

}
return 0;
}
Solución (Pregunta 2)
//===========================================================//
// Programa_02.cpp //
// Autor: OBREGON AGUILAR JAHIR Código: 20172577I //
//Fecha: 17/06/2021 Versión: Visual c++ 2019 //
//===========================================================//
#include <iostream>
#include <string.h>

using namespace std;

class COracion { // Nombre de la clase.


private:
char frase[128]; // Cadena de caracteres a leer.
int caracteres; // Canidad de caracteres a usar.
public:
COracion(char[128], int); // Constructor con parametros.
int f_cantidad_vocales(); // Funcion,
int f_cantidad_consonantes(); // Funcion,
int f_cantidad_digitos(); // Funcion,
int f_cantidad_simbolos(); // Funcion,
void f_imprimir(); // Procedimiento,
};

// Constructor de la clase.
COracion::COracion(char _frase[128], int _caracteres) {
caracteres = _caracteres;
for (int i = 0; i < caracteres; i++) {
frase[i] = _frase[i];
}
}

// Metodo que halla la cantidad de vocales.


int COracion::f_cantidad_vocales() {
int codigo;
int vocales = 0;

for (int i = 0; i < caracteres; i++) {


codigo = (int)toupper(frase[i]);

if (codigo == 65 || codigo == 69 || codigo == 73 || codigo == 79 || codigo


== 85) {
vocales++;
}
}

return vocales;
}

// Metodo que halla la cantidad de consonantes.


int COracion::f_cantidad_consonantes() {
int codigo;
int consonantes = 0;

for (int i = 0; i < caracteres; i++) {


codigo = (int)toupper(frase[i]);

if (codigo > 65 && codigo != 69 && codigo != 73 && codigo != 79 && codigo !
= 85 && codigo <= 90) {
consonantes++;
}
}
return consonantes;
}

// Metodo que halla la cantidad de digitos.


int COracion::f_cantidad_digitos() {
int codigo;
int digitos = 0;

for (int i = 0; i < caracteres; i++) {


codigo = (int)toupper(frase[i]);

if (codigo >= 48 && codigo <= 57) {


digitos++;
}
}

return digitos;
}

// Metodo que halla la cantidad de digitos.


int COracion::f_cantidad_simbolos() {
int codigo;
int simbolos = 0;

for (int i = 0; i < caracteres; i++) {


codigo = (int)toupper(frase[i]);

if (codigo < 48 && codigo > 57 && codigo < 65 && codigo >90) {
simbolos++;
}
}

return simbolos;
}

// Metodo que imprime los resultados que se piden.


void COracion::f_imprimir() {
int vocales = f_cantidad_vocales();
int consonantes = f_cantidad_consonantes();
int digitos = f_cantidad_digitos();
int simbolos = f_cantidad_simbolos();

cout << "La cantidad de vocales de la frase son: " << vocales << endl;
cout << "La cantidad de consonantes de la frase son: " << consonantes << endl;
cout << "La cantidad de digitos de la frase son: " << digitos << endl;
cout << "La cantidad de simbolos de la frase son: " << simbolos << endl;

int main()
{
int N; //Cantidad de caracteres;
char cadena1[128]; // Cadena donde se almacena la frase.
char continuar;

//Ingreso de datos.
cout << "Ingrese la cantidad de caracteres a escribir: "; cin >> N; cout << endl;
cin.ignore();
cout << "Ingrese la frase a escribir: "; cin.getline(cadena1, N); cout << endl;

COracion palabra(cadena1, N);


palabra.f_imprimir();

cout << "Desea salir ? "; cin.ignore(); cin >> continuar; cout << endl;
return 0;
}

También podría gustarte