Está en la página 1de 12

UNIVERSIDAD NACIONAL DE INGENIERIA

FACULTAD DE INGENIERIA MECANICA

SOLUCIONARIO DEL EXAMEN FINAL

PROGRAMACION ORIENTADA A OBJETOS MB545

CICLO 2020-I
Solución Pregunta N° 1:

#include <iostream>
#include <stdlib.h>
using namespace std;
//DEFINICION DE LA CLASE
class Crectangulo
{ protected:
float L1,L2;
public:
Crectangulo();
Crectangulo(float,float);
void reporte();
void setear(float,float);
float area();
float perimetro();
};

class Cparalelepipedo: public Crectangulo


{private:
float L3;
public:
Cparalelepipedo();
Cparalelepipedo(float,float,float);
void reporte();
void setear(float,float,float);
float area();
float volumen();
};

int main(){
Crectangulo r1,r2(3,2);
Cparalelepipedo p1,p2(1,2,3);
r1.reporte();
r2.reporte();
p1.reporte();
p2.reporte();
r1.setear(3,4);
p2.setear(2,2,4);
r1.reporte();
r2.reporte();
system("pause");
return 0;
}
void Crectangulo::setear(float a,float b)
{L1=a;L2=b;}
Crectangulo::Crectangulo()

1
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

{setear(1,1);}
Crectangulo::Crectangulo(float a,float b)
{setear(a,b);}
void Crectangulo::reporte()
{cout<<"El rectangulo tiene las siguientes medidas\n";
cout<<"\t"<<L1<<"x"<<L2;
cout<<"\t"<<"Area="<<area();
cout<<"\t"<<"Perimetro="<<perimetro()<<"\n\n";
}
float Crectangulo::area()
{ return L1*L2;}
float Crectangulo::perimetro()
{return 2*(L1+L2);}
void Cparalelepipedo::setear(float a,float b,float c)
{Crectangulo::setear(1,1);
L3=c;
}
Cparalelepipedo::Cparalelepipedo()
{setear(1,1,1);
}
Cparalelepipedo::Cparalelepipedo(float a,float b,float c)
{setear(a,b,c);
}

float Cparalelepipedo::volumen()
{return Crectangulo::area()*L3;
}
float Cparalelepipedo::area()
{return 2*(Crectangulo::area()+L2*L3+L1*L3);
}
void Cparalelepipedo::reporte()
{cout<<"El paralelepipedo tiene las siguientes medidas\n";
cout<<"\t"<<L1<<"x"<<L2<<"x"<<L3;
cout<<"\t"<<"Area="<<area();
cout<<"\t"<<"Volumen="<<volumen()<<"\n\n";
}
////////////////////////////////////////////////////////////////
///////////////
Solución Pregunta N° 2
//INGRESO AL SISTEMA

void CMENU_CLAVE_VENTANASDlg::OnBnClickedAceptar()
{
UpdateData(true);
if(m_usuario=="FIM" && m_clave=="VISUALC++")
{ MessageBox(_T("Ingreso al Sistema "),_T("Bienvenido al Sistema
"),MB_ICONEXCLAMATION|MB_OK);

CSistemaDlg sistema;
sistema.DoModal();
}
else
2
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

MessageBox(_T("Error en el Sistema "),_T("No puede


ingresar"),MB_ICONHAND|MB_OK);
int n=0;
n++;
if(n>=3) {
MessageBox(_T("Intentos maximos alcanzados"));
PostQuitMessage(0);}
UpdateData(false);
}
// CREANDO LA VENTANA PARA EL MENU
Se crea un dialogo IDD_SISTENA
Se crea la clase CSistemaDlg

En el explorador de soluciones y en la cabecera de origen se agrega


// MENU_CLAVE_VENTANAS-Dlg.cpp: archivo de implementación
//

#include "stdafx.h"
#include "MENU_CLAVE_VENTANAS-.h"
#include "MENU_CLAVE_VENTANAS-Dlg.h"
#include "afxdialogex.h"
#include "SistemaDlg.h" //Agregado

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//////////////////////////////////
//Se Crea el recurso menú IDR_MENU1
En el menú se agregan las opciones Graficos dentro de graficos se crean las
ventanas círculos-Rectangulos y en Trigonometria las opciones para las
ventanitas Circulos-Elipses-Rectangulos, Ayuda y Acerca de dentro de la
opción de Ayuda
//En la propiedad de la ventana Sistema se busca Menu y se agrega
IDR_MENU1. Se graba
En la opción del menú de Graficos y en la opción Circulos-Rectangulo se tiene
el siguiente código
void CGcireliprectDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Agregue aquí su código de controlador de mensajes
// No llama a CDialogEx::OnPaint() para mensajes de pintura}
static DWORD
dwColor[9]={RGB(0,0,0),RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),

RGB(255,255,0),RGB(255,0,255),RGB(0,255,255),RGB(127,127,127),RG
B(255,255,255)};
CPen n_pincel;
CPen *v_pincel;
CBrush n_brocha;
CBrush *v_brocha;

CRect rect;
3
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

GetClientRect(rect);
int cx=(rect.right-rect.left);
int cy=(rect.bottom-rect.top);
dc.SetMapMode(MM_ANISOTROPIC);
//establesca la escala del sistema de coordenadas
dc.SetWindowExt(500,500);
dc.SetViewportOrg(cx,-cy);
dc.SetViewportExt(cx,-cy);
dc.SetViewportOrg(cx/2,cy/2);

//dibujar circulos, rectangulos y elipse

//OJO ELIPSE
n_pincel.CreatePen(PS_SOLID,3,RGB(0,0,0));
v_pincel=dc.SelectObject(&n_pincel);
n_brocha.CreateSolidBrush(RGB(250,100,0));
v_brocha=dc.SelectObject(&n_brocha);

dc.Ellipse(-120,110,-30,70);
dc.Ellipse(120,110,30,70);

dc.SelectObject(v_brocha);
n_brocha.DeleteObject();
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();

//OJITO CIRCULO

n_pincel.CreatePen(PS_SOLID,3,RGB(0,0,0));
v_pincel=dc.SelectObject(&n_pincel);
n_brocha.CreateSolidBrush(RGB(0,0,250));
v_brocha=dc.SelectObject(&n_brocha);

dc.Ellipse(-95,110,-60,70);
dc.Ellipse(95,110,60,70);

dc.SelectObject(v_brocha);
n_brocha.DeleteObject();
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();

//BOCA
n_pincel.CreatePen(PS_SOLID,3,RGB(0,0,0));
v_pincel=dc.SelectObject(&n_pincel);
n_brocha.CreateSolidBrush(RGB(250,0,0));
v_brocha=dc.SelectObject(&n_brocha);

dc.Rectangle(-60,10,60,-40);

4
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

dc.SelectObject(v_brocha);
n_brocha.DeleteObject();
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();

//

n_pincel.CreatePen(PS_SOLID,3,RGB(0,0,0));
v_pincel=dc.SelectObject(&n_pincel);
n_brocha.CreateSolidBrush(RGB(250,250,5250));
v_brocha=dc.SelectObject(&n_brocha);

dc.Ellipse(-60,10,-20,-40);
dc.Ellipse(-20,10,20,-40);
dc.Ellipse(20,10,60,-40);

dc.SelectObject(v_brocha);
n_brocha.DeleteObject();
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();

//CEJAS

n_pincel.CreatePen(PS_SOLID,3,RGB(0,0,0));
v_pincel=dc.SelectObject(&n_pincel);
n_brocha.CreateSolidBrush(RGB(0,0,0));
v_brocha=dc.SelectObject(&n_brocha);

dc.Rectangle(-130,140,-30,120);
dc.Rectangle(130,140,30,120);

dc.SelectObject(v_brocha);
n_brocha.DeleteObject();
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();
}
//////////////////////////////////////////////////////////
// CODIGO PARA Circulos-Rectangulos
void CGcirrectDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Agregue aquí su código de controlador de mensajes
// No llama a CDialogEx::OnPaint() para mensajes de pintura
static DWORD dwColor[9]={RGB(0,0,0), RGB(255,0,0), RGB(0,255,0),
RGB(0,0,255), RGB(255,255,0), RGB(255,0,255), RGB(0,255,255),
RGB(127,127,127), RGB(255,255,255)};

CPen n_pincel;
CPen *v_pincel;
CBrush n_brocha;
CBrush *v_brocha;

5
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

n_pincel.CreatePen(PS_SOLID, 4,dwColor[2]);
v_pincel=dc.SelectObject(&n_pincel);
dc.MoveTo(130,100);
dc.LineTo(330,100);
dc.LineTo(330,150);
dc.LineTo(130,150);
dc.LineTo(130,100);
dc.MoveTo(180,50);
dc.LineTo(280,50);
dc.LineTo(280,250);
dc.LineTo(180,250);
dc.LineTo(180,50);
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();

n_brocha.CreateSolidBrush(RGB(90,188,255));
v_brocha=dc.SelectObject(&n_brocha);

dc.Ellipse(130,100,180,150);
dc.Ellipse(205,50,255,100);
dc.Ellipse(280,100,330,150);
dc.Ellipse(180,150,280,250);
dc.SelectObject(v_brocha);
n_brocha.DeleteObject();
}

///////////////////////////////////////////////////
//PARA EL SENO-COSENO
void CSenocosenoDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Agregue aquí su código de controlador de mensajes
// No llama a CDialogEx::OnPaint() para mensajes de pintura
static DWORD
dwColor[9]={RGB(0,0,0),RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),

RGB(255,255,0),RGB(255,0,255),RGB(0,255,255),RGB(127,127,127),RG
B(255,255,255)};
CPen n_pincel;
CPen *v_pincel;
CRect rect;
GetClientRect(rect);
int cx=(rect.right-rect.left);
int cy=(rect.bottom-rect.top);
dc.SetMapMode(MM_ANISOTROPIC);
//establesca la escala del sistema de coordenadas
dc.SetWindowExt(1540,900);
dc.SetViewportOrg(cx,-cy);
dc.SetViewportExt(cx,-cy);
dc.SetViewportOrg(cx/2,cy/2);

6
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

//dibujar curvas
float x,sen,csen;
for(x=-650;x<650;x+=0.1){
sen=100*sin(3.141516*x*0.8*(360.0/300)/180.0);
csen=100*cos(3.141516*x*0.8*(360.0/300)/180.0);
dc.SetPixel(x,sen,RGB(0,0,255));
dc.TextOutW(120,140,_T("SENO"));
dc.SetPixel(x,csen,RGB(255,0,0));
dc.TextOutW(50,-110,_T("COSENO"));
}
//dibuja una linea de los ejes coordenados
//eje y
n_pincel.CreatePen(PS_SOLID,0.5,dwColor[0]);
v_pincel=dc.SelectObject(&n_pincel);
dc.MoveTo(0,-440);//punto inicial
dc.LineTo(0,440);//punto final
dc.TextOutW(0,445,_T("EJE Y"));
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();
//eje x
n_pincel.CreatePen(PS_SOLID,1,dwColor[0]);
v_pincel=dc.SelectObject(&n_pincel);
dc.MoveTo(-650,0);//punto inicial
dc.LineTo(650,0);//punto final
dc.TextOutW(655,0,_T("EJE X"));
dc.SelectObject(v_pincel);
n_pincel.DeleteObject();
}

///////////////////////////
//PARA ACTIVAR LA CAJITA ACERCA DE.. DE AYUDA
CAboutDlg cajita;
Cajita.DoModal();

//////////////////////////////////////////////////
Solución Pregunta N° 3

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
char opcion;
string cadena_input, cadena_output;
string codigo;
string nombre;
int nota1, nota2, nota3;
int contador=0, contador_aprobados=0, contador_desaprobados=0;
float prom, suma_prom=0, prom_general;
bool encontro;
ifstream MyFile1;
ofstream MyFile2;
do {
system("cls");
7
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

cout << "MENU DE OPCIONES" << endl;


cout << "[1] : Consulta de un alumno por codigo" << endl;
cout << "[2] : Generar y guardar Estadisticas" << endl;
cout << "[0] : Salir"<< endl;
cout << "Ingrese opcion: "; cin >> opcion;

switch (opcion){

case '1':
cout << "Ingrese Codigo de alumno:"; cin >> codigo;
cout << "Abriendo archivo de lectura..." << endl;
MyFile1.open("d:/NOTAS.txt", ios::in);
if (MyFile1.is_open())
{
encontro = false;
while (!MyFile1.eof()) {
getline(MyFile1, cadena_input);
if (codigo == cadena_input.substr(0, 10)) {
cout << "Nombre: " <<
cadena_input.substr(10, 20) << endl;
cout << "Nota1: " <<
cadena_input.substr(30, 2) << endl;
cout << "Nota2: " <<
cadena_input.substr(32, 2) << endl;
cout << "Nota3: " <<
cadena_input.substr(34, 2) << endl;
encontro = true;
}
}
if (encontro == false)
{
cout << "El codigo no existe...\n\n";
}
MyFile1.close();
cout << "Cerrando archivo de lectura...\n";
system("Pause");
}
else
{
cout << "Error al abrir el archivo de lectura...\n";
}
break;

case '2':

cout << "Abriendo archivo de lectura...\n";


MyFile1.open("d:/NOTAS.txt", ios::in);
if (MyFile1.is_open())
{
contador = 0; suma_prom = 0;
contador_aprobados = 0; contador_desaprobados =
0;
while (!MyFile1.eof()) {

8
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

getline(MyFile1, cadena_input);
codigo = cadena_input.substr(0, 10);
nombre = cadena_input.substr(10, 20);
nota1 = stoi(cadena_input.substr(30, 2));
nota2 = stoi(cadena_input.substr(32, 2));
nota3 = stoi(cadena_input.substr(34, 2));
prom = (nota1 + nota2 + nota3) / 3;
suma_prom += prom;
if (prom >= 10) { contador_aprobados++; }
else { contador_desaprobados++; }

cout << "Se procesó el registro: " << (contador_aprobados +


contador_desaprobados) << endl;
}
MyFile1.close();
cout << "Cerrando archivo de lectura.\n";
contador = contador_aprobados + contador_desaprobados;
if (contador > 0) {
prom_general = suma_prom / (contador);
}
// Armando la cadena para guardar los valores totales
cout << "Abriendo archivo de escritura..." << endl;
MyFile2.open("d:/PROMEDIOS.txt", ios::out);
if (MyFile2.is_open()) {
cadena_output = "Total de alumnos: " + to_string(contador);
MyFile2 << cadena_output << endl;
cadena_output = "Promedio General: " + to_string(prom_general);
MyFile2 << cadena_output << endl;
cadena_output = "Cantidad aprobados: " + to_string(contador_aprobados);
MyFile2 << cadena_output << endl;
cadena_output = "Cantidad desaprobados: " +
to_string(contador_desaprobados);
MyFile2 << cadena_output << endl;
MyFile2.close();
cout << "Cerrando archivo de escritura..." << endl;
cout << "Revisar el archivo NOTAS.TXT ...\n\n";

system("Pause");
}
else
{
cout << "Error al abrir el archivo de escritura...\n";
}
}
else
{
cout << "Error al abrir el archivo de lectura...\n";
}
break;
}
} while (opcion != '0');

return 0;

9
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

}
////////////////////////////////////////////////////////////////
///
Solución Pregunta N° 4

Solucion
La interfase

B) Declaracion de variables

10
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

Inicializar n y agregar librerías para itoa.


Progamacion

void Cpregunta2Dlg::OnBnClickedButton1()
{ n=n+1;
UpdateData(true);
a[n].codigo = m_codigo1;
a[n].nombre =m_nombre1;
a[n].sueldo =m_sueldo1;
m_codigo1="";
m_nombre1="";
m_sueldo1 = 0;
UpdateData(false);

// TODO: Add your control notification handler code here


}

void Cpregunta2Dlg::OnBnClickedButton2()
{ int i;
m_combo1.ResetContent();
for (i=1;i<=n;i++)
m_combo1.AddString(a[i].codigo);

11
los profesores
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA

// TODO: Add your control notification handler code here


}

void Cpregunta2Dlg::OnCbnSelchangeCombo1()
{ m_nombre2 =a[m_combo1.GetCurSel()].nombre;
m_sueldo2 =a[m_combo1.GetCurSel()].sueldo;
UpdateData(false);
// TODO: Add your control notification handler code here
}

void Cpregunta2Dlg::OnBnClickedButton3()
{int i;
char buffer[33];
CString cad1;
for (i=1;i<=n;i++)

{ m_lista1.AddString(a[i].codigo);
m_lista2.AddString(a[i].nombre);
itoa(a[i].sueldo,buffer,10);
cad1=buffer;

m_lista3.AddString(cad1);
UpdateData(false);
// TODO: Add your control notification handler code here
}
}

12
los profesores

También podría gustarte