/* Cree una clase Rectangulo mas compleja que la del ejercicio 6.12 Esta clase solo almacena las coordenadas cartesianas de las cuatro esquinas del rectangulo. El constructor llama a una funcion set que acepta cuatro conjuntos de coordenadas y verifica que todas esten en el primer cuadrante, sin ninguna coordenada x o y mayores que 20.0 Dicha funcion tambien verifica que las coordenadas indicadas efectivamente especifiquen un rectangulo. Mediante funciones miembro se calculan longitud, anchura, perimetro y area. La longitud es la mayor de las dos dimensiones. Incluya la funcion de predicado cuadrado que determina si el rectangulo es un cuadrado. */ #include <iostream> using namespace::std; class Rectangulo { // Abre la clase Rectangulo public: Rectangulo( float = 0, float = 0); void setCoordenadas(float, float); void setCoordenadas_Usuario(); void setLongitud(); void setAnchura(); float getAbscisa(); float getOrdenada(); void Utileria(); void Cuadrado( float, float ); private: float x; float y; float Perimetro( float, float); float Area( float, float); }; // Cierra la clase Rectangulo /////////////////////////////////////////////////////////////////////// // CONSTRUCTOR //////////////////////////////////////////////////////////////////////// Rectangulo::Rectangulo( float a, float b) { // Abre constructor x = a; y = b; } // Cierra constructor //////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO SET COORDENADAS_USUARIO ////////////////////////////////////////////////////////////////// void Rectangulo::setCoordenadas_Usuario() { // Abre setCoordenadas_Usuario float auxiliar1; float auxiliar2; cout << "\nPor favor introduzca un valor valido para x " << "( mayor que 0.0 y menor que 20.0)" << endl; cin >> auxiliar1; cout << "\nPor favor introduzca un valor valido para y " << " ( mayor que 0.0 y menor que 20.0 )" << endl; cin >> auxiliar2; setCoordenadas( auxiliar1, auxiliar2); } // Cierra setCoordenadas_Usuario ///////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO SET COORDENADAS ///////////////////////////////////////////////////////////////// void Rectangulo::setCoordenadas( float m, float n) { // Abre setCoordenadas x = ( 0 < m && 20 >= m)? m: 1; y = ( 0 < n && 20 >= n)? n: 1; } // Cierra setCoordenadas //////////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO GETABSCISA ////////////////////////////////////////////////////////////////////// float Rectangulo::getAbscisa() { // Abre getAbscisa return x; } // Cierra getAbscisa ///////////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO GETORDENADA //////////////////////////////////////////////////////////////////////// float Rectangulo::getOrdenada() { // Abre getOrdenada return y; } // Cierra getOrdenada ////////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO UTILERIA /////////////////////////////////////////////////////////////////// void Rectangulo::Utileria() { // Abre Utileria Rectangulo punto1; Rectangulo punto2; Rectangulo punto3; Rectangulo punto4; punto1.setCoordenadas_Usuario(); punto2.setCoordenadas_Usuario(); punto3.setCoordenadas_Usuario(); punto4.setCoordenadas_Usuario(); int rectangulo = 0; float auxiliar1 = 0; float auxiliar2 = 0; if ( punto1.getAbscisa() == punto2.getAbscisa() ) { // abre primer if if ( punto3.getAbscisa() == punto4.getAbscisa() ) if ( punto1.getOrdenada() == punto3.getOrdenada() ) if ( punto2.getOrdenada() == punto4.getOrdenada()) { rectangulo = 1; auxiliar1 = punto2.getOrdenada() - punto1.getOrdenada(); auxiliar2 = punto4.getAbscisa() - punto2.getAbscisa(); } if ( punto1.getOrdenada() == punto4.getOrdenada()) if ( punto2.getOrdenada() == punto3.getOrdenada()) { rectangulo = 1; auxiliar1 = punto2.getOrdenada() - punto1.getOrdenada(); auxiliar2 = punto3.getAbscisa() - punto2.getAbscisa(); } } // Cierra primer if if ( punto1.getAbscisa() == punto3.getAbscisa() ) { // Abre segundo if if ( punto2.getAbscisa() == punto4.getAbscisa() ) { // Abre if anidado if ( punto1.getOrdenada() == punto2.getOrdenada() ) { if ( punto3.getOrdenada() == punto4.getOrdenada() ) { // Abre if rectangulo = 1; auxiliar1 = punto3.getOrdenada() - punto1.getOrdenada(); auxiliar2 = punto4.getAbscisa() - punto3.getAbscisa(); } } if ( punto1.getOrdenada() == punto4.getOrdenada()) if ( punto3.getOrdenada() == punto2.getOrdenada() ) { rectangulo = 1; auxiliar1 = punto3.getOrdenada() - punto1.getOrdenada(); auxiliar2 = punto2.getAbscisa() - punto3.getAbscisa(); } } // Cierra if anidado } // Cierra segundo if if ( punto1.getAbscisa() == punto4.getAbscisa()) { // Abre tercer if if ( punto2.getAbscisa() == punto3.getAbscisa()) { // Abre if anidado if ( punto1.getOrdenada() == punto2.getOrdenada()) if ( punto4.getOrdenada() == punto3.getOrdenada()) { rectangulo = 1; auxiliar1 = punto4.getOrdenada() - punto1.getOrdenada(); auxiliar2 = punto3.getAbscisa() - punto4.getAbscisa(); } if ( punto1.getOrdenada() == punto3.getOrdenada()) if ( punto2.getOrdenada() == punto4.getOrdenada()) { rectangulo = 1; auxiliar1 = punto4.getOrdenada() - punto1.getOrdenada(); auxiliar2 = punto4.getAbscisa() - punto2.getAbscisa(); } } // Cierra if anidado } // Cierra tercer if if ( 1 == rectangulo ) cout << "\nLas coordenadas forman un rectangulo." << endl; else cout << "\nLas coordenadas no forman un rectangulo. " << endl; if ( auxiliar1 < 0 ) auxiliar1 = -auxiliar1; if ( auxiliar2 < 0 ) auxiliar2 = -auxiliar2; if ( auxiliar1 > auxiliar2 ) { cout << "\nLa longitud es: " << auxiliar1 << endl; cout << "\nEl ancho es: " << auxiliar2 << endl; } else { cout << "\nLa longitud es: " << auxiliar2 << endl; cout << "\nEl ancho es: " << auxiliar1 << endl; } cout <<"\nEl perimetro es: " << Perimetro( auxiliar1, auxiliar2) << endl; cout << "\nEl area es: " << Area( auxiliar1, auxiliar2 ) << endl; if ( 0 != Area( auxiliar1, auxiliar2 ) ) Cuadrado( auxiliar1, auxiliar2); } // Cierra Utileria //////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO CUADRADO //////////////////////////////////////////////////////////////// void Rectangulo::Cuadrado( float a, float b) { // Abre funcion miembro cuadrado if ( a == b ) cout << "\nEl rectangulo es un cuadrado. " << endl; else cout << "\nEl rectangulo no es un cuadrado. " << endl; } // Cierra funcion miembro cuadrado //////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO PERIMETRO /////////////////////////////////////////////////////////////////// float Rectangulo::Perimetro( float n, float m) { // Abre Perimetro return 2*n + 2*m; } // Cierra Perimetro //////////////////////////////////////////////////////////////////// // FUNCION MIEMBRO AREA ////////////////////////////////////////////////////////////////////// float Rectangulo::Area( float s, float t) { // Abre Area return s*t; } // Cierra Area ///////////////////////////////////////////////////////////////////// // MAIN ///////////////////////////////////////////////////////////////////// int main() { // Abre main Rectangulo miRectangulo; miRectangulo.Utileria(); return 0; } // Cierra main
jueves, 7 de julio de 2011
Deitel_C++_6.13 (Calcular Área y Perímetro de un Rectángulo en C++)
Suscribirse a:
Enviar comentarios (Atom)
la funcion utileria a que hace referencia
ResponderEliminar