Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - ſeptiembre 05, 2008, 03:16:11
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: dibujar en consola, en plano cartesiano rectangulo 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: dibujar en consola, en plano cartesiano rectangulo  (Leído 252 veces)
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« en: Abril 04, 2008, 01:28:18 »

Bien en el colegio me encargaron hacer una clase que se llama rectangulo con varias caracteristicas.

9.11 (Rectangle Class) Create a class Rectangle with attributes length and width, each of which defaults to 1. Provide member functions that calculate the perimeter and the area of the rectangle. Also, provide set and get functions for the length and width attributes. The set functions should verify that length and width are each floating-point numbers larger than 0.0 and less than 20.0.
 
9.12 (Enhancing Class Rectangle) Create a more sophisticated Rectangle class than the one you created in Exercise 9.11. This class stores only the Cartesian coordinates of the four corners of the rectangle. The constructor calls a set function that accepts four sets of coordinates and verifies that each of these is in the first quadrant with no single x- or y-coordinate larger than 20.0. The set function also verifies that the supplied coordinates do, in fact, specify a rectangle. Provide member functions that calculate the length, width, perimeter and area. The length is the larger of the two dimensions. Include a predicate function square that determines whether the rectangle is a square.
 
9.13 (Enhancing Class Rectangle) Modify class Rectangle from Exercise 9.12 to include a draw function that displays the rectangle inside a 25-by-25 box enclosing the portion of the first quadrant in which the rectangle resides. Include a setFillCharacter function to specify the character out of which the body of the rectangle will be drawn. Include a setPerimeterCharacter function to specify the character that will be used to draw the border of the rectangle. If you feel ambitious, you might include functions to scale the size of the rectangle, rotate it, and move it around within the designated portion of the first quadrant.
 
lo siento para los que no sepan ingles, de hecho yo no se mucho pero pues asi son esas escuelas raras =p. 

alguien me podria dar una idea para el ejercicio 9.13, para la funcion scale y pues rotate, no e hecho ni la funcion draw pero supongo que a de ser facil, o almenos tengo una idea, pero las scale y rotate, bueno rotate igual tengo algo de idea por que no especifica mucho como rotar el rectangulo y scale no tengo mucha idea de como  hacerlo.
nota:
*no se pueden usar structs ni mas clases ( por si querian hacer algun objeto Point ).

aqui estan los primeros 2 ejercicios( 9.11 y 9.12 ), estan medio "al ahi se va"


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
En línea

am
AzRaEL
Moderador Global
Habitual
*****
Desconectado Desconectado

Mensajes: 391


...


Ver Perfil
« Respuesta #1 en: Abril 04, 2008, 01:33:52 »

.... pregunta si se puede usar openGL, de ser asi creo que ya lo tengo resuelto....


saludos
En línea

Carbide Senior Developer
crackenfind.net
eof-project.net

DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #2 en: Abril 04, 2008, 12:16:17 »

unas pequeñas mejoras que vi se le puedne hacer al codigo :p:

Dado sid1 y sid 2 en valor del perimetro es la suma de ambos elevados al cuadrado, por ende el siguiente codigo resuelve:

Código:
double Rectangle::clcPerimeter()
{
    return (( sid1 + sid2) << 1);
}

El else es innecesario, en la de square tambien, y se podran resolver ambas con un operadore ternario, por otra parte es posible que al compilador no le guste del todo el verse obligado a realizar la conversion de ( sid1 == sid2 ) a bool:

Código:
bool Rectangle::isRectangle()
{
 
    if( isSORR() ) //rectangle or square
          return !( sid1 == sid2 );
    return false;
}

Los pow del principio ya tendras idea con los anteriores code como quitarlos a fin de darle performance al code, para la raiz cuadrada si no le veo en el momento otra solucion Tongue. Salu2.

Att: DarkIker
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> Colombia Underground Team

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion --> My Blog
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #3 en: Abril 04, 2008, 11:15:26 »

me asusta la imagen de azrael...

no azrael, de hecho es mucho mas sencillo que utilizar OpenGL, solo debes "dibujarlo" en la consola con caracteres.

gracias por los consejos de como optimizar el codigo darkiker pero no puedo usar esos operadores a nivel de bits por que aun no los hemos visto en clase, pero igual me sirven para mis codigos.

Aver dejen hago la funcion draw, setPerimeterCharacter y setFillCharacter que parecen ser las mas faciles. Estoy pensando que seria mas facil alomejor, usar un array bidimensional 25x25 y ya de algun modo rellenar algunos elementos y juntarlos... mm, supongo que seria mas facil eso a aventarme la modo guru matematico, con funciones de geometria analitica.
En línea

am
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #4 en: Abril 06, 2008, 01:19:54 »

bueno alomejor no me entendieron solo era una solucion sencilla como esta

Código:
void Rectangle::draw()
{
    for( int i = 1; i <= getLength(); i++ )
    cout << perChar;
    cout << '\n';
    for( int i = 1; i <= getWidth() - 2; i++ )
    {
        cout << perChar;
        for( int in = 1; in <= getLength() - 2; in++ )
        cout << fillChar;
        cout << perChar;
        cout << '\n';
    }
    for( int i = 1; i <= getLength(); i++ )
    cout << perChar;
    cout << '\n';
}

usando igual el codigo que ya habia publicado.




y bueno darkiker tengo dudas: si no pongo else en isSquare e isRectangle me arrojara false si la condicion no es verdadera? es casi obvio que si pero la verdad tengo algo de duda... ( es decir si no regresa true pues debe de regresar false ( implicitamente ), supongo yo no?, pero no lo habia pensado ).

sobre el operador ternario eso lo use al principio, pero un amigo me dijo que seria mas facil solamente poniendo return !( sid1 == sid2 ); ( y le hice caso ) ...  en fin no se mucho sobre como vendra saliendo en lenguaje maquina ( y como tendra mejor perfomance ), solo me fijo en que el codigo quede lo mas facil y simple posible. Pero igual tengo duda sobre por que usar el   return ( sid1 == sid2 )? true:false en ves de return ( sid1 == sid2 ); ...
« Última modificación: Abril 06, 2008, 07:28:32 por lann » En línea

am
ZequeZ
Miembro
*****
Desconectado Desconectado

Mensajes: 104


Adicto PC


Ver Perfil WWW Email
« Respuesta #5 en: Abril 14, 2008, 10:22:02 »

Bien en el colegio me encargaron hacer una clase que se llama rectangulo con varias caracteristicas.

En el colegio? A que colegio vas? Que envidia xD... Yo quiero que me enseñen programación en el colegio xD... De donde sos?
En línea

Please wait...
Learning...
Learning...
Learning...
Cannot create a trojan
Learn more and try again
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #6 en: Abril 15, 2008, 12:24:53 »

Soy de Mty, Mexico pero en estos momentos estoy estudiando en una escuela chafona en Chihuahua que se llama cbtis, se estan guiando con un libro de D&D.

y pues si todavia si les interesa una buena solucion, ahora las coordenadas pues, cada punto es un array de 2 elementos y previamente esta definido const int x = 0, y = 1; osea el elemento 0 es x y el 1 es y obvio.


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

esta mucho mejor que la soulcion que habia publicado anteriormente =p
En línea

am
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: dibujar en consola, en plano cartesiano rectangulo « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC