Prácticas de C++

Anuncio
Prácticas de C++
Practica Nº 5
Informática II
Fundamentos de Programación
Prof. Dr. Paul Bustamante
Practica Nº 5 Programación en C++
Pág. 1
ÍNDICE
ÍNDICE ........................................................................................................................................ 1
1. Introducción...................................................................................................................... 1
1.1
Ejercicio 1: clase Fecha.............................................................................................. 1
1.2
Ejercicio 2: Resolver ecuaciones de 2 grado con “clase”. ......................................... 2
1.3
Ejercicio 3: clase Alumno .......................................................................................... 3
1. Introducción.
En esta práctica va a profundizar más en la creación de las clases y los objetos. Trate de
realizar los ejercicios de forma individual. Recuerde que el mismo ejercicio que se le plantea,
se puede realizar de formas diferentes, lo cual le servirá para profundizar más en la materia.
Y por último, recuerde que a programar sólo se aprende programando.
1.1 Ejercicio 1: clase Fecha
En este ejercicio vamos a crear la clase Fecha, la cual nos permitirá almacenar varias fechas
como objetos, de forma que luego podamos imprimirlas, sumarles y restarles días para
calcular nuevas fechas, etc.
Este proyecto se llamará Ejer1. Debe crear tres ficheros Fecha.h, Fecha.cpp y
main.cpp. Estos ficheros se listan a continuación:
//fichero Fecha.h
class Fecha
{
int dia,mes,ano;
public:
Fecha(int d=1, int m=1, int a=1900);
//const. con valores por defecto
void Pidedatos();
void Prt();
Fecha Suma(int d);
};
//fichero Fecha.cpp
Fecha::Fecha(int d, int m, int a)
{
dia=d; mes=m; ano=a;
}
Fecha Fecha::Suma(int dias)
{
Fecha temp;
//hacer el algoritmo de sumar días, considerando los meses de 30 días
return temp;
}
void Fecha::Prt()
{
cout << setfill('0') << setw(2) << dia << '/'
<< setw(2) << mes << '/' << setw(4) << ano;
}
void Fecha::Pidedatos()
{
char ch;
cout << "Escriba Fecha de la forma dd/mm/aa:";
cin >> dia >> ch >> mes >> ch >> ano;
}
Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra
Practica Nº 5 Programación en C++
Pág. 2
//fichero principal.cpp
void main()
{
int num;
Fecha f1(12,4,2001);
Fecha f2;
f2.Pidedatos();
//crear una fecha
//crear una fecha con valores por defecto
//pedir fecha 2
cout << "\nFecha 1: "; f1.Prt();
cout << "\nFecha 2: "; f2.Prt();
cout << "\nNum.dias a sumar:?";
cin >> num;
Fecha f3;
//crear objeto f3 con valores por defecto
f3 = f2.Suma(num);
//sumar “num” días
f2.Prt();
cout << " + "<< num << " dias = ";
f3.Prt();
}
cout << " \nHe terminado.." << endl;
Compile el proyecto y ejecútelo, observando el resultado.
Trate de hacer las modificaciones necesarias para que el programa pueda restar días a una
fecha, de la siguiente manera:
f3 = f2.Resta(num);
//restar “num” días
f2.Prt();
cout << " - "<< num << " dias = ";
f3.Prt();
1.2 Ejercicio 2: Resolver ecuaciones de 2 grado con “clase”.
Este ejercicio consiste en hacer una clase que permita resolver las ecuaciones de
segundo grado, usando la Programación Orientada a Objetos. Para esto crear la clase
Ecua2G que tenga las variables y métodos adecuados que permitan resolver la ecuación.
A continuación se le proporciona la estructura de la clase y su utilización en el
programa principal main(). Ud. debe implementar las funciones de la clase.
class Ecua2G
{
double A,B,C;
public:
Ecua2G(){A=0;B=0;C=0;}
Ecua2G(double a, double b, double c){
A=a; B=b; C=c;
}
void PideDatos();
//Pide los coeficientes por la consola
double Disc();
//devuelve el discriminante
void Prt();
//Imprime ecuacion AX^2 + BX + C = 0
//tipo=true raices reales tipo=false raices complejas
void Raices(bool &tipo, double &x1, double &x2);
};
Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra
Practica Nº 5 Programación en C++
Pág. 3
//Programa principal
void main()
{
double xs1,xs2;
bool tip;
cout << "\n*** Ecuacion1 ***" << endl;
Ecua2G ec1(1,4,4);
ec1.Raices(tip,xs1, xs2);
//calcula las raices
ec1.Prt();
tip? cout << " Raices reales:": cout << " Raices complejas:";
cout << xs1 << "," << xs2 << endl;
cout << "\n*** Ecuacion2 ***" << endl;
Ecua2G ec2;
ec2.PideDatos();
//dar A=1,B=3,C=6.25
ec2.Raices(tip,xs1, xs2);
ec2.Prt();
tip? cout << " Raices reales:": cout << " Raices complejas:";
cout << xs1 << "," << xs2 << endl;
cout << "\n*** Ecuacion3 ***" << endl;
double a,b,c;
cout << "Dar coeficientes A,B y C:";
cin >> a >> b >> c;
Ecua2G ec3(a,b,c);
ec3.Raices(tip,xs1, xs2);
//constructor
ec3.Prt();
tip? cout << " Raices reales:": cout << " Raices complejas:";
cout << xs1 << "," << xs2 << endl;
}
Recuerde que debe colocar los ficheros de cabecera “.h” que sean necesarios. Debe
crear un nuevo proyecto llamado Ejer2 en su directorio de trabajo.
1.3 Ejercicio 3: clase Alumno
Este ejercicio consiste en hacer la clase Alumno que permita introducir en el ordenador los
nombres, carnés, direcciones y demás datos de un alumno o alumna. El ejercicio se debe ir
implementando en fases, las cuales se listan a continuación:
¾ Fase I: Clase Alumno y su implementación.
La clase Alumno y el programa main() se dan a continuación:
//Fichero Alumno.h
#include <iostream.h>
#include <string.h>
#include <iomanip.h>
class Alumno
{
long carnet;
char nombre[50];
public:
void DarAlumno();
void Prt();
};
Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra
Practica Nº 5 Programación en C++
Pág. 4
//fichero Alumno.cpp
void Alumno::DarAlumno()
{
cout << "Dar Carnet:"; cin >> carnet;
cin.ignore();
cout << "Dar Nombre:"; cin.getline(nombre,50);
}
void Alumno::Prt()
{
cout << "Carnet:"<<setw(8)<< carnet << " Nombre:"<<nombre<<endl;
}
//fichero Principal.cpp
void main()
{
int num;
Alumno al[100];
//array de 100 alumnos
cout << "Numero de alumnos a introducir:?";
cin >> num;
for (int i=0;i<num;i++){
al[i].DarAlumno();
}
}
cout << "\n*** Base de Datos ***\n";
for ( i=0;i<num;i++){
al[i].Prt();
}
¾ Fase II: Búsqueda de alumnos por cursos.
Esta nueva fase consiste en agregar una nueva variable a la clase, la variable int Curso, la
cual permitirá agregar el curso en el que está el alumno. Debe agregar el código necesario
para que cuando pida los datos del alumno, también pida el curso.
En main() debe pedir introducir el curso que se desea mostrar y el programa debe mostrar
en la consola sólo los alumnos de ese curso, como se muestra a continuación:
int curso;
cout << "Dar curso a ver:?";
cin >> curso;
for ( i=0;i<num;i++){
//búsqueda en el array de alumnos e imprimir los encontrados
if ( curso == .. ) al[i].Prt() ;
}
Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra
Descargar