s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como...

188
1 ESCUELA POLITECNICA DEL EJÉRCITO PROGRAMACION II NOMBRES: Gabriela Nathaly LLumiquinga Geovanny Patricio Guano NIVEL: 3 ro PROFESOR: Ing. Margarita Zambrano CARRERA: Electrónica y Telecomunicaciones FECHA: 29-06-2011

Transcript of s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como...

Page 1: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

1

ESCUELA POLITECNICA DEL EJÉRCITO

PROGRAMACION II

NOMBRES: Gabriela Nathaly LLumiquinga Geovanny Patricio Guano

NIVEL: 3 ro

PROFESOR: Ing. Margarita ZambranoCARRERA: Electrónica y

Telecomunicaciones

FECHA:

29-06-2011

INDICE

Page 2: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

2

No TEMA: Pag.OBJETIVOS……………………………………………………………… 031 Repaso de algoritmos ………………………………………………

042 Estructuras en C …………..………………………………………...

053 Funciones ……………………………………………………………. 064 Clases ….……………………………………………………………… 08

4.1 Objetos ……………………………………………………. 084.2 Estructura de una Clase …………………………………

104.3 Un arreglo con campo de una

clase……………………. 194.4 Operaciones entre objetos ……………………………...

224.5 Constructores ……………………………………………...

284.6 Arreglos de Objetos ……………………………………...

314.7 Datos y funciones Estaticas ………………………………

404.8 Sobrecargar de Operadores ………………………………

454.9 Funciones Amigas …………………………………………

614.10 Sobrecarga de los operadores cin y

cout………………. 654.11 Herencia ……………………………………………………. 754.12 Formato de Entra y Salida ………………………………..

814.13 Soluciones a los problemas

propuestos……………….. 871. Solución 1 ………………………………………….. 872. Solución 2 ………………………………………….. 883. Solución 3 ………………………………………….. 914. Solución 4 ………………………………………….. 925. Solución 5 …………………………………………..

1076. Solución 6 …………………………………………..

1157. Solución 7 …………………………………………..

1318. Solución 8 …………………………………………..

137

Page 3: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

3

9. Solución 9 ………………………………………….. 142

4.14 Ejercicios Tipo Prueba……………………………………. 150

1. Prueba 1.................................................................... 150

2. Prueba 2 …………………………………………….. 159

4.15 Conclusiones ………………………………………………. 169

OBJETIVOS:Al finalizar este curso estaremos en capacidad de:

• Establecer las diferencias entre el concepto de objeto y clase, así como la relación existente entre los mismos.

• Analizar situaciones sencillas mediante la identificación de los tipos de objetos que intervienen en ella, las características que tendrán los objetos y los servicios que podrán prestar.

• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella.

• Aplicar el concepto de elementos static a la solución de un problema utilizando clases simples.

● Describir los conceptos que caracterizan al modelo de la programación orientada a objetos. ● Valorar en que medida las técnicas de la programación orientada a objetos favorecen la calidad del software,

Page 4: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

4

analizando sobre todo cómo facilitan la reutilización y extensibilidad del código generado. ● Enseñar un lenguaje de programación orientada a objetos, junto a su entorno de programación para resolver diferentes problemas.

● Disponer de técnicas de programación orientada a objetos. ● Presentar ejemplos de aplicación.

REPASO DE ALGORITMOS Fundamentos de la Programacion Para realizar un programa se debe tener en cuenta el impotancia de cómo solucionar los algoritmos básicos.

De un numero PrimoDel numero 45√45=6(Es el número al cual llega la división)45/1 ; 45/2 ; 45/3 ; 45/4 ; 45/5 ; 45/6

1. Ingreso el numero2. Sacar la raíz del numero ingresado3. Solo cogemos la parte entera4. Dividir el numero ingresado para un divisor5. Guardo residuo6. Si el residuo es igual a 0 cuento7. Al divisor le aumento 8. Si el residuo es igual a 1 9. El numero es Primo10. Caso contrario no es primo

Para hallar el MCDEs el máximo común divisor es el número común que divide a los dos numero exactamente.Ejemplo 18 24 2 9 12 3

Page 5: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

5

NOTA: Es una palabra reservada en C que indica que los elementos que están dentro de las llaves componen de una Estructura

3 41. Ingreso los números.2. Divide para los dos números para dos3. Hasta que los dos números sean múltiplos de 24. Si no lo es dividimos los dos números para 35. Hasta que el resultado es 16. O hasta que los dos números dejen de tener un múltiplo

común

Separa en cifras un número 1. Ingresamos un número 2. Al número lo dividimos para 103. Guardamos el cociente y el residuo4. Y seguir dividiendo el cociente 5. Hasta cuando el cociente sea 0

Para evaluar si un numero divisible para 31531 1+5+3+1=1010/3Cociente=3 Residuo=1

1. Ingresar el número 2. Separamos el número en cifras con el algoritmo de dividir

para 103. Guardamos los residuos 4. Sumamos los residuos 5. El resultado de la suma dividimos para 36. Si el nuevo residuo es 0 es múltiplo de 3

ESTRUCTURAS EN CDefinicion.-Una estructura es un tipo de dato compuesto que permite almacenar un conjunto de datos de diferente tipo. Los datos que contiene una estructura pueden ser de tipo simple (caracteres, números enteros o de coma flotante etc.) o a su vez de tipo compuesto (vectores, estructuras, listas, etc.).

A cada uno de los datos o elementos almacenados dentro de una estructura se les denomina miembros de esa estructura y éstos pertenecerán a un tipo de dato determinado.La definición de una estructura en C corresponde con la sintaxis siguiente:

struct [nombre_estructura]{Tipo de dato miembro 1; Tipo de dato miembro 2;

Page 6: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

6

………….…………};

Tenemos los Siguientes ejemplos

Struct fecha {int dia;char mer [ 14];int año;};Struct punto {int x;int y;};Struct rectangulo {struct punto p1;struct punto p2;};

La estructura se define fuera del void main() luego de las bibliotecas

Tiene campos en la estructura Las variables se define dentro del void main() Como la estructura es un conjunto de diferentes tipos de datos

llamadas campos a cada uno de estos se accede mediante un punto ()Struct complejo {double x;double y;};void main() {complejo a ; //a es una variable de tipo complejo por lo tanto tiene los campos x,yprintf(“Ingrese la parte racional”) ;scanf (“%d”, & ax);printf (“Ingrese la parte Imaginaria”);scanf(“%d”, &a.y);}

FUNCIONESEn forma general podríamos decir que

Page 7: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

7

Una función es un código independiente del programa principal y su objetos es la realización de una tarea específica. Para llamar a una función se debe invocar con el nombre acompañados por los parámetros (en el caso que los necesite).Con el uso de funciones se puede dividir el programa en partes de finalidad concreta.Las variables es un espacio de almacenamiento para guardar y sacar datos y cuando la funcin deja de utilizar la variable se auto destruyen y asi podemos utilizar las mismas variables en las diferentes funciones.

Ejemplo.-

Ingrese dos números y sume muestre el resultado

Sin Funciones# include <stdio.h># include <conio.h>Int a, b,c;Void main(){printf(“Ingrese a”);scanf(“%d”,&a);printf(“Ingrese b”);scanf(“%d”,&b);c=a+b;printf(“El resultado es %d:”,c);}

Con Funciones (para esto ya utilizamos el cin<< Entrada es en el lugar del scanf “Lectura de Datos” y cout>>Salida en lugar del printf “Escritura de datos”que están en la librería # include <iostream.h> )

# include <iostream.h># include <conio.h>Int a, b,c;Void main(){cout<<”Ingrese a”<<endl;cin>>a;cout<<”Ingrese b”<<endl;cin>>b;c=a+b;cout<<”El resultado es:”<<c <<endl;}

Page 8: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

8

LISTA SIMPLES.- Una lista enlazada simple es una colección o secuencia de elementos dispuestos una detrás de otra conectadas entre sí atreves de punteros. Los elementos de una lista se denominan nodo.

LISTAS CIRCULARES.-La cabeza se encuentra en el último nodo.

CLASESEs un conjunto de objetos que comparten una estructura y/o comportamientos comunes

Representa una abstracción, esencia que comparten los objetos.

Un objeto es un ejemplo de una clase. Un objeto no es una clase y una clase no es un objeto. Tienen datos miembro. Solo las funciones miembro pueden acceder a los datos

miembro(Variables) porque son privados.Private: son los datos privados a estos no puede acceder el programa principal

Public: Son las funciones que existe en el programa.

UN OBJETOEs algo que ocupa en el espacio, es todo lo tangible, todo lo que podemos ver, un objeto va a tener características y funciones propias que las diferencian de otro s objetos.

Page 9: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

9

Programación Orientada a Objetos (POO).- Es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

No es difícil, pero es una manera especial de pensar.

Ejemplo de clases:

Clases sus características y funciones

Materia

CARACTERISTICASNombre: Programación 2Cod: 7565Descripción: Programar en Lenguaje de CNúm Creditos: 6FUNCIONESIngreso Datos;Imprimir Datos;

Librería

CARACTERISTICASNombre del libro: Un grito DesesperadoCod: 004Autor: Carlos CuauhtémocEditorial: Ediciones Selectas DlamanteFUNCIONESIngreso de datos;Imprimii Datos;

Identificación de una persona

CARACTERISTICASCI: 1722662275Nombre: GabrielaApellido: LlumiquingaTelef: 022336564FUNCIONES

Page 10: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

10

Ingreso de datos;Imprimii Datos;

Universidades

CARACTERISTICASCod U: 001Nombre: EspeUbicación: SangolquiFUNCIONESIngreso de datos;Imprimii Datos;

Marca de Ropa

CARACTERISTICASDescripción: CamisetaCod: 003Marca: AdidasPrecio: $10.00FUNCIONESIngreso de datos;Imprimii Datos;

Electrodomesticos

CARACTERISTICAS FUNCIONESDescripción: TelevisiónCod: 003Marca: ElectroluxPrecio: $250.00FUNCIONESIngreso de datos;Imprimii Datos;

ESTRUCTURA DE UNA CLASE:Una función que internamente trabaje u opere con objetos devolviese un valor, este será del mismo tipo de dato que el objeto, o dicho de otra forma del mismo nombre de la clase.

Persona

Declaración de la clase

Page 11: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

11

NombreCiEdadIngreso ()Imprimir()

NombreCiEdadIngreso ()Imprimir()

NombreCiEdadIngreso ()Imprimir()

NombreCiEdadIngreso ()Imprimir()

NombreCiEdadIngreso ()Imprimir()

NombreCiEdadIngreso ()Imprimir()

Class persona {prívate:char nombre [10];long int CI;int edad;public:void ingreso();void imprimir();};// implementación de la clase

void persona :: ingreso(){cout<< “Ingreso del Nombre”<< endl;cin>>nombre;}

Explicación

Creo el objeto persona a, b :

Con Arreglos de Objetos

A

NombreCiEdadIngreso ()Imprimir()

B

NombreCiEdadIngreso ()Imprimir()

Page 12: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

12

Ejemplos de ClasesClase fracción

Class fraccion {prívate:int numerador;int denominador;public:void ingreso();void validar();void simplificar();fraccion sumar (fraccion a, fracccion b);fraccion resta (fraccion a, fracccion b);fraccion multiplicacion (fraccion a, fracccion b);fracción dividir(fraccion a, fracccion b);float convertirdecimal();};

Clase vector 3DClass vector {prívate:doublé x,y,z;public:void ingreso();float modulo();vector suma_vector(vector a, vector b);float producto_punto (vector a,vector b);vector producto_cruz (vector a, vector b);};

Clase alumnoClass alumno {prívate:char nombre [10];char apellido [10];char direccion [20];char nom_materia [25];long int CI;char telefono [9];char correo [30];

Page 13: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

13

NOTA: La palabra reservada private puede o no ser incluida al inicio de la declaración de los datos privados de la clase, pero siempre se debe separar las funciones públicas de la clase mediante la palabra reservada public

double notas[4];public:void ingreso();void imprimir();void promedio();};

Clase CuadradoClass cuadrado {double lado;public:void ingreso();void imprimir();doublé area();doublé perímetro();};

TrianguloClass triangulo{prívate:doublé lado1, lado 2, lado 3;public:void ingreso();void imprimir();double calcular_area();double perímetro();};

Anguloclass angulo{prívate:int dato;public:void ingreso();void imprimir();float sen();float tan();};

Fechaclass fecha{prívate:int dia, mes,anio;public:

Page 14: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

14

Nota: Si una función que internamente trabaje u opere con objetos devolviese un valor, este será del mismo tipo de dato que el objeto, o dicho de otra forma del mismo nombre de la clase.un

void ingreso();void imprimir();fecha calcular_fecha(fecha a, fecha b);void validar_fecha();};

Complejoclass complejo{prívate:doublé imag, entero;public:void ingreso();void imprimir();complejo sumar(complejo a, complejo b);complejo restar(complejo a, complejo b);complejo multiplicar(complejo a, complejo b);complejo dividir (complejo a, complejo b);float convertir_complejo();};

Primoclass primo{prívate:int numero;public:void ingreso();void imprimir();int verificar();};

Juegoclass juego{prívate:char descripción[20];char nombre[10];int puntaje();int participantes();public:void ingreso();void imprimir();int jugada();int tablero_puntuacion();};

Ejercicio en clase 01:

Page 15: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

15

Realizar la declaración de la clase persona y operar con los datos de unapersona.

CÓDIGO:

#include<stdio.h>#include<conio.h>#include<iostream.h>class persona { //declaración de la clase

private:char nombre[10];long int CI;int edad;

int notas[3];public:void ingreso();void imprimir ();void ingresonotas();

void imprimirnotas();};

//implementación de la clase void persona::ingreso(){ cout<<"\n"; cout<<"Ingrese el nombre: "; cin>>nombre; cout<<"Ingrese la CI: "; cin>>CI; cout<<"Ingrese la edad: "; cin>>edad; } void persona :: imprimir (){

Page 16: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

16

cout<<endl; cout<<nombre<<"\n"; cout<<CI<<endl;

cout<<edad<<endl; } void persona::ingresonotas(){ cout<<"Ingreso de notas: "<<endl; for (int i=0;i<3; i++){ cout<<"Ingrese la nota "<<i+1<<endl;

cin>>notas[i]; }}

void persona::imprimirnotas(){ cout<<"Notas:"<<endl; for (int o=0; o<3; o++){

cout<<notas[o]<<endl; } }

void main (){ persona a,b; a.ingreso(); a.ingresonotas(); a.imprimir(); a.imprimirnotas(); b.ingreso(); b.ingresonotas(); b.imprimir(); b.imprimirnotas();

Page 17: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

17

}

Ejercicio en clase 02:Desarrollar un programa para calcular el área y el perímetro de un círculo.

Código:

#include<iostream.h> #define PI 3.1416 //declaracion de la clase

class circulo{private:double radio;public:void ingreso();void imprimir();float area();float perimetro(); }; // impletacion de las funcionesvoid circulo::ingreso(){cout<<"Ingrese el radio: "<<endl;cin>> radio;while(radio<0){cout<<"\n Error de ingreso.....\n Ingrese nuevamente el radio: ";

cin>>radio; }}void circulo::imprimir(){cout<<"El radio es: "<<radio<<endl;}float circulo::area(){float aux; // variable local

Page 18: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

18

aux= PI*radio*radio;return (aux);}float circulo::perimetro(){float aux;aux=2*PI*radio;

return (aux);} //programa principalvoid main () {

float a,b;circulo obj1;

cout<<"\n\t\t Programa para calcular el erea y perimetro del circulo"<<endl;

obj1.ingreso();a=obj1.perimetro();cout<<endl<<" El perimetro es: "<< a;b=obj1.area();cout<<endl<<" El area es: "<< b;

}

PROBLEMA PROPUESTO 01:

Desarrollar un programa que permita ingresar por teclado, una cantidad el de en Grados Centígrados y lo presente convertido en grados Fahrenheit.(Declarar una clase Temperatura)

PROBLEMA PROPUESTO 02:

Realizar un programa que permita ingresa el valor de los 3 lados de un triangulo y calcule el área y el perímetro del mismo.

Page 19: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

19

UN ARREGLO COMO CAMPO DE UNA CLASEEjercicio en clase 03:

Programa conjuntos el ingreso de 5 elementos hacer el ingreso, imprimir, unión, intersección.

CODIGO#include<iostream.h>#include<conio.h>class conjuntos{

int u[10];

public:

void ingreso();void imprimir();void copia(conjuntos r,conjuntos s);conjuntos unir ( conjuntos r, conjuntos e);conjuntos interseccion ( conjuntos r, conjuntos s);conjuntos();

};

void conjuntos::ingreso(){

cout<<"\n Ingrese los elementos: ";for (int p=0; p<5;p++){ cout<<"\n Elemento "<<p+1<<": "; cin>>u[p];}

}

void conjuntos::imprimir(){

cout<<"\n Conjunto: \n";

Page 20: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

20

cout<<"( ";for (int j=0; j<10; j++){if (u[j]>=0) cout<< u[j]<<" ";} cout<<")";

}

conjuntos::conjuntos(){

for (int i=0; i<10; i++){ u[i]=-1;}

}

conjuntos conjuntos::interseccion( conjuntos r, conjuntos s){

conjuntos w;

for(int i=0; i<5; i++){ for(int o=0; o<5; o++){ if(r.u[i]==s.u[o]){

w.u[i]=r.u[i]; } }}return (w);

}

conjuntos conjuntos :: unir ( conjuntos r, conjuntos e){ conjuntos w;

for(int i=0; i<10; i++){r.u[i+5]=e.u[i];}for(int k=0;k<10;k++){ for(int j=k+1;j<10;j++) {

if(r.u[k]==r.u[j]) r.u[j]=(-1); }

Page 21: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

21

} return (r);

}

void main (){ clrscr(); conjuntos a,b, c,d,cop; a.ingreso(); b.ingreso(); clrscr(); cout<<"Los conjuntos"<<endl; a.imprimir(); b.imprimir(); c=c.interseccion(a, b); cout<<"\nLa Interseccion es:"<<endl; c.imprimir(); cout<<"\n La Union de los Conjuntos:"<<endl; d=d.unir(a,b); d.imprimir(); getch();}

Page 22: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

22

OPERACIONES ENTRE OBJETOSSe define como la acción mediante la cual dos o más objetos interactúan respecto de un fin determinado.

Ejercicio en clase 04:Ejercicio Fracción

CÓDIGO:#include<iostream.h>#include<conio.h>#include<stdio.h>class fraccion{int num,den;public:void ingresar();void imprimir();void validar();fraccion multiplicar(fraccion a, fraccion b);fraccion sumar(fraccion a, fraccion b);fraccion restar(fraccion a, fraccion b);fraccion dividir(fraccion a, fraccion b);};//implementacion de las funcionesvoid fraccion::validar(){while(den==0){cout<<"\n Error,.....Ingrese nuevamente el denominador.\n";cin>>den; } }void fraccion::ingresar(){cout<<"\n Ingrese el numerador: ";cin>>num;cout<<"\n Ingrese el denominador: ";cin>>den;validar();}void fraccion::imprimir(){cout<<"\n La fraccion es: ";cout<<num<<"/"<<den<<endl;}fraccion fraccion::multiplicar( fraccion a, fraccion b){fraccion aux;

Page 23: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

23

aux.num=a.num*b.num; aux.den=a.den*b.den; return(aux);}

fraccion fraccion::sumar(fraccion a, fraccion b){fraccion y;y.den=a.den*b.den;y.num=(((y.den/a.den)*a.num)+((y.den/b.den)*b.num));return (y);}fraccion fraccion::restar(fraccion a, fraccion b){fraccion y;y.den=a.den*b.den;y.num=(((y.den/a.den)*a.num)-((y.den/b.den)*b.num));return (y); }fraccion fraccion::dividir(fraccion a, fraccion b){fraccion d; d.num=a.num*b.den; d.den=a.den*b.num;if(d.den<0){ d.den=(-1)*d.den; //hace que si es que el denominador es negativo el signo se presente en d.num=(-1)*d.num; // frente del numerador } return(d);}//programa pricipalvoid main (){fraccion obj1, obj2, obj3,u,m,d;char op; do{ cout<<"\n\t\t Programa para realizar operaciones entre fracciones.\n"; obj1.ingresar();obj1.imprimir();obj2.ingresar();obj2.imprimir();cout<<"\n Suma: ";obj3=obj3.sumar(obj1, obj2);obj3.imprimir();getch();cout<<"\n Resta: ";u=u.restar(obj1, obj2);u.imprimir();

Page 24: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

24

getch();m=m.multiplicar(obj1, obj2); cout<<"\n Multiplicacion: "; m.imprimir(); getch();cout<<"\n Division: ";d=d.dividir(obj1, obj2);d.imprimir();getch();cout<<"\n Desea seguir operando, presione 'a'. \n Caso contrario cualquier tecla.";cin>>op; clrscr(); }while (op=='a' || op=='A');cout<<"\n\t\t\t\t FIN"; }

PROBLEMA PROPUESTO 03:

El Ejercicio de Fracciones Hecho en clase debemos hacer una función que simplique las respuesta.

Ejercicio en clase 05:Ejercicio Distancia

La clase Distancia tiene dos campos por separado una llamada metros y el otro Kilómetros realizar el ingreso en Kilómetros o en metros, realizar la suma de dos distancias. Utilizar las funciones leer distancia para ingreso de datos e imprimir distancia para ver distancia.

CÓDIGO:#include<iostream.h>#include<conio.h>

class distancia{ double m,k; public: int leerdistancia(); void verdistancia(int a); void validar(double e); distancia sumar(distancia a, distancia b, int r);

Page 25: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

25

distancia convertir(int t);}; int distancia::leerdistancia(){ int op, i=0; do{ cout<<"\n\t\t\t Menu de opciones\n"; cout<<"\n 1.- para distancia en metros.\n"; cout<<"\n 2.- para distancia en kilometros.\n"; cout<<"\n Digite el numero de opcion que desea: \n"; cin>>op; if (op<3 && op>0){

switch (op){ case 1: cout<<"\n Ingrese la distancia: "; cin>>m; validar(m);

break; case 2: cout<<"\n Ingrese la distancia: "; cin>>k; validar(k);

break;} return (op);

} else { cout<<"\n Opcion incorrecta. Vuelva a ingresar los datos.\n"; i++; getch(); clrscr(); } }while (i!=0); } void distancia::verdistancia(int a){ if (a==1){

cout<<"\n la distania es: "; cout<<m<< " metros.\n";

}else if (a==2){cout<<"\n la distania es: ";cout<<k<< " kilometros \n";}

}

Page 26: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

26

void distancia::validar( double e){if(e<=0 ){cout<<"\n Los datos ingresados estas incorrectos.........\n Vuelva a ingresar los datos.\n";getch(); clrscr();leerdistancia(); } } distancia distancia::sumar(distancia a, distancia b,int r){ distancia s; if( r==1) s.m=a.m+b.m; else if (r==2) s.k=a.k+b.k; return(s); } distancia distancia::convertir(int t){ distancia a; if (t==1){ a.k=m/(1000); }else if (t==2){ a.m=(1000)*k; } return (a); } void main (){

distancia a,b,c,d;int e,s;

cout<<"\n\t\t Calcula distancias.\n"; cout<<"\n Distancia 1\n"; e=a.leerdistancia(); a.verdistancia(e); cout<<"\n Distancia 2\n"; s=b.leerdistancia(); b.verdistancia(s); getch(); clrscr();

cout<<"\n \t Suma de las distancias: \n"; if (e==1 && s==2){ b=b.convertir(s); c=c.sumar(a,b,e); c.verdistancia(e);

Page 27: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

27

c=c.convertir(e); c.verdistancia(s);

} else if(e==2 && s==1){ a=a.convertir(e); c=c.sumar(a,b,s); c.verdistancia(s); c=c.convertir(s);

c.verdistancia(e); } else if((e==1 && s==1)){ c=c.sumar(a,b,e); c.verdistancia(e); c=c.convertir(e);

c.verdistancia(e+1); } else if (e==2 && s==2){ c=c.sumar(a,b,e); c.verdistancia(e); c=c.convertir(s);

c.verdistancia(s-1); }

}

CONSTRUCTORES

Son funciones especiales que permiten inicializar un objeto con dato desedo por el programador. Características:

Lleva el mismo nombre de la clase. Nunca devuelve valores.

Tipos de constructores: Constructor con argumentos (recibe datos).

NOTA: Al momento de crear un objeto el constructor se llama

Page 28: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

28

Constructor sin argumentos (No recibe datos). Constructor copia (recibe como dato un objeto). Constructor por defecto. (no tiene implementación de función)

Ejercicio en clase 06:Ejercicio PuntosPermitir el ingreso de las coordenadas de un punto sean estas en polares o rectangulares

CODIGO# include <conio.h># include <iostream.h>class punto{double x, y,radio,angulo;public:int ingreso();void imprimir(int a);punto(); //sin argumentos por que no lleva nada dentro del paréntesispunto(double a, double b,double j, double r); // constructor con argumentospunto(punto &c); // constructor copia};int punto:: ingreso(){int opc;cout<<" Menu \n";cout<<"1.- Rectangulares\n";cout<<"2.- Polares \n";cout <<"ingrese la opcion'n";cin>>opc;while(opc<1 || opc>2){ cout <<"Error ....\n Ingrese nuevamente la opcion del menu: \n";cin>>opc;}switch(opc){case 1:cout<<"Ingrese la coordenada en x\n";cin>>x; cout<<"Ingrese la coordenada en y\n";cin>>y;break;case 2:cout<<"Ingrese el radio \n";cin>>radio; cout<<"Ingrese el angulo \n";cin>>angulo;

Page 29: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

29

break;}return (opc);}void punto:: imprimir(int a){if (a==1) cout<<"("<<x<<","<<y<<")\n"; else cout<<"radio :"<<radio<<" angulo: "<<angulo<<")\n";}//CONSTRUCTOR SIN ARGUMENTOS punto::punto(){x=0;y=0;radio=0;angulo=0;}//CONSTRUCTOR CON ARGUMENTOS punto::punto(double a, double b,double j, double r){ x=a; y=b; radio=j; angulo=r;}//CONSTRUCTOR COPIA punto::punto(punto &c ){x=c.x;y=c.y;radio=c.radio;angulo=c.angulo;}void main (){int w;punto e,g (5,3,0,0),f(e),h;e.imprimir(1);g.imprimir(1);f.imprimir(1);w=h.ingreso();punto z(h);z.imprimir(w);punto s(g);s.imprimir(1);}Por ejemplo el objeto El punto e tiene :

Page 30: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

30

PROBLEMA PROPUESTO 04:

Desarrollar un programa que permita ingresar La hora de inicio de una carrera y el tiempo de finalización de los tres primeros participantes que lleguen a la meta, el programa deberá elegir al ganador.

ARREGLO DE OBJETOSUn arreglo de objetos se define como el contenido total de todos los objetos creados para la ejecución del programa, cada una de estos ubicados en una posición del arreglo.En el arreglo de objetos el constructor que utilizaremos es sin argumentos Ejemplo:

Arreglo A

NOTA.-Para el ejemplo siguiente debemos tener muy en claro lo siguiente:

Para una cadena de caracteres no necesito un for para recorrer el arreglo. Y utilizaremos las aplicaciones que nos brinda la biblioteca <string.h>Una cadena de caracteres se coloca el carácter nulo en la última posición Ejm:Char nombre [6]

E

XYpunto();punto(double a, double b );punto( punto h);ingreso();imrpimir();

0NumDenoIngreso()Imprimi()

1NumDenoIngreso()Imprimi()

2NumDenoIngreso()Imprimi()

Page 31: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

31

Nombre

Para inicializar una cadena de caracteres con carácter en blanco utilizo Strcpy(nombre,” “);

Nombre

Mientras que para el arreglo de caracteres para recorrerlo si necesito un for ya que no podemos utilizar la biblioteca <string.h> Ejm:Char nombre [5]

Nombre Ejercicio en clase 06:

Ejercicio de manejo de arreglo de objetos.Algoritmo para validar una cedula Como validar una cedula de Identidad

Ejm: 1 7 0 4 8 9 2 7 2 6 El Numero que se va a comparar

0 1 2 3 4 5 6 7 8 9Los números pares del arreglo el contenido lo multiplico por 2 y si el resultado se sobre pasa de 9 se le resta 91*2=20*2=08*2=16-9=72*2=42*2=4Y sumamos los resultados 2+0+7+4+4=17Los números impares del arreglo el contenido lo multiplico por 1 y si el resultado se sobre pasa de 9 se le resta 9 menos el ultimo valor ya que ese es el que se compara7*1=74*1=49*1=97*1=7La suma 7+4+9+7=27La suma total de los números impares y pares17 + 27= 44El resultado lo restamos de su decena superior 50-44=6Y si el resultado es igual al último digito de la cedula es porque la CI es válida.

P A O L A 0\

P A O L A

1 7 0 4 8 9 2 7 2 6

Page 32: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

32

Para esto también necesitamos el algoritmo de descomponer en dígitos.

CÓDIGO:

#include <conio.h>#include <iostream.h>#include <string.h>#include <stdlib.h>#include<stdio.h>class estudiante {long int cedula;char ci[11];char nombre [20];int edad;double notas [4];public:void ingreso();void imprimir();void promedio();estudiante();double validar(double nota);int validar_cedula(char h[11]);void validar_edad(int d);};void estudiante::validar_edad(int d){while(d<5 || d>38){cout<<"\n Ingrese nuevamente la edad del alumno: ";cin>>edad;}}int estudiante::validar_cedula(char h[11]){int B[10];long int a;if(h[0]==0){B[0]=0;a=atol(h);long int num=a, c;int i=9, r;do{c=num/10;r=num%10;num=c;B[i]=r;i--;

Page 33: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

33

}while(i>=0);int acum=0, acum1=0, u, l,h;for(int o=0; o<9; o+=2){u=(B[o]*2);if(u>9){u=u-9;}acum=acum+u;}for(int t=1; t<9; t+=2){acum1=acum1+B[t];}l=acum+acum1;h=(10-(l%10));if(h==10){h=0;}if(h==B[9]){return(1);}else {return(0);}}else{long int num, c;a=atol(h);num=a;int i=9, r;do{c=num/10;r=num%10;num=c;B[i]=r;i--;}while(c!=0);int acum=0, acum1=0, u, l,h;for(int o=0; o<9; o+=2){u=(B[o]*2);if(u>9){u=u-9;}acum=acum+u;}

Page 34: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

34

for(int t=1; t<9; t+=2){acum1=acum1+B[t];}l=acum+acum1;h=(10-(l%10));if(h==10){h=0;}if(h==B[9]){return(1);}else{return(0);}}}double estudiante::validar(double nota){while(nota<0 || nota>20){cout<<"\n Ingrese nuevamente la nota: ";cin>>nota;}return (nota);}void estudiante::ingreso(){cout <<"Ingrese la cedula de identidad: ";cin>> ci;while (validar_cedula(ci)==0){fflush(stdout);cout<<"\n Ingrese nuevamente la cedula de identidad: ";cin>>ci;}cout <<"\n Ingrese el Nombre: ";cin>> nombre;cout <<"\n Ingrese la edad: ";cin>> edad;validar_edad(edad);for (int i=0;i<3;i++){cout<<"\n Ingrese la nota "<< i+1<<": ";cin>>notas [i] ;notas[i]=validar(notas[i]);}}void estudiante:: imprimir(){cout<<"\n Cedula de identidad: "<<ci;

Page 35: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

35

cout<<"\n Nombre: "<< nombre;cout<<"\n Edad: "<<edad;for (int i=0; i<=3;i++){if(i<=2){cout<<"\n Nota "<<i+1<<": "<<notas [i];}else {cout<<"\n Promedio: "<<notas[i];}}}void estudiante :: promedio (){notas[3]=(notas [0]+notas[1]+notas[2])/3;}estudiante::estudiante(){cedula=0;strcpy(nombre, " ");edad=0;for(int i=0; i<4; i++){notas[i]=0;}}void main(){estudiante a [1];char op;do{clrscr();cout<<"\n\t Programa para el ingreso de datos de alumnos.\n\n";for (int i=0; i<1; i++){a[i].ingreso();a[i].promedio();}for (int o=0; o<1; o++){a[o].imprimir();}getch();cout<<"\n desea continuar presione 'a'.\n Caso contrario cualquier tecla.";cin>>op;}while(op=='a' || op=='A');clrscr();cout<<"\n \t\t\t FIN DEL PROGRAMA";

}

Page 36: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

36

PROBLEMA PROPUESTO 05:Al ejercicio anterior sumarle una función validar cedulas repetidas

Taller

Programa conjuntos el ingreso de 5 elementos hacer el ingreso, validación, imprimir, unión, intersección.

CODIGO#include<iostream.h>#include<conio.h>class conjuntos{

int u[10];

public:

void ingreso();void imprimir();void copia(conjuntos r,conjuntos s);conjuntos unir ( conjuntos r, conjuntos e);conjuntos interseccion ( conjuntos r, conjuntos s);conjuntos();

};

void conjuntos::ingreso(){

cout<<"\n Ingrese los elementos: ";for (int p=0; p<5;p++){ cout<<"\n Elemento "<<p+1<<": "; cin>>u[p];}

}

void conjuntos::imprimir(){

Page 37: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

37

cout<<"\n Conjunto: \n";cout<<"( ";for (int j=0; j<10; j++){if (u[j]>=0) cout<< u[j]<<" ";} cout<<")";

}

conjuntos::conjuntos(){

for (int i=0; i<10; i++){ u[i]=-1;}

}

conjuntos conjuntos::interseccion( conjuntos r, conjuntos s){

conjuntos w;

for(int i=0; i<5; i++){ for(int o=0; o<5; o++){ if(r.u[i]==s.u[o]){

w.u[i]=r.u[i]; } }}return (w);

}

conjuntos conjuntos :: unir ( conjuntos r, conjuntos e){ conjuntos w;

for(int i=0; i<10; i++){r.u[i+5]=e.u[i];}for(int k=0;k<10;k++){ for(int j=k+1;j<10;j++) {

if(r.u[k]==r.u[j]) r.u[j]=(-1);

Page 38: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

38

}} return (r);

}

void main (){ clrscr(); conjuntos a,b, c,d,cop; a.ingreso(); b.ingreso(); clrscr(); cout<<"Los conjuntos"<<endl; a.imprimir(); b.imprimir(); c=c.interseccion(a, b); cout<<"\nLa Interseccion es:"<<endl; c.imprimir(); cout<<"\n La Union de los Conjuntos:"<<endl; d=d.unir(a,b); d.imprimir(); getch();}

Page 39: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

39

NOTA: Es la que controla a los datos static, son funciones en línea y de preferencia deben ser public

DATOS Y FUNCIONES ESTATICOSCaracterísticas.- Son datos y funciones que no forman parte del objeto. Pueden ser utilizados por los objetos de forma global.Objetivo.- sirve para acumular datos. NOTA.-

Una función miembro static solo puede acceder a datos miembro static no puede acceder a datos miembro normales.Una función normal en cambio si se puede acceder a los datos miembro static.Aquí utilizamos el constructor sobre cargado esto significa que al constructor lo utilizamos para realizar operaciones extras a la inicialización de datos.Una función static no se llama atreves del objeto por que no es parte del objeto, se lo llama atreves de la clase.

Ejemplo de uso de datos y funciones staticEjercicio Notas

Programa que ingrese el nombre y 3 notas del alumno

CODIGO# include <iostream.h>

class nota { double notasc; static int suma_notas; //Datos miembro static static int num_alumnos; //Datos miembro staticpublic:notas (); //Constructorvoid visualizar();static void media_notas(){ float media=suma_notas/ num_alumnos; cout<<”Promedio”<<endl; cout.precision(3); cout<<media<<endl;}

notanota()

visualizar()0

Notanota()

visualizar() 1

notanota()

visualizar()2

notanota()

visualizar()3

Page 40: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

40

NOTA: Se inicializa los datos static antes del void main

};notas ::notas(){cout<<”Ingrese la nota :”<<endl;cin>>notasc;suma_notas+=notas;num_alumnos++;}

void notas:: visualizar(){cout<<”Notas”<<notas<<endl;}

int notas:: suma_notas=0;int notas::num_alumnos=0;

void main(){int i;notas alumno[4];cout<<”Resultado \n”<<endl;for(i=0; i<4;i++){ alumnos[i].visualizar(); notas::media_notas(); // Asi se llama a la función Static }}

Taller:Ejercicio Promedio de Puntos

Realizar un programa que cree un arreglo de objetos de tipo clase punto tiene dos datos miembro x, y, las funciones miembro son escribir el punto el ingreso puede ser en cartesiano o polar con variables estáticas número de puntos , promedio x (saca el promedio de las coordenadas en x). y una desviación estándar (calcula la desviación estándar de todos los puntos). Imprimir la desviación estándar y la media de los puntos de acuerdo a la siguiente ecuación.

σ=√∑i=0n

(X−Xi)

n−1

Page 41: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

41

X=1n∑i=0

n

(Xi)

CODIGO#include<iostream.h>#include<conio.h>#include<math.h>#define pi 3.1416class punto{

float y,x; static float media_x; static int num; public: void imprimir(); void convertir(); punto(); float validar( float a); static void desviacion(punto a[]){ float media=((media_x))/(num); float s=0.0, g=0.0;

cout<<" Promedio"<<endl; cout.precision(3);

cout<<media<<endl;for(int f=0; f<num; f++){

s=s+(pow((media-a[f].x), 2));}g=sqrt((s/(num-1)));cout<<endl<<"La Desviacion:";cout<<g;

}};

float punto::validar(float a){

while(a<=0){ cout<<"\n Dato incorrecto..... Vuelva ha

ingresarlo"; cin>>a;

}

Page 42: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

42

return(a); }void punto::imprimir(){

cout<<"\n El punto en coordenadas rectangulares es: "; cout.precision(4); cout<<"\t("<<x<<","<<y<<")"<<endl;}punto::punto(){ int i, op; do{ i=0; cout<<"\n\nIngrese 1 para coordenadas rectangulares, o \n 2 para Coordenadas polares: \n"; cin>>op; if (op<3 && op>0){ switch(op){ case 1: cout<<"\n Ingrese la coordenada en x: "; cin>> x; cout<<"\n Ingrese la coordenada en y: "; cin>>y; break; case 2: cout<<"\n Ingrese el radio: "; cin>> x; validar(x); cout<<"\n Ingrese el angulo: "; cin>>y; convertir(); break; } imprimir(); } else{ clrscr(); cout<<"\n Opcion incorreta.\n Vuelva ha ingresar su opcion: "; i++; getch(); }

Page 43: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

43

}while(i!=0); num++; media_x=media_x+x;}

float punto::media_x=0;int punto::num=0;

void punto::convertir(){

float t=y*pi/180; float aux=x;

x=aux*(cos(t)); y=aux*(sin(t));

}

void main (){ clrscr();

punto a[3]; cout<<"\n ";

punto::desviacion( a); getch();}

Taller: Ejercicio Anterior

Un Programa que ingrese los datos sea en coordenadas polares o regtangulares validar y convertir.

PROBLEMA PROPUESTO 06:

Se tiene una clase llamada agenda telefónica esta debe permitir ingresar los datos de un apersona y los números de contacto de la misma se deberá manejar un arreglo de objetos de [100], además permitirá buscar datos, eliminar datos, imprimir datos, validar para datos repetidos y presentarlos en forma dinámica al terminar abra una opción para salir del programa y cerrarlo.

Page 44: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

44

SOBRE CARGA DE OPERADORESMediante esto se logra que los objetos sean tratados como cualquier otra variable.int a,b,c;a=5, b=8;c=a + b;datos tipo intfraccion a, b,c;c=a+b;Donde el signo más es el operador sobre cargado y hace que los objetos tipo fracción sean tratados como un dato por ejemplo tipo int.

Símbolos Binarios+ , - , * , / , % , = , += , -= , *= , /=, %=, ==, != , <> ,>=, <= , && , ||Ejemplo: a + bNOTA.- Cuando son símbolos binarios se envía solo un objeto y el de la derecha a + b mientras que a ya está sobre entendido en la maquinaAl declarar la función tenemos una palabra reservada OPERATOR

Símbolos Unitarios+ + , -- , ! , + ,- , * , &Debemos tener cuidado con los simbolos unitarios ya que se sobre escribe los datos anteriores.Ejemplo: + b

NOTA.- Si son dos objetos obedece al operador de la función, si son variables normales obedece al operador que corresponde. Su operación es de dos objetos.

Ejercicio en clase 08:Ejercicio Fracción

Calculo de fracciones con sobre carga de operadores.

CODIGO#include<stdlib.h>#include<iostream.h>#include<conio.h>#include<stdio.h>class fraccion{int num,den;

Page 45: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

45

public:void ingresar();void imprimir();void validar();int validar1(fraccion a);fraccion operator * (fraccion b);int MCD(int num, int den);void operator !();fraccion operator +(fraccion b);fraccion operator -(fraccion b);fraccion operator /(fraccion b);int operator ==(fraccion b); fraccion();};//implementacion de las funciones fraccion::fraccion(){ num=0; den=0; }void fraccion::validar(){ while(den==0){ cout<<"\n Error,.....Ingrese nuevamente el denominador.\n"; cin>>den; }}int fraccion::operator ==(fraccion b){ if ((num==b.num)&&(den==b.den)){ return(0); } else return(1); }

int fraccion::MCD(int num, int den){ int t,i=2,mcd=1; if(num<0 ){ num=(-1)*num; den=(-1)*den; do{ if (num%i==0 && den%i==0)

Page 46: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

46

{ mcd=mcd*i; num=num/i; den=den/i; i=2;}elsei++;}while(i<=num);return(mcd); } else{do{ if (num%i==0 && den%i==0){ mcd=mcd*i; num=num/i; den=den/i; i=2;}elsei++;}while(i<=num);return(mcd); }}

void fraccion::operator !(){ int d=MCD(num, den); num=num/d; den=den/d; } void fraccion::ingresar(){ char a[5], b[5]; cout<<"\n Ingrese el numerador: "; cin>>a; num=atoi(a); cout<<"\n Ingrese el denominador: "; cin>>b;

Page 47: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

47

den=atoi(b); validar(); }void fraccion::imprimir(){ if(num==0){ cout<<"\n La fraccion es: 0\n"; }else if(den==1){ cout<<"\n La fraccion equivale a "<<num<<" como numero entero\n"; } else { cout<<"\n La fraccion es: "; cout<<num<<"/"<<den<<endl; }}

fraccion fraccion:: operator *( fraccion b){ fraccion aux; aux.num=num*b.num; aux.den=den*b.den; return(aux);

} fraccion fraccion::operator+( fraccion b){

fraccion y;y.den=den*b.den;

y.num=(((y.den/den)*num)+((y.den/b.den)*b.num));return (y);}

fraccion fraccion::operator -(fraccion b){fraccion y;y.den=den*b.den;

y.num=(((y.den/den)*num)-((y.den/b.den)*b.num));return (y);}

int fraccion::validar1(fraccion a){ if(a.den==0)

Page 48: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

48

return(0); else

return(1); }

fraccion fraccion::operator /(fraccion b){fraccion d;

if(b.num<0){ b.num=(-1)*b.num; d.num=num*b.den; d.num=(-1)*d.num; d.den=den*b.num; return(d); } else{ d.num=num*b.den; d.den=den*b.num; return(d); }}//programa pricipal

void main (){fraccion a,b,c; int t, as; char op; do{ cout<<"\n\t\t Programa para realizar operaciones entre fracciones.\n"; a.ingresar(); a.imprimir(); b.ingresar(); b.imprimir(); !a; !b; cout<<"\n Suma: "; c=a+b; !c; c.imprimir(); getch();

Page 49: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

49

cout<<"\n Resta: "; c=a-b; !c; c.imprimir(); getch(); c=a*b; !c; cout<<"\n Multiplicacion: "; c.imprimir(); getch(); cout<<"\n Division: "; c=a/b; as=c.validar1(c); if(as==0){ cout<<"\n La division no se puede realizar pues la segunda fraccion es cero.";} else{ !c; c.imprimir(); }getch();t=(a==b);if(t==0){ cout<<"\n Las fracciones ingresadas son iguales.\n";}else{cout<<"\n Las fracciones ingresadas no son iguales.\n";}cout<<"\n Desea seguir operando, presione 'a'. \n Caso contrario cualquier tecla.";cin>>op; clrscr(); }while (op=='a' || op=='A');_exit(0); }

PROBLEMA PROPUESTO 07:

Page 50: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

50

El Programa hecho en clase pero ver si las dos fracciones Son Iguale con Sobre carga de Operadores .

Ejercicio en clase 09: Ejercicio Vectores

Un Programa que realice la suma, resta de vectores, producto cruz, producto punto, el inverso.

CODIGO#include <iostream.h># include <conio.h>#include<stdlib.h>class vector {private:double x,y ,z;public:void ingreso();void imprimir();void validar();vector operator +(vector b);vector operator -(vector b);vector operator *(vector b);double operator /(vector b);void operator ! ();void operator ++ ();void operator =(vector b);int operator ==(vector b);};

void vector ::ingreso(){

Page 51: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

51

cout<<"\n Ingrese la coordenada x: ";cin >> x;cout<<"\n Ingrese la coordenada y: ";cin >> y;cout<<"\n Ingrese la coordenada z: ";cin >> z;validar();}

void vector::validar(){

while(x==0 && y==0 && z==0){cout<<"\n Vector erroneo...........\n Ha ingresado el origen de coordenadas y con este dato las operaciones\n siguientes son obvias";ingreso();}

}void vector :: imprimir(){cout<<"\n El vector es :"<<endl;cout<<"("<<x<<"i ,"<<y<<"j ,"<<z<<"k)"<<endl;}vector vector :: operator + (vector b){vector aux ;aux.x=x+b.x;aux.y=y+b.y;aux.z=z+b.z;return(aux);}

Page 52: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

52

vector vector ::operator -(vector b){vector aux ;aux.x=x-b.x;aux.y=y-b.y;aux.z=z-b.z;return(aux);}vector vector :: operator * (vector b){vector aux;aux.x=((y*b.z)-(z*b.y));aux.y=(-1)*((x*b.z)-(z*b.x));aux.z=((x*b.y)-(y*b.x));return(aux);}double vector :: operator / (vector b){double aux=0;aux=(x*b.x)+(y*b.y)+(z*b.z);return(aux);}void vector:: operator !(){x=x*(-1);y=y*(-1);z=z*(-1);}

void vector :: operator ++(){x++;

Page 53: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

53

y++;z++;}void vector::operator =(vector b) {x=b.x;y=b.y;z=b.z;}int vector::operator ==(vector b){//int a;if ((x==b.x ) && (y==b.y)&&(z==b.z) ) {return(0);}elsereturn(1);}void main(){vector a, b, c;double w;int q;char op;do{clrscr();cout<<"\n\t\t Interaccion de 2 vectores en 3 dimensiones.\n\n";a.ingreso();a.imprimir();b.ingreso();b.imprimir();

Page 54: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

54

c=a+b;cout<<"\n Suma entre Vectores";c.imprimir();getch();cout<<"\n Resta";c=a-b;c.imprimir();getch();cout<<"\n Producto Cruz";c=a*b;c.imprimir();getch();cout<<"\n Producto Punto: ";w=a/b;cout<<w<<endl;getch();if ((a==b)==0) {cout<<"\n Vectores iguales.\n Cambiando vector a por -a.......";!a;a.imprimir();getch();}else {cout<<"\n Vectores desiguales. \n Sumando uno a cada coordenada......";a++;a.imprimir();getch();}

Page 55: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

55

cout<<"\n Copiando vector b en a......";a=b;a.imprimir();

cout<<"\n Desea continuar presione 'a'. \n Caso contrario cualquier tecla. ";cin>>op;}while(op=='a' || op=='A');_exit(0);

}

Taller: Ejercicio Anterior

Un Programa que realice la operación entre Vectores

PROBLEMA PROPUESTO 08:

El Programa de conjuntos pero con sobre carga.

Taller: Ejercicio Matrices

Un Programa que realice la suma , resta, multiplicación de matrices la clase se llamara matriz y sus datos miembro num_filas, num_columnas las funciones ingreso, imprimir con todos los operadores sobre cargados.

CODIGO

#include<iostream.h>#include<conio.h>#include<stdio.h>

Page 56: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

56

class matriz{int f,c;int m[10][10];public:void ingreso();void imprimir();matriz operator +(matriz b);matriz operator – (matriz b);matriz operator * (matriz b);};

void matriz :: ingreso(){ char f1[3],c1[3]; cout<<”\n Ingrese el Numero de Filas : ”; cin>>f1; f= atoi(f1); while(f<=0){ cout<<”\n Erro……Solo numeros positivos ….\n Ingrese el numero de filas :\n”; cin>>f1; f=atoi(f1); } cout<<”\n Ingrese el Numero de Columnas :”; cin>> c1; c=atoi(c1); while(c<=0){ cout<<”\n Erro……Solo numeros positivos ….\n Ingrese el numero de colmnas :\n”; cin>>c1; c=atoi(c1); } for( int i=0; i<f; i++ ){ for(int j=0;j<c;j++){ cout<<”Elemento(”<<i<<”,”<<j<<”) : ”; cin>>m[i][j]; } }}

Page 57: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

57

void matriz ::imprimir(){cout<<”\n Numero de Fila : ”<<f<<”\n”;cout<<”\n Numero de Columnas : ”<<c<<”\n”;for( int i=0; i<f;i++){ for(int j=0; j<c ; j++){ cout<<” “<<m[i][j]; } cout <<”\n”;}}

matriz matriz :: operator +(matriz b){ matriz aux; if ((f==b.f ) && (c==b.c){ aux.f=f; aux.c=c; for(int i=0 ; i<f; i++){ for(int j=0 ;j<c ;j++){ aux.m=m[i][j]+b.m[i][j]; } } }else{ clrscr(); cout<<”\n No se puede realizar la suma……\n Matrices no son Iguales \n”; getch(); }return(aux);}

matriz matriz :: operator -(matriz b){ matriz aux; if ((f==b.f ) && (c==b.c){ aux.f=f; aux.c=c; for(int i=0 ; i<f; i++){ for(int j=0 ;j<c ;j++){ aux.m=m[i][j]-b.m[i][j];

Page 58: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

58

} } }else{ clrscr(); cout<<”\n No se puede realizar la suma……\n Matrices no son Iguales \n”; getch(); }return(aux);}

matriz matriz :: operator *( matriz b){matriz aux;imt a,k; if(c==b.f ){ aux.f=f; aux.c=b.c; for(int i=0; i<f;i++){ for(int j=0 ; j<c ; j++){ k=0 , a=0; do{ a=a+m[i][k]*b.m[k][j]; k++; }while(k<c); aux.m[i][j]=a; } } }}matriz :: matriz(){f=0;c=0;for (int i=0 ; i<f ; i++){ for(int j=0; j<c ;j++){ m[i][j]=0; } }}

void main(){

Page 59: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

59

matriz a,b,c;char op;clrscr();do{a.ingreso();b.ingreso();clrscr();a.imprimir();b.imprimir();cout<<”\n La Suma : \n”;c=a+b;c.imprimir;cout<<”\n La Resta : \n”;c=a-b;cout<<”\n La Multiplicacion :\n”;c=a*b;c.imprimir();cout<<”\n Desea Continuar presione a caso contrario cual quier otra tecla\n”;cin>>op;}while(op==’a’ || op==’A’);getch();}

FUNCIONES AMIGASSon funciones externas especiales que no pertenecen a la clase a las cuales se les proporciona permiso para acceder a un objeto.E estas funciones se debe enviar el objeto ya que no hay datos preestablecidos.friend .- Palabra Reservada.Ejercicio en clase 10:

Ejercicio FraccionesCalculo de fracciones con sobre carga de operadores y funciones amigas

CODIGO #include<iostream.h>#include<conio.h>#include<stdio.h>

Page 60: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

60

Tipo de retorno Los objetos enviados

Debe enviarse un objeto

class fraccion{ int num,deno; public; fraccion(); friend fraccion operator * (fracion a ,fraccion b); friend fraccion operator / (fracion a ,fraccion b); friend fraccion validar(fraccion a ); void ingreso();};

fraccion operator *(fraccion a, fracccion b){ fraccion aux; aux.num=a,num* b.num; aux.deno=a.deno*b.deno;return(aux);}

fraccio validar(fraccion a ){ while( a.deno==0){ cout<<”\n Error…….Ingrese de nuevo el denominador”; cin>>a.deno; }return(a);} void fraccion :: ingreso(){ cout<<”\n Ingrese el Numerador \n”; cin>>num; cout<<”\n Ingrese el Numerador \n”; cin>>num;

}void main(){ fraccion a,b,c; a.ingreso(); a=validar(a); b.ingreso(); b=validar(b); a.imprimir(); b.imprimir(); c=a*b;

Page 61: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

61

c.imprimir();}

Taller Un Programa que realice la suma, resta, multiplicación y división de números complejos.

CODIGO

#include<iostream.h>#include <conio.h>class complejo{ private; double real,imag; public: void ingreso(); void imprimir(); friend complejo operator + (complejo a, complejo b); friend complejo operator - (complejo a, complejo b); friend complejo operator * (complejo a, complejo b); friend complejo operator /(complejo a, complejo b);};

void complejo :: ingreso(){ cout<<”\n Ingrese la parte Real : ”; cin>>real; cout<<”\n Ingrese la parte Imaginaria : ”; cin>>imag;}

void complejo :: imprimir(){ cout<<”(”<<real<<”,”<<imag<<” j )\n”;}

complejo operator +(complejo a, complejo b){ complejo aux; aux.real=a.real +b.real; aux.imag=a.imag+ b.imag;return(aux);

Page 62: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

62

}

complejo operator - (complejo a, complejo b){ complejo aux; aux.real=a.real - b.real; aux.imag=a.imag - b.imag;return(aux);}

complejo operador *( complejo a, complejo b){ complejo aux; aux.real=(a.real*b.real)-(a.imag*b.imag) ; aux.imag= (a.real*b.imag)+(a.imag*b.real); return(aux);}

complejo operator /(complejo a, complejo b){ complejo aux; aux.real= ((a.real*b.real+a.imag*b.imag)/(b.real*b.real+b.imag*b.imag)) ; aux.imag=((a.imag*b.real - a.real*b.imag)/(b.real*b.real+b.imag*b.imag)) ; return(aux);}

void main(){ clrscr(); complejo a, b,c;char op;do{ a.ingreso(); b.ingreso(); a.imprimir(); b.imprimir(); cout<<”\n La Suma es : ”; c=a+b; c.imprimir(); cout<<”\n La Resta es : ”; c=a-b; c.imprimir();

Page 63: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

63

Objeto de Salida Nom de Clase Tipo de valor retornado Objeto

cout<<”\n La Multiplicacion es : ”; c=a*b; c.imprimir(); cout<<”\n Division es : ”; c=a/b; c.imprimir(); cout<<”\nSi desea Ingresar presione a caso contrario cualquier otra tecla \n ”; cin>> op;} while(op==’a’ || op ==’A’);}

SOBRE CARGA DE CIN Y COUTEste me permite imprimir o leer un objeto.Es ambien una funcion amiga

COUTExiste un objeto llamado ostream Retorna OS;En la declaracion de la clase: friend ostream & operator <<(ostream & os, fraccion &c);

La Funcion:ostream & operator <<(ostream & os, fraccion &c){cout<<”El numero ;”;cout<<c.num;return(os);}

En el programa principal:void main(){fraccion a;cout<<a;}

CIN

Existe un objeto llamado istream

Page 64: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

64

Objeto de Salida Nom de Clase Tipo de valor retornado Objeto

Retorna IN;En la declaración de la clase: friend istream & operator >>(istream & in, fraccion &c);

La Función:istream & operator >>(istream & in, fraccion &c){cout<<” Ingrese el numero ;”;cin>>c.num;return(in);}

En el programa principal:void main(){fraccion a;cin>>a;}

Ejercicio en clase 11: Ejercicio Complejos

Un Programa que realice la suma, resta, multiplicación y división de números complejos.

CODIGO

# include <iostream.h># include<conio.h>class complejo { double real,imag; public: complejo(); friend istream & operator >>(istream &in, complejo &c); friend ostream & operator >>(ostream &os, complejo &c); friend complejo operator + (complejo a , complejo b); friend complejo operator - (complejo a , complejo b); friend complejo operator * (complejo a , complejo b); friend complejo operator / (complejo a , complejo b);};

complejo:: complejo(){

Page 65: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

65

real=0;imag=0;}

istream & operator >>(istream &in, complejo &c){cout<<”\n Ingrese la Parte Real : ”;cin>>c.real;cout<<”\n Ingrese la Parte Imaginaria : ”;cin>>c.imag;return(in);}

ostream & operator<<(ostream &os, complejo &c){cout<<”\n ( ”<<c.real<<” , ”<<c.imag<<” j) \n”;return(os);}

complejo operator + (complejo a, complejo b){complejo aux; aux.real=a.real + b.real;aux.imag=a.imag+b.imag;return(aux);}

complejo operator - (complejo a, complejo b){ complejo aux; aux.real=a.real - b.real; aux.imag=a.imag - b.imag;return(aux);}

complejo operador *( complejo a, complejo b){ complejo aux; aux.real=(a.real*b.real)-(a.imag*b.imag) ; aux.imag= (a.real*b.imag)+(a.imag*b.real); return(aux);}

complejo operator /(complejo a, complejo b){ complejo aux;

Page 66: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

66

aux.real= ((a.real*b.real+a.imag*b.imag)/(b.real*b.real+b.imag*b.imag)) ; aux.imag=((a.imag*b.real - a.real*b.imag)/(b.real*b.real+b.imag*b.imag)) ; return(aux);}

void main(){ clrscr(); complejo a, b,c; char op; do{ cin>>a; cin>>b; cout<<”\n Complejo 3 : ”; cout<< a; cout<<”\n Complejo 2 : ”; cout<< b; cout<<”\n La Suma es : ”; c=a+b; c.imprimir(); cout<<”\n La Resta es : ”; c=a-b; c.imprimir(); cout<<”\n La Multiplicacion es : ”; c=a*b; c.imprimir(); cout<<”\n Division es : ”; c=a/b; c.imprimir(); cout<<”\nSi desea Ingresar presione a caso contrario cualquier otra tecla \n ”; cin>> op;} while(op==’a’ || op ==’A’);}

Taller Desarrollar un Programa que realice la multiplicación de un polinomio de 4 grado con sobrecarga

Page 67: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

67

CODIGO

# include <iostream.h># include <conio.h># include <stdlib.h>class polinomio{ int grado; int cof[18]; public: friend ostream & operator <<(ostream &os, polinomio &c); friend istream & operator >>(istream &in, polinomio &c); polinomio(); polinomio operator +( polinomio b); polinomio operator -( polinomio b); polinomio operator *( polinomio b);};istream & operator>>(istream &in, polinomio &c){char gr[2]; /*cout<<"\n \t Ingrese el Grado del Polinomio : "; cin>>gr; grado= atoi(gr); while(grado<=0 || grado>=5){ cout<<"\nError...Solo Numeros Positivos Hasta Grado 4"; cout<<"\n \t Ingrese el Grado del Polinomio : "; cin>>gr; grado= atoi(gr);*/ cout<<"\n Los Coficiente: "; //} for(int i=4;i>=0;i--){ cout<<"\n X^"<<i<<" :"; cin>>c.cof[i]; }}ostream &operator <<(ostream &os,polinomio &c){ cout<<"\n Polinomio:\n ";

cout<<"\t "; for(int i=10; i>=0; i--){

if(c.cof[i]!=0 ){ if(i==0){

if(c.cof[i]>0){ cout<<"+"<<c.cof[i]<<"";}else cout<<c.cof[i]<<" ";

Page 68: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

68

}else{ if(c.cof[i]>0){ cout<<"+ "<<c.cof[i]<<"x^"<<i<<" ";}else cout<<c.cof[i]<<"x^"<<i<<" ";}}

} cout<<"\n";

}polinomio polinomio::operator +(polinomio b){ polinomio aux,aux1;/* if(grado>b.grado){ aux.grado=grado; for(int i=0;i<aux.grado+1;i++) aux.cof[i]=cof[i]; }else{ if(grado<b.grado){ aux.grado=b.grado; for(int j=0;j<aux.grado+1;j++) aux.cof[j]=b.cof[j]; }else{ aux.grado=grado; for(int k=0;k<aux.grado+1;k++) aux1.cof[k]=cof[k]; } } */ for(int l=0;l<12;l++){ aux.cof[l]=cof[l]+b.cof[l]; } return(aux);}polinomio polinomio::operator -(polinomio b){ polinomio aux,aux1; /*if(grado>b.grado){ aux.grado=grado; for(int i=0;i<aux.grado+1;i++) aux.cof[i]=cof[i]; }else{ if(grado<b.grado){ aux.grado=b.grado;

Page 69: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

69

for(int j=0;j<aux.grado+1;j++) aux.cof[j]=b.cof[j];

}else{ aux.grado=grado; for(int k=0;k<aux.grado+1;k++) aux1.cof[k]=cof[k]; } } */

for(int l=0;l<12;l++){ aux.cof[l]=cof[l]-b.cof[l]; } return(aux);}

polinomio::polinomio(){ for(int i=0;i<18;i++){ cof[i]=0; } grado=0;}

polinomio polinomio::operator *( polinomio b){ polinomio c; int i;

for(i=0;i<12;i++){ for(int j=0;j<12;j++){

c.cof[i+j]+=(cof[i]*b.cof[j]); } } return (c);

}

void main(){ polinomio a,b,c; clrscr(); cout<<"\n \tIngreso de Polinomios\n"; cin>>a;

Page 70: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

70

cin>>b; cout<<a; cout<<b; cout<<"\nLa suma De Polinomios\n" ; c=a+b; cout<<c; cout<<"\nLa Resta De Polinomios\n"; c=a-b; cout<<c; cout<<"\nLa Multiplicacion De Polinomios\n"; c=a*b; cout<<c;

getch();}PROBLEMA PROPUESTO 09:Crear una clase fecha que pemita ingresar una fecha verificar si el año es bsiesto y sumar un dia a la fecha ingresada, además comparar con otra fecha ingresada para ver si estas son o no iguales.

Ejercicio en clase 12: Ejercicio Cadena

Se tiene una clase con una dato miembro llamada cadena con un espacio máximo de 80 caracteres realizar un constructor que inicialice la cadena en espacio en blanco un operador + que me permita sumar dos cadenas de caracteres y un = que me permita ver si 2 cadenas de caracteres son iguales.

CODIGO

#include<iostream.h>#include<conio.h>#include<string.h>#include<stdlib.h>class palabra{char cadena [80];public:palabra(); //friend void operator +(palabra c);friend palabra operator +(palabra a, palabra b);friend int operator ==(palabra a, palabra b);friend istream & operator>>(istream & cad, palabra &c);friend ostream & operator<<(ostream & sal, palabra &c);friend palabra operator !(palabra a);

Page 71: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

71

};palabra ::palabra(){strcpy(cadena," ");}palabra operator +(palabra a, palabra b){palabra aux;strcpy(aux.cadena, strcat(a.cadena, b.cadena));return(aux);}/*void operator +(cadena a, cadena b){strcat(a.cadena, b.cadena);} */ //uso de otra formaint operator ==(palabra a, palabra b){int u=1;u=strcmp(a.cadena, b.cadena);return(u);}istream & operator >>(istream & cad, palabra &c){cout<<"\n Ingrese la cadena de caracteres: ";cad>>c.cadena;return (cad);}ostream & operator<<(ostream & sal, palabra &c){cout<<"\n La cadena es: ";sal<<c.cadena;cout<<"\n";return (sal);}palabra operator !(palabra a){palabra aux;strcpy(aux.cadena,strrev(a.cadena));return (aux);}void main(){palabra a, b, c;int o=0;char op;do{clrscr();cout<<"\n \t\t Trabajando con cadenas.\n";cout<<"\n Ingrese cadena A: ";cin>>a;cout<<"\n Ingrese cadena B: ";cin>>b;

Page 72: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

72

cout<<b;cout<<"\n Sumando A+B: ";c=a+b;cout<<c;//a+b;//cout<<a;o=(a==b);if(o==0){cout<<"\n Cadena A igual a Cadena B.\n";}else{cout<<"\n Cadena A no es igual a Cadena B.\n";}a=!a;cout<<"\n Cadena A Invertida: ";cout<<a;cout<<"\n Cadena B invertida: ";b=!b;cout<<b;cout<<"\n Ingrese 'a' para continuar: ";cin>>op;}while(op=='a' || op=='A');_exit(0);}

Taller Desarrollar en el programa Anterior si las cadena de caracteres con iguales y la suma de ellas (Ya esta implementado en el código)

HERENCIALa 'herencia' es una de las piedras angulares de la POO ya que ésta permite la creación de clasificaciones jerárquicas. Con la herencia, es posible crear una clase general que defina tratos comunes a una serie de elementos relacionados. Esta clase podría luego ser heredada por otras clases más específicas, cada una agregando solo aquellas cosas que son únicas para la clase 'heredera'

Page 73: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

73

CILINDRO

CONO ESFERACIRCULO

FIGURA

Todos los Datos miembro o funciones Heredadas por una CLASE BASE O MADRE son compartidos a las CLASES HIJAS.

EJEMPLO

Clase Madre

Clases Hijas

Ejercicio en clase 13: Ejercicio Figura

Un Programa que realice el área, volumen del circulo, cilindro, cono y esfera

CODIGO

# include<iostream.h># include<math.h># define PI 3.1416

class figura{protected:float radio;public:void leer_radio();void escribir_radio();};

class circulo : public figura{protected: //Para heredar yo no pongo prívate, es para proteger los datos del programa //principal float area; public: float area_circulo(); void imprimir_circulo();};

Page 74: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

74

class esfera :public figura{protected:float volumen;float area; public: float area_esfera(); float volumen_esfera(); void imprimir_esfera();};class cilindro :public circulo{ protected:float altura;float area,volumen; public: void leer_altura(); float area_cilindro(); float volumen_cilindro(); void imprimir_cilindro();};class cono :public circulo{ protected:float lado;float area,volumen; float altura; public: void leer_lado(); float area_cono(); float volumen_cono(); void imprimir_cono();};void figura:: leer_radio(){ cout<<"\n Ingrese el radio \n"; cin>>radio; }

void figura:: escribir_radio(){ cout<<"\n radio es:";}float circulo:: area_circulo(){ area=PI*radio*radio; return(area);}

void circulo :: imprimir_circulo(){

Page 75: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

75

cout<<"\n Area del circulo"<<area;}

float esfera::area_esfera(){ area=4*PI*pow(radio,2); return(area);}

float esfera :: volumen_esfera(){ volumen=4.0/3*PI*pow(radio,3); return(volumen);} void esfera:: imprimir_esfera(){ cout<<"\n area de la esfera"<<area; cout<<"\n Volumen de la esfera :"<<volumen;}

void cilindro :: leer_altura(){ cout<<"\n Ingrese altura del cilindro "; cin>>altura;}

float cilindro :: area_cilindro (){ area=2*PI*radio*altura+2*area_circulo(); return(area);}

float cilindro:: volumen_cilindro(){ volumen=area_circulo()*altura; return(volumen);}

void cilindro::imprimir_cilindro(){ cout<<"\n Area del cilindro "<<area; cout<<"\n Volumen del cilindro "<<volumen;}

void cono:: leer_lado(){ cout<<"\n Ingrese el lado: "; cin>>lado;}

void cono::imprimir_cono(){ cout<<"Lado ="<<lado;

Page 76: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

76

cout<<"El area es ="<<area; cout<<"El volumen es ="<<volumen;}

float cono::volumen_cono(){ altura=sqrt(pow(lado,2)-pow(radio,2)); volumen=1.0/3*area_circulo()*altura; return(volumen);}

float cono::area_cono(){ area=PI*radio*lado; return(area);}

void main(){ circulo a; esfera b; cilindro c; cono d; cout<<"\n Area del Circulo"; a.leer_radio(); a.area_circulo(); a.imprimir_circulo(); cout<<"\n Area y Volumen del la esfera"; b.leer_radio(); b.area_esfera(); b.volumen_esfera(); b.imprimir_esfera(); cout<<"\n Area y Volumen del Cilindro"; c.leer_radio(); c.leer_altura(); c.area_cilindro(); c.volumen_cilindro(); c.imprimir_cilindro(); cout<<"\n Area y Volumen del Cono"; d.leer_radio(); d.leer_lado(); d.area_circulo(); d.volumen_cono(); d.area_cono(); d.imprimir_cono();}

Page 77: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

77

FIGURADatos Miembro

radioFun Miembro

leer_radio()escribir_radio()

CIRCULODatos Miembro

áreaFun Miembroarea_circulo()

imprimir_circulo()Heredadoradio

Fun Miembroleer_radio()

escribir_radio()

ESFERADatos Miembro volumen, áreaFun Miembroarea_esfera()

volumen_esfera()imprimir_esfera()Heredado

radioFun Miembroleer_radio()

escribir_radio()

CILINDRODatos Miembro

altura, área,volumenFun Miembro

leer_altura()area_cilindro()

volumen_cilindro()imprimir_cilindro()Heredado

radio, áreaFun Miembroarea_circulo()

imprimir_circulo()leer_radio()

escribir_radio()

El funcionamiento del programa como hereda cada una de las clases

Nota: No se puede guarda un dato anterior a una mismas variable ya que son objetos diferentes.Si necesito algún dato o función hago que sea parte de la clase base

Taller El Programa anterior implementado Cono heredando Círculo

CONODatos Miembro altura, lado, área,volumenFun Miembroleer_lado()area_cono()volumen_cono()imprimir_cono()Heredadoradio, áreaFun Miembroarea_circulo()imprimir_circulo()leer_radio()

Page 78: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

78

La implementación ya está en el código anterior.

FORMATOS DE ENTRADA Y SALIDAHablamos de Formatos de entrada y salida cuando los datos se leen del teclado y se muestran en pantalla.En C++ Tenmos varias opciones para estos formatos en las cuales las siguientes librerías

<iostream.h>En esta librería encontramos CIN y COUT

cin, que toma caracteres de la entrada estándar (teclado);cout, pone caracteres en la salida estándar (pantalla);cerr y clog ponen mensajes de error en la salida estándar.EJEMPLOPodemos visualizar que en los ejercicos anteriores realizamos con cin y cout #include <math.h> #include <conio.h> #include <iostream.h> #include <stdio.h>

CONODatos Miembro altura, lado, área,volumenFun Miembroleer_lado()area_cono()volumen_cono()imprimir_cono()Heredadoradio, áreaFun Miembroarea_circulo()imprimir_circulo()leer_radio()

Page 79: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

79

class triangulo{private :double lado1;double lado2;double lado3;public:void ingreso();int validar();void imprimir();int comprobacion();float calcular_area();float calcular_perimetro();

} ;

void triangulo:: ingreso(){

cout<<"\nIngreso el lado a: "<<endl;cin>>lado1;cout<<"\nIngreso el lado b: "<<endl;cin>>lado2;cout<<"\nIngreso el lado c: "<<endl;cin>>lado3;

}

int triangulo:: validar(){

int a=0;

Page 80: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

80

if (lado1<=0 || lado2<=0 || lado3<=0) { a=1; } return (a); }

int triangulo:: comprobacion(){

int a=0;if

((lado1<(lado2+lado3))&&(lado2<(lado1+lado3))&&(lado3<(lado1+lado2))){

a=a+1;} return (a);}

void triangulo:: imprimir(){cout<<"Lo datos ingresados son: \n";cout<<" lado a= "<<lado1<<endl;cout<<" lado b= "<<lado2<<endl;cout<<" lado c= "<<lado3<<endl;}

float triangulo :: calcular_area()

Page 81: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

81

{// El Mecanisno utilizado es la formula generalizada para cualquier tipo de triangulo// La Formula de HERON

double s,a,aux;s=(lado1+lado2+lado3)/2;a=(s*(s-lado1)*(s-lado2)*(s-lado3));aux=sqrt(a);return (aux);}

float triangulo:: calcular_perimetro(){float aux;// variable localaux=lado1+lado2+lado3;return (aux);}

//programa pricipalvoid main(){clrscr();int y,x;double b,a;

char op; do{

cout<<"\t Programa para alcular el area y el perimetro de un triangulo"<<endl;

Page 82: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

82

triangulo obj1;obj1.ingreso();

obj1.imprimir();y=obj1.validar();

x=obj1.comprobacion();if (y!=1 && x!= 0){

cout<<"El perimetro es: "<<endl<<obj1.calcular_perimetro()<<" unidades"<<endl;

b=obj1.calcular_perimetro();a=obj1.calcular_area();cout<<"El area del triangulo: \n"<<a<<" unidades cuadradas"<<endl;getch();cout<<"\n Ingrese ´a´ si desea continuar.\n Caso contrario cualquier

tecla."<<endl; cin>>op; fflush(stdin); clrscr(); } else { cout<<"\n Los valores estan incorrectos o no forman un triangulo."<<endl; getch();

cout<<"\n Ingrese ´a´ si desea continuar.\n Caso contrario cualquier tecla."<<endl; cin>>op; fflush(stdin); clrscr();

Page 83: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

83

} }while (op=='a' || op=='A'); cout<<"\n \n \t\t\t FIN\n"; getch();

}

<stdio.h>En esta librería encontramos PRINTF y SCANF

printf(): Escribe datos en la consola con el formato especificado.

scanf(): Función de entrada por consola con el formato especificado.

Tambien encontramos

int printf (" caracteres de transmisión y escape", lista de argumentos);

int scanf (" caracteres de transmisión y escape", lista de argumentos);EJEMPLO

#include <stdio.h>void main(){int num;printf( "Introduce un número " );scanf( "%i", &num );printf( "Has tecleado el número %i\n", num );}

Tambien tenemos formatos de Entrada y Salida por consola es decir que no tiene formato como

getchar().-Lee un carácter del teclado putchar().-Imprime un carácter en pantalla en la posición actual del

cursor. gets().-Lee una cadena de caracteres introducida por el teclado y la

sitúa en una dirección apuntada por su argumento de tipo puntero a carácter.

puts().- Escribe su argumento de tipo cadena en la pantalla seguida de un carácter de salto de línea

EJEMPLO

Page 84: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

84

#include <stdio.h>main(){char cadena[10];int i;i=getchar();putchar(i);gets(cadena);puts(cadena);}

SOLUCIONESEste ítem contiene:Correccion delos problemas propuestos y de los problemas a los cuales no se ha hecho mención por ser una versión nueva de los programas anteriormente nombrados:

SOLUCIÓN PROBLEMA PROPUESTO 01:

#include<iostream.h>#include<conio.h>

Page 85: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

85

#include<stdio.h>

//delaracion de la clase

class temperatura{int grados;public:void ingresar();void imprimir();float convertir();

} ;

//implementacion de las funciones

void temperatura::ingresar(){cout<<"Ingrese la cantidad de grados Centigrados: "<<endl;cin>>grados;}

void temperatura::imprimir(){cout <<"El valor en grados Centigrado es: "<<endl;

}

float temperatura::convertir(){float a=1.8;int e=32;

float t;t=(grados*a)+e;return (t);}

// programa principal

void main (){float u;char op;do {clrscr();temperatura conversor;

Page 86: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

86

cout<<"\n\tPrograma para convertir grados Centigrados en grados Farenheit"<<endl<<endl;conversor.ingresar();u=conversor.convertir();cout<<endl<<"El valor en grados Fahrenheit es: "<<u<<" F"<<endl;getch();cout<<"\n Ingrese 'a' si desea continuar.\n Caso contrario cualquier tecla."<<endl;cin>>op;

fflush(stdin);}while (op=='a' || op=='A');cout<<"FIN\n";getch();}SOLUCIÓN PROBLEMA PROPUESTO 02:

#include <math.h>#include <conio.h>#include <iostream.h>#include <stdio.h>

class triangulo{private :double lado1;double lado2;double lado3;public:void ingreso();int validar();void imprimir();int comprobacion();float calcular_area();float calcular_perimetro();} ;

void triangulo:: ingreso(){

cout<<"\nIngreso el lado a: "<<endl;cin>>lado1;cout<<"\nIngreso el lado b: "<<endl;cin>>lado2;cout<<"\nIngreso el lado c: "<<endl;cin>>lado3;

Page 87: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

87

}

int triangulo:: validar(){

int a=0;if (lado1<=0 || lado2<=0 || lado3<=0){

a=1;}return (a);}

int triangulo:: comprobacion(){

int a=0;if ((lado1<(lado2+lado3))&&(lado2<(lado1+lado3))&&(lado3<(lado1+lado2))){a=a+1;}return (a);}

void triangulo:: imprimir(){cout<<"Lo datos ingresados son: \n";cout<<" lado a= "<<lado1<<endl;cout<<" lado b= "<<lado2<<endl;cout<<" lado c= "<<lado3<<endl;}

float triangulo :: calcular_area()

{// El Mecanisno utilizado es la formula generalizada para cualquier tipo de triangulo// La Formula de HERON

double s,a,aux;s=(lado1+lado2+lado3)/2;

Page 88: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

88

a=(s*(s-lado1)*(s-lado2)*(s-lado3));aux=sqrt(a);return (aux);}

float triangulo:: calcular_perimetro(){float aux;// variable localaux=lado1+lado2+lado3;return (aux);}

//programa pricipalvoid main(){clrscr();int y,x;double b,a;char op;do{cout<<"\t Programa para alcular el area y el perimetro de un triangulo"<<endl;

triangulo obj1;obj1.ingreso();obj1.imprimir();y=obj1.validar();x=obj1.comprobacion();if (y!=1 && x!= 0){

cout<<"El perimetro es: "<<endl<<obj1.calcular_perimetro()<<" unidades"<<endl;b=obj1.calcular_perimetro();a=obj1.calcular_area();cout<<"El area del triangulo: \n"<<a<<" unidades cuadradas"<<endl;getch();cout<<"\n Ingrese ´a´ si desea continuar.\n Caso contrario cualquier tecla."<<endl;cin>>op;

fflush(stdin);clrscr();}

Page 89: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

89

else {cout<<"\n Los valores estan incorrectos o no forman un triangulo."<<endl;getch();cout<<"\n Ingrese ´a´ si desea continuar.\n Caso contrario cualquier tecla."<<endl;cin>>op;

fflush(stdin);clrscr();}}while (op=='a' || op=='A');cout<<"\n \n \t\t\t FIN\n";getch();}

SOLUCIÓN PROBLEMA PROPUESTO 03:

Al ejercicio olo debera agresarle esto y estara terminado:

int fraccion::MCD(int num, int den){int t,i=2,mcd=1;do{if (num%i==0 && den%i==0){mcd=mcd*i;num=num/i;den=den/i;i=2;}elsei++;}while(i<=num);return(mcd);}fraccion fraccion::simplificar(fraccion a){fraccion s;int d=s.MCD(a.num, a.den);s.num=a.num/d;s.den=a.den/d;return (s);}

SOLUCIÓN PROBLEMA PROPUESTO 04:

Page 90: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

90

#include<iostream.h>

#include<conio.h>

class tiempo{int h, m, s;public:void ingreso();void imprimir();void validar_hora();void validar_min();void validar_seg();tiempo elegir_ganador(tiempo q,tiempo w,tiempo u);void validar_total(tiempo j, tiempo r);tiempo calcular(tiempo d,tiempo e);tiempo ();tiempo( int a, int b, int c);void elegir(tiempo uno, tiempo x, tiempo y, tiempo z);

};

void tiempo::validar_hora(){

while(h<0 || h>23){

cout<<"\n Ingrese nuevamente la hora: ";

cin>>h;

}

}

void tiempo::validar_min(){

while(m<0 || m>=60){

cout<<"\n Ingrese nuevamente los minutos: ";

cin>>m;

}

Page 91: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

91

}

void tiempo::validar_seg(){

while(s<0 || s>=60){

cout<<"\n Ingrese nuevamente los minutos: ";

cin>>s;

}

}

void tiempo::ingreso(){

cout<<"\n Ingrese la hora: ";

cin>>h;

validar_hora();

cout<<"\n Ingrese los minutos: ";

cin>>m;

validar_min();

cout<<"\n Ingrese los segundos: ";

cin>>s;

validar_seg();

}

void tiempo::imprimir(){

Page 92: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

92

cout<<"\n La hora es: ";

cout<<h<<"h: "<<m<<"m: "<<s<<"s";

}

tiempo::tiempo(){

h=0;

m=0;

s=0;

}

tiempo::tiempo(int a, int b, int c ){

h=a;

m=b;

s=c;

}

tiempo tiempo::calcular( tiempo d, tiempo e){

tiempo a;

a.s=d.s-e.s;

Page 93: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

93

if (a.s<0){

a.s=a.s+60;

e.m=e.m-1;

}

a.m=d.m-e.m;

if(a.m<0){

a.m=a.m+60;

e.h=e.h-1;

}

a.h=d.h-e.h;

if (a.h<0){

a.h=a.h+24;

}

return (a);

}

void tiempo::validar_total(tiempo i, tiempo f){

if(f.h<i.h ){

cout<<"\n hora de termino incorrecta......\n Vuelva a ingresar la hora nuevaente. ";

ingreso();

}

}

Page 94: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

94

tiempo tiempo::elegir_ganador(tiempo q,tiempo w,tiempo u){

//para las horas escojo la menor

tiempo aux,z;

aux.h=q.h;

if(aux.h>w.h){

aux.h=w.h;

}

else {

aux.h=aux.h;

}

if(aux.h>u.h){

aux.h=u.h;

}

else{

aux.h=aux.h;

}

//para los minutos ecojo menor

aux.m=q.m;

if(aux.m>w.m){

aux.m=w.m;

}

else {

aux.m=aux.m;

}

if(aux.m>u.m){

Page 95: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

95

aux.m=u.m;

}

else{

aux.m=aux.m;

}

//para los segundos

aux.s=q.s;

if(aux.s>w.s){

aux.s=w.s;

}

else {

aux.s=aux.s;

}

if(aux.s>u.s){

aux.s=u.s;

}

else{

aux.s=aux.s;

}

if (q.h==w.h && q.h==u.h && w.h==u.h){

if (q.m==w.m && q.m==u.m && w.m==u.m){

if(q.s==w.s && q.s==u.s && w.s==u.s){

return(q);

}

else {

Page 96: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

96

q.s=aux.s;

return(q);

}

}

else if(q.m==w.m || q.m==u.m || w.m==u.m){

if(aux.m==q.m){

aux=q;

return(aux);

}

else if(aux.m==w.m){

aux=w;

return(aux);

}

else if(aux.m==u.m){

aux=u;

return(aux);

}

}

else if(q.m!=w.m && q.m!=u.m && w.m!=u.m){

if(aux.m==q.m){

aux=q;

return(aux);

}

Page 97: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

97

else if(aux.m==w.m){

aux=w;

return(aux);

}

else if(aux.m==u.m){

aux=u;

return(aux);

}

}

}

else if(q.h==w.h || q.h==u.h || w.h==u.h) {

if (q.h==aux.h && w.h==aux.h){

if (q.m==w.m){

if(q.s==w.s ){

return(q);

}

else {

q.s=aux.s;

return(q);

}

}

else if(q.m!=w.m){

if(aux.m==q.m){

Page 98: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

98

aux=q;

return(aux);

}

else if(aux.m==w.m){

aux=w;

return(aux);

}

}

}

else if (q.h==aux.h && u.h==aux.h){

if (q.m==u.m){

if(q.s==u.s ){

return(q);

}

else {

q.s=aux.s;

return(q);

}

}

else if(q.m!=u.m){

if(aux.m==q.m){

aux=q;

return(aux);

Page 99: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

99

}

else if(aux.m==u.m){

aux=w;

return(aux);

}

}

}

else if (u.h==aux.h && w.h==aux.h){

if (u.m==w.m){

if(u.s==w.s ){

return(u);

}

else {

u.s=aux.s;

return(u);

}

}

else if(u.m!=w.m){

if(aux.m==u.m){

aux=u;

return(aux);

}

else if(aux.m==w.m){

aux=w;

Page 100: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

100

return(aux);

}

}

}

}

else if(q.h!=w.h && q.h!=u.h && w.h!=u.h) {

if(aux.h==q.h){

aux=q;

return(aux);

}

else if(aux.h==w.h){

aux=w;

return(aux);

}

else if(aux.h==u.h){

aux=u;

return(aux);

}

}

}

void tiempo::elegir(tiempo uno, tiempo x, tiempo y, tiempo z){

if(uno.h==x.h && uno.m==x.m && uno.s==x.s){

Page 101: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

101

cout<<"\n El primer jugador.\n";

//return(1);

}

else if(uno.h==y.h && uno.m==y.m && uno.s==y.s){

cout<<"\n El segundo jugador.\n";

//return(2);

}

else if(uno.h==z.h && uno.m==z.m && uno.s==z.s){

cout<<"\n El tercer jugador.\n";

//return(3);

}

}

void main (){

char op;

do{

int a,b,c,o;

cout<<"\n\t\t Restador de horas en formato hh/mm/ss.\n ";

cout<<"\n Hora de inicio: ";

cout<<"\n Ingrese la hora: ";

cin>>a;

while(a<0 || a>23){

cout<<"\n Ingrese nuevamente la hora: ";

cin>>a;

}

Page 102: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

102

cout<<"\n Ingrese los minutos: ";

cin>>b;

while(b<0 || b>=60){

cout<<"\n Ingrese nuevamente los minutos: ";

cin>>b;

}

cout<<"\n Ingrese los segundos: ";

cin>>c;

while(c<0 || c>=60){

cout<<"\n Ingrese nuevamente los minutos: ";

cin>>c;

}

tiempo inicio (a,b,c), final, final1,final2, r, r1, r2,l,p;

inicio.imprimir();

cout<<"\n\n Tiempo final del primer jugador: ";

final.ingreso();

final.validar_total(inicio, final);

final.imprimir();

r=r.calcular(final, inicio);

cout<<"\n Tiempo transcurrido: ";

r.imprimir();

cout<<"\n\n Tiempo final del segundo jugador: ";

final1.ingreso();

final1.validar_total(inicio, final1);

Page 103: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

103

final1.imprimir();

r1=r1.calcular(final1, inicio);

cout<<"\n Tiempo transcurrido: ";

r1.imprimir();

cout<<"\n\n Tiempo final del tercer jugador: ";

final2.ingreso();

final2.validar_total(inicio, final2);

final2.imprimir();

r2=r2.calcular(final2, inicio);

cout<<"\n Tiempo transcurrido: ";

r2.imprimir();

getch();

l=l.elegir_ganador(r,r1,r2);

cout<<"\n El menor tiempo logrado es: ";

l.imprimir();

cout<<"\n El ganador es: ";

p.elegir(l,r,r1,r2);

getch();

clrscr();

cout<<"\n Si desea continuar presione 'a',\n Caso contrario cualquier tecla. ";

cin>>op;

clrscr();

}while (op=='a' || op=='A');

Page 104: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

104

clrscr();

cout<<"\n\t\t\t FIN DEL PROGRAMA ";

}

PROBLEMA PROPUESTO 05:

#include <conio.h>

#include <iostream.h>

#include <string.h>

#include <stdlib.h>

#include<stdio.h>

class estudiante {

long int cedula;

char ci[11];

char nombre [20];

int edad;

double notas [4];

public:

void ingreso();

void imprimir();

void promedio();

estudiante();

double validar(double nota);

int validar_cedula(char h[11]);

void validar_edad(int d);

};

Page 105: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

105

void estudiante::validar_edad(int d){

while(d<5 || d>38){

cout<<"\n Ingrese nuevamente la edad del alumno: ";

cin>>edad;

}

}

int estudiante::validar_cedula(char h[11]){

int B[10];

long int a;

if(h[0]==0){

B[0]=0;

a=atol(h);

long int num=a, c;

int i=9, r;

do{

c=num/10;

r=num%10;

num=c;

B[i]=r;

i--;

}while(i>=0);

Page 106: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

106

int acum=0, acum1=0, u, l,h;

for(int o=0; o<9; o+=2){

u=(B[o]*2);

if(u>9){

u=u-9;

}

acum=acum+u;

}

for(int t=1; t<9; t+=2){

acum1=acum1+B[t];

}

l=acum+acum1;

h=(10-(l%10));

if(h==10){

h=0;

}

if(h==B[9]){

return(1);

}

else {

return(0);

}

}

else{

Page 107: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

107

long int num, c;

a=atol(h);

num=a;

int i=9, r;

do{

c=num/10;

r=num%10;

num=c;

B[i]=r;

i--;

}while(c!=0);

int acum=0, acum1=0, u, l,h;

for(int o=0; o<9; o+=2){

u=(B[o]*2);

if(u>9){

u=u-9;

}

acum=acum+u;

}

for(int t=1; t<9; t+=2){

acum1=acum1+B[t];

}

l=acum+acum1;

h=(10-(l%10));

if(h==10){

Page 108: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

108

h=0;

}

if(h==B[9]){

return(1);

}

else{

return(0);

}

}

}

double estudiante::validar(double nota){

while(nota<0 || nota>20){

cout<<"\n Ingrese nuevamente la nota: ";

cin>>nota;

}

return (nota);

}

void estudiante::ingreso(){

cout <<"Ingrese la cedula de identidad: ";

cin>> ci;

Page 109: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

109

while (validar_cedula(ci)==0){

fflush(stdout);

cout<<"\n Ingrese nuevamente la cedula de identidad: ";

cin>>ci;

}

cout <<"\n Ingrese el Nombre: ";

cin>> nombre;

cout <<"\n Ingrese la edad: ";

cin>> edad;

validar_edad(edad);

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

cout<<"\n Ingrese la nota "<< i+1<<": ";

cin>>notas [i] ;

notas[i]=validar(notas[i]);

}

}

void estudiante:: imprimir(){

Page 110: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

110

cout<<"\n Cedula de identidad: "<<ci;

cout<<"\n Nombre: "<< nombre;

cout<<"\n Edad: "<<edad;

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

if(i<=2){

cout<<"\n Nota "<<i+1<<": "<<notas [i];

}

else {

cout<<"\n Promedio: "<<notas[i];

}

}

}

void estudiante :: promedio (){

notas[3]=(notas [0]+notas[1]+notas[2])/3;

}

estudiante::estudiante(){

cedula=0;

strcpy(nombre, " ");

edad=0;

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

notas[i]=0;

}

Page 111: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

111

}

void main(){

estudiante a [1];

char op;

do{

clrscr();

cout<<"\n\t Programa para el ingreso de datos de alumnos.\n\n";

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

a[i].ingreso();

a[i].promedio();

}

for (int o=0; o<1; o++){

a[o].imprimir();

}

getch();

cout<<"\n desea continuar presione 'a'.\n Caso contrario cualquier tecla.";

cin>>op;

}while(op=='a' || op=='A');

clrscr();

Page 112: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

112

cout<<"\n \t\t\t FIN DEL PROGRAMA";

}

SOLUCIÓN PROBLEMA PROPUESTO 06:

#include<iostream.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

#include<stdio.h>

#include<ctype.h>

class agenda{

char dir [30], nombre[15], apellido[15],num[10], cel[10];

public:

void ingreso(int q);

void organizar(agenda lista[], int num);

void organizar1(agenda lista[], int num);

void buscar(agenda lista[],int n);

int borrar(agenda lista[], int num);

static void print_cabezera();

void imprimir(agenda d, int r);

agenda (); //u

agenda repetidos(agenda a, agenda b, int i);

static void muestre(){

clrscr();

cout<<"\n\t\t **** AGENDA TELEFONICA VIRTUAL ****\n";

Page 113: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

113

cout<<"\n\t MENU\n";

cout<<"\t 1.- Agregar Nuevo Contacto\n";

cout<<"\t 2.- Buscar Contacto\n";

cout<<"\t 3.- Ver todos los Contactos\n";

cout<<"\t 4.- Eliminar Contacto\n";

cout<<"\t 5.- Salir \n";

}

};

agenda::agenda(){

strcpy(dir," ");

strcpy(nombre," ");

strcpy(apellido," ");

strcpy(num," ");

strcpy(cel," ");

}

agenda agenda::repetidos(agenda a, agenda b, int i){

long int n,l,no,di,c=0;

do{

n=strcmp(a.num,b.num);

l=strcmp(a.cel,b.cel);

if(n==0 && l==0){

c++;

Page 114: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

114

cout<<"\n Datos repetidos..........\n Ingrese nuevamente los datos incorrectos del contato numero "<<i+1<<"\n\n";

cout<<"\n Numero de telefono fijo: ";

cin>>a.num;

no=atol(a.num);

di=strlen(a.num);

while(no<=11111111 ||di!=9){

cout<<"\n Dato incorrecto.....\n Recuerde que se grabaran numeros de ";//7 digitos dentro de Pichincha.\n";

cout<<"9 digitos \n (incluyendo el codigo de ubicacion provincial).\n";

cout<<" Y solo se aceptan numeros no letras.\n Vuelva a ingresar el numero: ";

cin>>a.num;

no=atol(a.num);

di=strlen(a.num);

}

cout<<"\n Numero de telefono movil: ";

cin>>a.cel;

no=atol(a.cel);

di=strlen(a.cel);

while(no<=11111111 || di!=9){

cout<<"\n Dato incorrecto.....\n Vuelva a ingresar el numero: ";

cin>>a.cel;

no=atol(a.cel);

di=strlen(a.cel);

}

}

else{

Page 115: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

115

c=0;

}

}while(c!=0);

return(a);

}

void agenda::ingreso(int q){

long int no, c=0;

int di;

cout<<"\n Contacto numero "<<q+1;

cout<<"\n Nombre de contacto: ";

gets(nombre);

cout<<"\n Apellido del Contato: ";

gets(apellido);

cout<<"\n Direccion: ";

gets(dir);

cout<<"\n Numero de telefono fijo: ";

cin>>num;

no=atol(num);

di=strlen(num);

Page 116: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

116

if(di==9 ){//|| di==7){

c=1;

}

while(no<=11111111 ||c==0){

cout<<"\n Dato incorrecto.....\n Recuerde que se grabaran numeros de ";//7 digitos dentro de Pichincha.\n";

cout<<"9 digitos \n (incluyendo el codigo de ubicacion provincial).\n";

cout<<" Y solo se aceptan numeros no letras.\n Vuelva a ingresar el numero: ";

cin>>num;

c=0;

no=atol(num);

di=strlen(num);

if(di==9){// || di==7){

c=1;

}

}

cout<<"\n Numero de telefono movil: ";

cin>>cel;

no=atol(cel);

di=strlen(cel);

while(no<=11111111 || di!=9){

cout<<"\n Dato incorrecto.....\n Vuelva a ingresar el numero: ";

cin>>cel;

no=atol(cel);

di=strlen(cel);

}

Page 117: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

117

}

void agenda::print_cabezera(){

cout<<"\nPos. Nombre\t Apellido\t Direccion\t Telf. Fijo Telf. Movil\n";

cout<<"--------------------------------------------------------------------------------";

}

void agenda::imprimir(agenda d, int r){

int a=atol(d.num);

cout<<"\n "<<r+1<<" ";

if(a!=-1){

cout<<d.nombre;

for(int i=0;i<(16-(strlen(d.nombre)));i++){

cout<<" ";

}

cout<<d.apellido;

for(int o=0;o<(18-(strlen(d.apellido)));o++){

cout<<" ";

}

cout<<d.dir;

for(int u=0;u<(18-(strlen(d.dir)));u++){

cout<<" ";

}

cout<<d.num;

for(int v=0;v<(12-(strlen(d.num)));v++){

cout<<" ";

Page 118: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

118

}

cout<<d.cel;

}

}

void agenda::buscar(agenda lista[],int n){

organizar(lista,n);

int op,m=0,s;

char a[15], op1[2];

cout<<"\n Buscar Contactos por:\n 1.- Apellido del contacto.\n 2.- Numero fijo del contacto.\n 3.- Numero movil del contacto.\n ";

cin>>op1;

op=atoi(op1);

while (op<1 || op>3){

cout<<"\n Opcion incorreta,.,.,.\n Vuelva a ingresar su opcion: ";

cin>>op1;

op=atoi(op1);

}

switch(op){

case 1: ////////////////////////////////////////////////////////////////////////////////////////

cout<<"\n Ingrese el apellido: "; ///// usando las funciones que nos ofrece la biblioteca string.h podemos hacer maravillas

gets(a);

cout<<"\n Resultados mas proximos para: "<<a;

agenda::print_cabezera();

Page 119: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

119

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

s=strnicmp(a,lista[i].apellido,strlen(a)); //////comparacion de n caracteres de dos cadenas

if(s==0){

lista[i].imprimir(lista[i],i);

m++;

}

}

cout<<"\n "<<m<<" Contactos encontrados.";

if(m==0) {

cout<<"\n No existen registros albergados con el prefijo: "<<a<<endl;

}

break;

case 2:

cout<<"\n Ingrese el numero fijo: "; //////busqueda por telefono fijo

gets(a);

cout<<"\n Resultados para: "<<a;

agenda::print_cabezera();

for(int x=0;x<n;x++){

s=strcmp(a,lista[x].num); //////comparacion de todos los caracteres de dos cadenas

if(s==0){

lista[x].imprimir(lista[x],x);

m++;

}

Page 120: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

120

}

cout<<"\n "<<m<<" Contactos encontrados.";

if(m==0){

cout<<"\n No existen registros albergados con el numero: "<<a<<endl;

}

break;

case 3:

cout<<"\n Ingrese el numero movil: ";////busqueda por telefono movil

gets(a);

cout<<"\n Resultados para: "<<a;

agenda::print_cabezera();

for(int f=0;f<n;f++){

s=strcmp(a,lista[f].cel); //////comparacion de todos los caracteres de dos cadenas

if(s==0){

lista[f].imprimir(lista[f],f);

m++;

}

}

cout<<"\n "<<m<<" Contactos encontrados.";

if(m==0){

cout<<"\n No existen registros albergados con el numero: "<<a<<endl;

}

break;

Page 121: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

121

}

}

void agenda::organizar(agenda lista[], int num){

char auxc[30];

for(int i=0;i<num-1;i++){

for(int j=0;j<num-1-i;j++){

if((stricmp(lista[j].nombre,lista[j+1].nombre)>0) || (strcmp(lista[j].num,"-1")==0)){

strcpy(auxc,lista[j].nombre);

strcpy(lista[j].nombre,lista[j+1].nombre);

strcpy(lista[j+1].nombre,auxc);

strcpy(auxc,lista[j].apellido);

strcpy(lista[j].apellido,lista[j+1].apellido);

strcpy(lista[j+1].apellido,auxc);

strcpy(auxc,lista[j].dir);

strcpy(lista[j].dir,lista[j+1].dir);

strcpy(lista[j+1].dir,auxc);

strcpy(auxc,lista[j].num);

strcpy(lista[j].num,lista[j+1].num);

strcpy(lista[j+1].num,auxc);

Page 122: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

122

strcpy(auxc,lista[j].cel);

strcpy(lista[j].cel,lista[j+1].cel);

strcpy(lista[j+1].cel,auxc);

}

}

}

}

int agenda::borrar(agenda lista[], int num){

int op, ubi, del=0;

char nom[15], ap[15], op1[2];

cout<<"\n Borrar contacto conociendo:\n 1.- La posicion del contacto ha borrar en el registro.";

cout<<"\n 2.- La identificacion (nombre y apellido) del contacto.\n";

cin>>op1;

op=atoi(op1);

while (op<1 || op>2){

cout<<"\n Opcion incorreta,.,.,.\n Vuelva a ingresar su opcion: ";

cin>>op1;

op=atoi(op1);

}

Page 123: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

123

switch(op){

case 1:

cout<<"\n Ingrese la posicion: ";

cin>>ubi;

while (ubi<1 || ubi>num){

cout<<"\n Posicion incorreta o inexistente,.,.,.\n Vuelva a ingresar la ubicacion: ";

cin>>ubi;

}

for(int r=0; r<num; r++){

if(ubi-1==r){

strcpy(lista[r].num,"-1");

del++;

}

}

organizar(lista,num);

break;

case 2:

int lk=0;

cout<<"\n Ingrese el nombre: ";

cin>>nom;

cout<<"\n Ingrese el apellido: ";

cin>>ap;

for(int y=0; y<num; y++){

if((stricmp(lista[y].nombre,nom)==0)&&(stricmp(lista[y].apellido,ap)==0)){

strcpy(lista[y].num,"-1");

Page 124: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

124

lk++;

del++;

}

}

organizar(lista,num);

if(lk==0){

cout<<"\n No existen contactos con esta descripcion: "<<nom<<", "<<ap;

}

break;

}

return(del);

}

void main (){

int num=0; //numero de contactos

agenda lista[45],m; //lista de contactos

int op, l=0;

char op1[2];

do{

num=num;

agenda::muestre();

cin>>op1;

op=atoi(op1);

while (op<1 || op>5){

Page 125: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

125

cout<<"\n Opcion incorreta,.,.,.\n Vuelva a ingresar su opcion: ";

getch();

clrscr();

agenda::muestre();

cin>>op1;

op=atoi(op1);

}

switch (op){

case 1:

lista[num].ingreso(num);

if(num>=1){

for (int u=0;u<num; u++){

lista[num]=lista[num].repetidos(lista[num], lista[u], num);

}

}

num++;

break;

case 2:

if(num!=0){

lista[num].buscar(lista,num);

cout<<"\n";

}

else

cout<<"\n Busqueda denegada......\n Actualmente no existen registros albergados.\n Ingrese datos para recurrir a la busqueda.\n";

getch();

Page 126: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

126

break;

case 3:

lista[num].organizar(lista,num);

agenda::print_cabezera();

if((l==num-1)&&(num>1)){

for(int sz=0; sz<l;sz++){

lista[sz].imprimir(lista[sz],sz);

}

}

else{

for(int y=0; y<num;y++){

lista[y].imprimir(lista[y],y);

}

}

cout<<"\n--------------------------------------------------------------------------------";

if(num==0){

cout<<"\n Contactos Existentes "<<num<<".\n Ingrese datos "<<endl;

}

else{

cout<<"\n Contactos Existentes actualmente en el registro "<<num<<endl;

}

getch();

break;

case 4:

int el=0;

if(num!=0){

Page 127: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

127

l=num;

el=lista[num].borrar(lista, num);

if(el!=0){

num--;

cout<<"\n Contacto Eliminado.......\n";

}

else

cout<<"\n Elimanacion fallida.\n";

}

else

cout<<"\n Eliminacion denegada......\n Actualmente no existen registros albergados.\n";

getch();

break;

}

} while(op!=5);

_exit(0);

}

SOLUCION PROBLEMA PROPUESTO 07:

#include<stdlib.h>#include<stdlib.h>#include<iostream.h>#include<conio.h>#include<stdio.h>

class fraccion{int num,den;public:

Page 128: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

128

void ingresar();void imprimir();void validar();int validar1(fraccion a);fraccion operator * (fraccion b);int MCD(int num, int den);void operator !();fraccion operator +(fraccion b);fraccion operator -(fraccion b);fraccion operator /(fraccion b);int operator ==(fraccion b);

fraccion();

};

//implementacion de las funciones

fraccion::fraccion(){ num=0; den=0;

}

void fraccion::validar(){while(den==0){cout<<"\n Error,.....Ingrese nuevamente el denominador.\n";cin>>den;

}}

int fraccion::operator ==(fraccion b){

if ((num==b.num)&&(den==b.den)){return(0);}

else return(1);

}

int fraccion::MCD(int num, int den){int t,i=2,mcd=1; if(num<0 ){ num=(-1)*num;

Page 129: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

129

den=(-1)*den; do{if (num%i==0 && den%i==0){mcd=mcd*i;num=num/i;den=den/i;i=2;}elsei++;}while(i<=num);return(mcd); }

else{do{if (num%i==0 && den%i==0){mcd=mcd*i;num=num/i;den=den/i;i=2;}elsei++;}while(i<=num);return(mcd);

}}

void fraccion::operator !(){

int d=MCD(num, den);

num=num/d;den=den/d;

}void fraccion::ingresar(){ char a[5], b[5];cout<<"\n Ingrese el numerador: ";cin>>a;num=atoi(a);cout<<"\n Ingrese el denominador: ";

Page 130: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

130

cin>>b; den=atoi(b);

validar();

}

void fraccion::imprimir(){if(num==0){ cout<<"\n La fraccion es: 0\n";

}else if(den==1){

cout<<"\n La fraccion equivale a "<<num<<" como numero entero\n"; } else {

cout<<"\n La fraccion es: ";

cout<<num<<"/"<<den<<endl; }

}

fraccion fraccion:: operator *( fraccion b){

fraccion aux; aux.num=num*b.num; aux.den=den*b.den;

return(aux);

}

fraccion fraccion::operator+( fraccion b){

fraccion y;y.den=den*b.den;y.num=(((y.den/den)*num)+((y.den/b.den)*b.num));return (y);

}

fraccion fraccion::operator -(fraccion b){

fraccion y;y.den=den*b.den;y.num=(((y.den/den)*num)-((y.den/b.den)*b.num));

Page 131: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

131

return (y);

}int fraccion::validar1(fraccion a){ if(a.den==0) return(0); else

return(1); }

fraccion fraccion::operator /(fraccion b){

fraccion d; if(b.num<0){

b.num=(-1)*b.num; d.num=num*b.den;

d.num=(-1)*d.num; d.den=den*b.num;

return(d); } else{ d.num=num*b.den; d.den=den*b.num;

return(d); }

}

//programa pricipal

void main (){

fraccion a,b,c; int t, as;

char op; do{

cout<<"\n\t\t Programa para realizar operaciones entre fracciones.\n";a.ingresar();a.imprimir();b.ingresar();b.imprimir();!a;

Page 132: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

132

!b;cout<<"\n Suma: ";c=a+b;!c;c.imprimir();

getch();cout<<"\n Resta: ";c=a-b;

!c;c.imprimir();

getch();c=a*b;

!c;cout<<"\n Multiplicacion: "; c.imprimir();

getch();cout<<"\n Division: ";c=a/b;as=c.validar1(c);if(as==0){cout<<"\n La division no se puede realizar pues la segunda fraccion es

cero.";}

else{ !c;

c.imprimir(); }

getch();t=(a==b);if(t==0){

cout<<"\n Las fracciones ingresadas son iguales.\n";}else{cout<<"\n Las fracciones ingresadas no son iguales.\n";}cout<<"\n Desea seguir operando, presione 'a'. \n Caso contrario

cualquier tecla.";cin>>op;

clrscr(); }while (op=='a' || op=='A');

_exit(0); }

Page 133: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

133

PROBLEMA PROPUESTO 08:

El Programa de conjuntos pero con sobre carga.

#include<iostream.h>#include<conio.h>#include<stdlib.h>class conjuntos{

int u[10];

public:

void ingreso();void imprimir();void copia(conjuntos r,conjuntos s);conjuntos operator ||(conjuntos e);conjuntos operator &&(conjuntos s);void operator !();

int validar(int u);conjuntos();conjuntos operator +(conjuntos b);conjuntos operator -(conjuntos b);void operator ++();

int operator==(conjuntos b);};

int conjuntos::operator ==(conjuntos b){

int p=0;for(int i=0; i<5; i++){ if(u[i] == b.u[i]){

p++; }}

return(p);}

void conjuntos::operator++(){

for(int i=0; i<5; i++){u[i]++;

Page 134: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

134

}

}

conjuntos conjuntos :: operator - (conjuntos b){

conjuntos aux;for(int i=0; i<5; i++){

aux.u[i]=b.u[i]-u[i];}return(aux);

}

conjuntos conjuntos::operator +(conjuntos b){

conjuntos aux;for(int i=0; i<5; i++){

aux.u[i]=u[i]+b.u[i];}return(aux);

}

int conjuntos::validar(int u){

while(u<=0){ cout<<"\n Dato incorrecto vuelva a ingresar el dato:

"; cin>>u;

} return(u);

}void conjuntos::ingreso(){

cout<<"\n Ingrese los elementos: ";for (int p=0; p<5;p++){

cout<<"\n Elemento "<<p+1<<": "; cin>>u[p];

u[p]=validar(u[p]);}

}

Page 135: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

135

void conjuntos::imprimir(){

cout<<"\n Conjunto: \n";cout<<"( ";for (int j=0; j<10; j++){if (u[j]>0) cout<< u[j]<<" ";} cout<<")\n";

}

conjuntos::conjuntos(){

for (int i=0; i<10; i++){ u[i]=-1;}

}

conjuntos conjuntos::operator && (conjuntos s){

conjuntos w;

for(int i=0; i<5; i++){ for(int o=0; o<5; o++){ if(u[i]==s.u[o]){

w.u[i]=u[i];

} }}for(int k=0;k<5;k++){ for(int j=k+1;j<5;j++){

if(w.u[k]==w.u[j]) w.u[j]=(-1); }}

!w;return (w);

}

Page 136: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

136

conjuntos conjuntos :: operator ||(conjuntos e){ conjuntos w;

for(int i=0; i<5; i++){ e.u[i+5]=u[i];

}

for(int k=0;k<10;k++){ for(int j=k+1;j<10;j++){

if(e.u[k]==e.u[j]) e.u[j]=(-1); }}!e; return (e);

}

void conjuntos::operator !(){ int q; for(int z= 0; z<10; z++){

for(int s= z+1; s <10; s++) { if(u[z] >u[s]) {

q = u[z]; u[z] = u[s]; u[s] = q;

} }

} }

void main (){ clrscr(); conjuntos a,b, c; char op; int t; do{ cout<<"\n\t Prigrama para realizar operaciones entre conjuntos.\n"; cout<<"\n Conjunto A: ";

Page 137: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

137

a.ingreso(); a.imprimir(); cout<<"\n Conjunto B: "; b.ingreso(); b.imprimir(); c=a&&b; getch(); cout<<"\nLa Interseccion entre A y B es: "; c.imprimir(); getch(); cout<<"\n La Union de los Conjuntos A y B: "; c=a||b; c.imprimir(); getch(); cout<<"\n Sumando A + B: "; c=a+b; c.imprimir(); getch(); cout<<"\n Restando B - A: "; c=a-b; c.imprimir(); getch(); cout<<"\n Realizando operacion A++: "; a++; a.imprimir(); getch(); cout<<"\n Comprobando si A==B "; t=(a==b); if(t==5){ cout<<"\n El conjunto A es igual al conjunto B.\n"; } else{ cout<<"\n El conjunto A no es igual al conjunto B.\n"; } getch(); cout<<"\n Digite 'a' si desea continuar.\n Caso contrario cualquier tecla. "; cin>>op; clrscr(); }while(op=='a' || op=='A'); _exit(0);

}

Page 138: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

138

SOLUCION PROBLEMA PROPUESTO 09:

#include<stdlib.h>#include<conio.h>#include<iostream.h>#include<string.h>

class fechas{

int dias[13];long int fecha[3];public:void ingreso();void imprimir();friend fechas operator ++(fechas a);friend int operator ==(fechas a, fechas b);fechas();int carga_dias(int m);friend int bisiesto(int anio);

};

fechas::fechas(){for(int i=0; i<3; i++){fecha[i]=0;}for(int j=0; j<13; j++){dias[j]=0;}dias[0]=31;dias[1]=28;dias[2]=31;dias[3]=30;dias[4]=31;dias[5]=30;dias[6]=31;dias[7]=31;dias[8]=30;dias[9]=31;dias[10]=30;dias[11]=31;dias[12]=29;

Page 139: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

139

}

int bisiesto(int anio){int s=0;if ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0))){s++;}return(s);

}

void fechas::ingreso(){char op[3], op1[5];long int l=0, dia, mes, anio, p, k;cout<<"\n Ingrese la fecha en formato aaaa/mm/dd.\n\t\t";cout<<"\n Ingrese el anio: ";cin>>op1;l=strlen(op1);anio=atoi(op1);while(anio<1700 ||anio>3000 || l!=4){cout<<"\n\t ERROR..... anio incorrecto.\n Ingrese nuevamente el dato: ";cin>>op1;l=strlen(op1);anio=atoi(op1);}p=bisiesto(anio);fecha[2]=anio;if(p==1){cout<<"\n El anio ingresado hace referencia a un anio bisiesto.";}cout<<"\n Ingrese el mes: ";cin>>op;l=strlen(op);mes=atoi(op);while(mes<1 || mes>12 || l!=2){cout<<"\n\t ERROR..... mes incorrecto.\n\t Ingrese nuevamente el dato: ";cin>>op;l=strlen(op);mes=atoi(op);}fecha[1]=mes;if(p==0){k=carga_dias(mes-1);cout<<"\n Ingrese el dia: ";

Page 140: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

140

cin>>op;l=strlen(op);dia=atoi(op);while(dia<1 || dia>k || l!=2){cout<<"\n\t ERROR..... dia incorrecto.\n\t Ingrese nuevamente el dato: ";cin>>op;l=strlen(op);dia=atoi(op);}fecha[0]=dia;}else{cout<<"\n Ingrese el dia: ";if(mes==2){cin>>op;l=strlen(op);dia=atoi(op);while(dia<1 || dia>29 || l!=2){cout<<"\n\t ERROR..... dia incorrecto.\n\t Ingrese nuevamente el dato: ";cin>>op;l=strlen(op);dia=atoi(op);}fecha[0]=dia;}else{cin>>op;l=strlen(op);dia=atoi(op);k=carga_dias(mes-1);while(dia<1 || dia>k || l!=2){cout<<"\n\t ERROR..... dia incorrecto.\n\t Ingrese nuevamente el dato: ";cin>>op;l=strlen(op);dia=atoi(op);}fecha[0]=dia;}}

}

void fechas::imprimir(){

Page 141: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

141

cout<<"\n La fecha es: ";for(int i=2; i>=0; i--){if (i>0){cout<<fecha[i]<<"/";}else{cout<<fecha[i];}}

}int operator ==(fechas a, fechas b){int r=0;for(int i=0; i<3; i++){if(a.fecha[i]==b.fecha[i]){r++;}}return(r);}int fechas::carga_dias(int m){fechas is;for(int i=0; i<13; i++){if (i==m){return(is.dias[i]);}}}

fechas operator ++(fechas a){long int w=0, d=0,t=0, y=0, aux=0;int m=0, p=0;p=bisiesto(a.fecha[2]);m=a.fecha[1];if (p==0 ){a.fecha[0]=a.fecha[0]+1;m=m-1;aux=a.carga_dias(m);if(a.fecha[0]>aux){a.fecha[0]=a.fecha[0]-a.dias[m];t++;}

Page 142: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

142

if(t!=0){a.fecha[1]=a.fecha[1]+1;if (a.fecha[1]>12){a.fecha[1]=a.fecha[1]-12;y++;

}

if(y!=0){a.fecha[2]=a.fecha[2]+1;}}return(a);}else{

a.fecha[0]=a.fecha[0]+1;m=a.fecha[1]-1;if((m+1)!=2){aux=a.carga_dias(m);if(a.fecha[0]>aux){a.fecha[0]=a.fecha[0]-a.dias[m];t++;}

if(t!=0){a.fecha[1]=a.fecha[1]+1;if (a.fecha[1]>12){a.fecha[1]=a.fecha[1]-12;y++;

}

if(y!=0){a.fecha[2]=a.fecha[2]+1;}}return(a);}else{aux=a.carga_dias(m+11);

Page 143: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

143

if(a.fecha[0]>aux){a.fecha[0]=a.fecha[0]-a.dias[m+11];t++;}

if(t!=0){a.fecha[1]=a.fecha[1]+1;if (a.fecha[1]>12){a.fecha[1]=a.fecha[1]-12;y++;

}

if(y!=0){a.fecha[2]=a.fecha[2]+1;}}return(a);}}

}

void main (){

fechas a, b, c;char op;do{clrscr();int f=0;cout<<"\n\t\t Programa para trabajar con fechas.\n";cout<<"\n Primera fecha: ";a.ingreso();a.imprimir();cout<<"\n Segunda fecha: ";b.ingreso();b.imprimir();cout<<"\n\n La primera fecha con un dia aumentado es: ";a=a++;getch();a.imprimir();cout<<"\n\n La segunda fecha con un dia aumentado es: ";b=b++;

Page 144: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

144

getch();b.imprimir();f=(a==b);getch();if(f==3){cout<<"\n Las fechas ingresadas son iguales.\n";}else{cout<<"\n Las fechas ingresadas no son iguales.\n";}getch();cout<<"\n Digite 'a' para continuar.\n Caso contrario cualquier tecla. ";cin>>op;}while(op=='a' || op=='A');_exit(0);

}

Corrección a los problemas de las pruebas:Prueba número 1:

Page 145: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

145

Ejercicio 1:Realizar un programa que nos permita obtener el producto cruz entre dos vectores de 3 dimensiones.Para esto usaremos la siguiente formula que hace referencia a cómo obtener el producto cruz entre dos vectores. Sabiendo que nos devuelve un vector temos:

AxB=((A yBz−AzBy ) i−(AxBz−AzBx ) j+( AxBy−AyBx ) k )

Código:#include<iostream.h>#include<conio.h>class vector{double x,y,z;public:void ingreso();void imprimir();vector producto(vector a, vector b);vector();// usamos el constructor sin argumentos};

void vector::ingreso(){

cout<<"\n Ingreso de datos de los vectores:\n";cout<<"\n Ingrese la coordenada en x: ";cin>>x;cout<<"\n Ingrese la coordenada en y: ";cin>>y;cout<<"\n Ingrese la coordenada en z: ";cin>>z;

}

Page 146: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

146

void vector::imprimir(){

cout<<" ("<<x<<"i, "<<y<<"j, "<<z<<"k)";

}

vector::vector(){ // construtor sin argumentos

x=0;y=0;z=0;

}

vector vector::producto(vector a, vector b){

vector r;r.x=((a.y*b.z)-(a.z*b.y));r.y=(-1)*((a.x*b.z)-(a.z*b.x));r.z=((a.x*b.y)-(a.y*b.x));return (r);

}

void main (){

vector f, g, h;

Page 147: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

147

char op;do{clrscr();//f.imprimir(); esta linea nos permitira vizualizar si el objeto esta inicializadocout<<"\n\t\t Programa para calcular el producto cruz entre\n\t\t dos vectores de 3 dimensiones (ax, by, cz).\n";f.ingreso();g.ingreso();getch();clrscr();cout<<" \n Datos ingresados:\n\n Vector A: ";f.imprimir();cout<<"\n\n Vector B: ";g.imprimir();h=h.producto(f, g);

cout<<"\n\n El Vector resultante de realizar la operacion A x B es: \n\n\t\t";

getch();h.imprimir();getch();cout<<"\n\n\n Para continuar presione 'a'.\n Caso contrario presione cualquier tecla.\n";cin>>op;}while (op=='a' || op=='A');clrscr();cout<<"\n\t\t\t FIN DEL PROGRAMA";}

Ejercicio 2:

Page 148: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

148

Realizar un programa que pida ingresar tres punto pertenecientes a los vértices del triángulo que forman, ya sea en coordenadas polares o rectangulares, y nos vizualice por pantalla el área del triángulo.Para esto usamos:

Sabiendo que el determinante esta en valor absolutoCODIGO

# include <conio.h># include <iostream.h># include <math.h>class punto{double x, y,radio,angulo;public:int ingreso();void imprimir(int a);punto(); // sin argumentos por que no lleva nada dentro del parentesisdouble area(punto a ,punto b, punto c);punto convertir(punto a,int c);void validar(double a);};

int punto::ingreso(){ int op,i; do{ i=0; cout<<" Menu \n"; cout<<"1.- Rectangulares\n";

Page 149: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

149

cout<<"2.- Polares \n";

cin>>op; if (op<3 && op>0){ switch(op){ case 1: cout<<"\n Ingrese la coordenada en x: "; cin>> x; cout<<"\n Ingrese la coordenada en y: "; cin>>y; break; case 2: cout<<"\n Ingrese el radio: "; cin>> radio; cout<<"\n Ingrese el angulo: "; cin>>angulo; validar(radio); break; } } else{ cout<<"\n Opcion incorreta.\n Vuelva ha ingresar su opcion: "; i++; getch(); clrscr(); }

Page 150: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

150

}while(i!=0); return (op); } void punto::validar(double a){

if(a<=0){ cout<<"\n Dato incorrecto..... Vuelva ha ingresarlo"; ingreso();

}

}void punto:: imprimir(int a){if (a==1) cout<<"("<<x<<","<<y<<")\n"; else cout<<"radio :"<<radio<<" angulo: "<<angulo<<"\n";}

punto::punto(){x=0;y=0;radio=0;angulo=0;}

double punto ::area (punto a, punto b, punto c){

Page 151: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

151

double d1, d2,d3,p,s,r;d1=sqrt(pow((a.x-b.x),2)+pow((a.y-b.y),2));d2=sqrt(pow((a.x-c.x),2)+pow((a.y-c.y),2));d3=sqrt(pow((b.x-c.x),2)+pow((b.y-c.y),2));p=(d1+d2+d3)/2;s=p*(p-d1)*(p-d2)*(p-d3);r=sqrt(s);return (r);

}

punto punto:: convertir(punto a,int c){punto r;if (c==2) { r.x=a.radio*cos(a.angulo*(3.1416/180)); r.y=a.radio*sin(a.angulo*(3.1416/180)); }return (r);}

void main (){clrscr();int x,y,z;double a;punto obj1, obj2,obj3,o1,o2,o3,res;

Page 152: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

152

x=obj1.ingreso();obj1.imprimir(x);y=obj2.ingreso();obj2.imprimir(y);z=obj3.ingreso();obj3.imprimir(z);if(x==2) { o1=o1.convertir(obj1,x); } else { o1=obj1; } if(y==2) { o2=o2.convertir(obj2,y); } else { o2=obj2; } if (z==2) { o3=o3.convertir(obj3,z); } else

Page 153: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

153

{ o3=obj3; } a=res.area(o1,o2,o3); cout<<"El area de un triangulo es:"; cout<<a;getch(); clrscr();}

Prueba número 2:

Ejercicio 1:

La clase fibonancci contiene un dato miembro llamado num que conforma un dato de la serie de fibonancci que se genera en base a un dato ingresado por el usuario que determina el numero de términos a generarse en la serie.Un numero de la serie se genera en base a la suma de los dos anteriores por ejemplo si el usuario ingresa el dato de 6 la serie generadá será 1 1 2 3 5 8

Page 154: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

154

Donde los dos primeros 1 y 1 son los dos primeros datos .Utilizar un constructor que inicialice los dos primeros datos de la serie. Reolver utilizando sobregcargade operadores.CODIGO

# include <iostream.h># include <conio.h>class fibonancci{ int num; public: fibonancci(); friend fibonancci operator +(fibonancci a,fibonancci b); friend ostream & operator<< (ostream &os,fibonancci & c);};

fibonancci :: fibonancci (){ num=1;}

fibonancci operator + (fibonancci a, fibonancci b){ fibonancci aux; aux.num=a.num+b.num; return (aux);}

ostream & operator << (ostream &os, fibonancci & c){ cout<<" "<<c.num<<" "; return(os);}

Page 155: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

155

void main(){ clrscr(); int n; char op; do{ fibonancci a,b,c; cout<<"\n \n \t \t \t SERIE DE FIBONANCCI \n"; cout<<"\n Ingrese El numero de Terminos : "; cin>> n; cout <<"\n"; if (n==1) cout<<a; else cout<<a<<b; for (int i=2;i<n;i++){ c=a+b; a=b; b=c; cout<<c; } cout<<"\n\n\n"; cout<<"\n Para Continuar presione A :"; cin>>op; }while(op=='a' || op=='A'); getch();

Page 156: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

156

}Ejercicio 2:

La clase llamada operastring cuyo dato miembro es palabra dato tipo char de 220 caracteres,u utilizando sobrecarga de operadores realizar la restade dos palabras (-), por ejemplo:MARTE ES UN PLANETA es la cadena 1.ES UN PLANETA es la cadena 2.Al Hacer la resta debe quedar MARTE.CODIGO

# include <iostream .h># include <conio.h># include <string.h># include <stdlib.h># include <stdio.h>class operastring{ char palabra[20]; public: operastring(); friend istream & operator>>(istream &in, operastring &c); friend ostream & operator<<(ostream &os, operastring &c); friend operastring operator - (operastring a, operastring b);};

operastring ::operastring (){ strcpy(palabra," ");

}istream & operator >>(istream &in, operastring &c){

Page 157: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

157

cout<<"\n Ingrese la Cadena :\n"; gets (c.palabra); return(in);}

ostream & operator <<(ostream &os, operastring &c){ // cout<<"\n La Cadena : "; cout<<c.palabra; return(os);}

operastring operator -(operastring a, operastring b){ operastring aux, resp; int a1=0,b1=0,c1=0; char cad1[81]="Resta es :"; a1=strlen(a.palabra); cout<<a1<<"\n"; strcpy(aux.palabra,(strstr(a.palabra,b.palabra))); b1=strlen(aux.palabra); cout<<b1<<"\n"; c1=a1-b1; cout<<c1<<"\n"; strcpy(resp.palabra,(strncat(cad1,a.palabra,c1))); return(resp);}

void main(){

Page 158: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

158

clrscr(); char op; do{ operastring a,b,c; cout<<"La Resta de Dos Cadenas"; cout<<"\n Cadena 1 : \n"; cin>>a; cout<<"\n Cadena 2 : \n"; cin>>b; c=a-b; cout<<c; cout<<"\n Para Continuar presione A :"; cin>>op; }while(op=='A'|| op=='a'); getch();}

Ejercicio 3:

Una clase llamada frecuencia tiene como dato miembro un arreglo de 10 elementos utilizando sobrecarga realizar el ingreso de n elementos , según el usuario lo desee, los datos a se ingresados son dígitos del 1 al 9 .Con una función sobrecarga dividir cada elemento del arreglo para el número con mayor número de frecuencia.EJEMPLO:2 2 4 4 5 7 4 7 el número con mayor frecuencia es el 4 por lo tanto cada elemento debe ser dividido para 4 y presentar su resultado (sobrecarga de impresión).CODIGO

# include <iostream.h># include <conio.h>

Page 159: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

159

# include <stdio.h>class frecuencia { float el[10]; int n; public: frecuencia(); friend istream & operator>>(istream &in, frecuencia &c); friend ostream & operator<<(ostream &os, frecuencia &c); friend int contf (frecuencia a); friend frecuencia operator -- (frecuencia a);};

frecuencia :: frecuencia(){ for(int i=0;i<10;i++){ el[i]=0; }}

int contf (frecuencia a){ frecuencia aux, aux1; int f; int q; int res=0; for(int i=1;i<10;i++){ f=0; for(int j=0;j<10;j++){

Page 160: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

160

if(a.el[j]==i){ f=f+1; } } aux.el[i]=f; aux1.el[i]=f; // cout<<aux1.el[i]; } //Ordenar for(int z= 0; z<10; z++){ for(int s= z+1; s <10; s++) { if(aux.el[z] >aux.el[s])

{ q = aux.el[z]; aux.el[z] = aux.el[s]; aux.el[s] = q;

} }

} // cout<<":"<<q; for(int r=0;r<9;r++){ if (aux1.el[r]==q) res= r; } cout<<"\n La frecuencia mas alta es :"<<q;

Page 161: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

161

return(res);}

frecuencia operator -- (frecuencia a){ frecuencia aux; int f; float r; f=contf(a); cout<<"\n \n El Numero Con mayor Frecuencia:"<<f; for(int i=0;i<10;i++){ r=a.el[i]/f; aux.el[i]=r; } return(aux);

}istream & operator >> (istream & in,frecuencia &c){ int n; cout<<"\n Ingrese el numero de elementos :"; cin>>n; while(n<=0 || n>10){ cout<<"\n Error...Ingrese El numero de Elementos: "; cin>> n; } for(int i=0;i<n;i++){ cout<<"\n Ingrese el Elemento "<<i+1<<" = ";

Page 162: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

162

cin>>c.el[i]; while(c.el[i]<=0 || c.el[i]>9){ cout<<"\n Error...Ingrese un Nuevo Elemento "<<i+1<<"= "; cin>> c.el[i]; } } return(in);

}ostream & operator<< (ostream &os, frecuencia &c){ cout<<"\n ( "; for(int i=0;i<10;i++){ if(c.el[i]>0) cout<<" "<<c.el[i]<<" "; } cout<<") "<<"\n"; return(os);

}

void main(){ clrscr(); char op; do{ frecuencia a,b; cout<<"\n\n \t\t\t Frecuencia \n\n";

Page 163: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

163

cin>> a; cout<<a; b=--a; cout<<"\n \n La Division de cada elemento para la Frecuencia :"; cout<<b; cout<<"\n Para Continuar presione a : "; cin>>op; }while(op=='a'|| op=='A'); getch();}

CONCLUSIONES La programación oientada a objetos permite la optimización

del código generdo gracias a que mediante tenicas de herencia, atributos estaticos entre otros permiten, que el código sea generico de manera que sea reutilizable.

Mediante las tenicas aprendidas en el presente curso podemos establecer una solución primitiva de un problema real, tan solo con relacionarlo con objetos lógicos que serán usados para el desarrollo del software.

Podemos dar a conocer de una forma sencilla los mecanismos que se usan en este nivel de programación, a personas que deseen una explicación rápida y sencilla de lo que es la programación orientada a objetos.

Tenemos los conocimientos necesarios como para enfrentar un problema real y desarollarlo en otro lenguaje de programación, pues consevimos la idea de que el lenguaje C es la base de la rogramacion.

Al trabajar con la programación orientada a objetos sea esta desarollada en otras plataformas de programación o en lenguaje C, sabemos las formas de lograr un mejor rendimiento del equipo a controlar y aplicar soluciones sencillas, de manera que

Page 164: s0c6f295e543e9394.jimcontent.com · Web view• Implementar en C++ una clase sencilla, así como crear una instancia y/ o procedimiento a partir de ella. • Aplicar el concepto de

164

sean fácilmente digeribles para el usuario y/o destinatario del trabajo final.