compu final 2

Upload: juan-david-tonguino-alcoser

Post on 08-Mar-2016

228 views

Category:

Documents


0 download

DESCRIPTION

trabajo de modo grafico

TRANSCRIPT

HARDWARE - UNIDADES DE SALIDA

ESCUELA POLITCNICA DEL EJERCITO

CIENCIAS BSICAS

ELECTRNICA

MODO GRAFICOPor:

Crdenas David

Donoso SebastinArmas GracielaDavid SnchezFecha de entrega: 02/01/2006DEDICATORIA

A este mundo, sus oportunidades y a las personas que nos apoyan.

AGRADECIMIENTO

Agradecemos a todas las personas que hicieron posible la realizacin de este trabajo y las diferentes fuentes que estuvieron a nuestra disposicin.RESUMEN EJECUTIVO

INDICE

3DEDICATORIA

4AGRADECIMIENTO

5RESUMEN EJECUTIVO

6INDICE

9OBJETIVOS

10Monitor

11Tamao:

11Tubo:

12Tamao de punto:

12Frecuencia de refresco:

13Resoluciones:

14Otras consideraciones:

15Pxel

16Modo grfico

17Iniciar modo grfico

18Los archivos BGI

20Uso de coordenadas

20Funciones de graficacin

27Ejercicios

27Aplicacin a los juegos: Tiro al blanco

42Solucin de una ecuacin no lineal por el mtodo de la Bisectriz:

51Suministro de agua

54Volmenes de revolucin.

67TIRO AL BLANCO

67MANUAL DEL USUARIO

68Tabla de contenido

68INSTALACION DEL PROGRAMA DE JUEGO

69MODO DE FUNCIONAMIENTO DEL PROGRAMA

69REQUERIMIENTOS DEL EQUIPO

69RESOLUCION DE PROBLEMAS

69INSTALACION DEL PROGRAMA DE JUEGO

72MODO DE FUNCIONAMIENTO DEL PROGRAMA

73REQUERIMIENTOS DEL EQUIPO

74RESOLUCION DE PROBLEMAS

75CONCLUSIONES

77RECOMENDACIONES

77BIBLIOGRAFIA

OBJETIVOS

-Conocer todo lo referente a modo grafico sus caracteristicas y su funcionamiento.-Cual es la manera de escribir estos comandos para su mayor funcionamiento y provecho para el estudiante-Conocer las maneras de poder dibujar y presentar un buen programa y amigable para el usuario

Monitor

El monitor es una parte del ordenador a la que muchas veces no le damos la importancia que se merece.

Hay que tener en cuenta que junto con el teclado y el ratn son las partes que interactan con nuestro cuerpo, y que si no le prestamos la atencin debida, podremos llegar incluso a perjudicar nuestra salud.

Evidentemente no en el caso de personas que hacen un so espordico, pero si en programadores impenitentes o navegadores incansables, que puedan pasarse muchas horas diarias al frente de la pantalla.

Vamos a explicar los parmetros que influyen en la calidad de un monitor:

Tamao: El tamao de los monitores se mide en pulgadas, al igual que los televisores. Hay que tener en cuenta que lo que se mide es la longitud de la diagonal, y que adems estamos hablando de tamao de tubo, ya que el tamao aprovechable siempre es menor.

El tamao es importante porque nos permite tener varias tareas a la vez de forma visible, y poder trabajar con ellas de manera cmoda.Tambin es importante en el caso de que se manejen documentos de gran tamao o complejidad, tales como archivos de CAD, diseo, 3D, etc que requieren de gran detalle. En estos casos son aconsejables tamaos de 21".

Tambin es importante tener en cuenta que con Windows 98 ya es posible conectar varios monitores al mismo PC, por lo que en el caso de requerir la visualizacin de varias tareas a la vez puede ser importante, por ejemplo, sustituir un monitor de 27 pulgadas por dos de 15, que ser una solucin ms barata y quizs ms cmoda.

Nunca hemos de aceptar menos de 15" (pulgadas). Hoy en da es el estndar, y es lo mnimo exigible, adems de ser los que mejor precio ofrecen.

Tubo:Otro aspecto importante es la marca del tubo y el tipo, as como otros detalles relacionados con l. Fabricantes de monitores hay muchos, pero de tubos son contados, con lo que si sabemos que modelo de tubo lleva nuestro monitor sabremos ya bastantes cosas importantes de l.

Fabricantes de tubos son: Sony, Mitsubishi, Nec, Phillips, etc...

Y normalmente cada fabricante se identifica con un tipo de tubo, por ejemplo Sony con el Trinitron (que sigue siendo punto de referencia), Mitsubishi con el DiamondTron, etc...

El tubo nos definir si la pantalla es ms o menos plana y cuadrada, el tamao del punto (dot pix) si tiene tratamiento antirreflejos, etc...

Tambin nos servir para comparar entre diferentes marcas, ya que si encontramos dos con el mismo tubo, pues ya sabemos que son iguales en casi todas las caractersticas ms importantes, y por tanto no debera haber mucha diferencia en cuanto a precio, a no ser que uno contara con muchos aditivos como controles digitales y caractersticas multimedia y el otro no. Tengamos presente que casi todo el coste del monitor es debido al tubo.

Tamao de punto:Esta es una de las caractersticas que depende del tubo, y define el tamao que tendr cada uno de los puntos que forman la imagen, por tanto cuanto ms pequeo ms preciso ser.

No hay que confundir el tamao de punto con el "pixel". El pixel depende de la resolucin de la pantalla, y puede variar, mientras que el punto es fijo, y depende exclusivamente del tubo.

Tamaos "normales" son alrededor de 0,28 mm. y es aconsejable que no sea de mayor tamao, en todo caso menor, como los 0,25 de los tubos Trinitron.

Frecuencia de refresco:Aqu si que podemos decir claramente que cuanto ms mejor. La frecuencia de refresco est proporcionalmente ligada a la estabilidad de la imagen, y por tanto al descanso y confort de nuestra vista.Nunca deberamos escoger valores por debajo de los 75 Hz en modos de 1.024 x 768 puntos, aunque un valor ptimo sera de 90 Hz., que sera el mnimo exigible en resoluciones menores.En resoluciones mayores, seguramente nos tengamos que conformar con valores ms bajos.

Tambin hay que tener claro que la tarjeta de video debe ser capaz de proporcionar esos valores, ya que de no ser as, de nada nos servir que el monitor los soporte.

Resoluciones:Resolucin de pantalla se denomina a la cantidad de pixels que se pueden ubicar en un determinado modo de pantalla. Estos pixels estn a su vez distribuidos entre el total de horizontales y el de verticales.

Todos los monitores pueden trabajar con mltiples modos, pero dependiendo del tamao del monitor, unos nos sern ms tiles que otros:

A nivel general se recomienda lo siguiente:

Tamao en pulgadasResoluciones recomendables

14640 x 480800 x 600

15800 x 6001.024 x 768

171.024 x 7681.280 x 1.024

191.280 x 1.0241.600 x 1.024

211.600 x 12001.280 x 1200

Cuando hablamos de resoluciones, hay que decir lo mismo que con las frecuencias de refresco, si nuestra tarjeta de video no las soporta, no podremos usarlas.

Hay que tener mucho cuidado de que estas resoluciones se obtengan de manera "no entrelazada", ya que sino, la calidad de la imagen se resiente de una forma inaceptable, reduciendo la frecuencia de refresco REAL a la mitad.

Otras consideraciones:Es habitual encontrarse con monitores "digitales". Este calificativo lo reciben los monitores que basan sus ajustes (como el brillo y el contraste) en unos pulsadores que permiten cambiar sus valores, en contraposicin con los mandos analgicos que incorporaban los monitores ms antiguos, en donde debes girar una pequea ruedecilla para modificar estos parmetros.Tienen importantes ventajas reales, como por ejemplo poder fijar para cada frecuencia los ajustes pertinentes, y que no se "desajusten" de nuevo al cambiar de resolucin.

Otra consideracin es el tipo de conector, que en ambientes domsticos y de oficina es el estndar de 15 pines marcado por IBM con su VGA, pero en entornos especializados en donde es imprescindible contar con monitores de gran tamao y calidad, se hace necesario contar con los 5 conectores BNC, que ofrecen una mayor proteccin frente a interferencias, y por tanto una mayor calidad de imagen.

Tampoco hemos hablado de las pantallas TFT, ya que aunque empiezan a ser estndar en monitores de ordenadores porttiles, para ordenadores "desktop" todava son una opcin demasiado cara, aunque al ritmo que vamos quizs no tardemos mucho en conseguir que sea un opcin viable (y muy buena).

En el apartado de Software, encontraremos un programa muy bueno, de la casa Nokia, que nos permitir ajustar nuestro monitor para sacarle el mximo rendimiento, y a su vez comprobar su calidad.

Pxel es la abreviatura de la expresin inglesa Picture Element (Elemento de Imagen), y es la unidad ms pequea que encontraremos en las imgenes compuestas por mapa de bits.

El pxel es la unidad mnima en que se divide la retcula de la pantalla del monitor y cada uno de ellos tiene diferente color.

Su tono de color se consigue combinando los tres colores bsicos (rojo, verde y azul) en distintas proporciones.

Un pxel tiene tres caractersticas distinguibles:

Forma cuadrada

Posicin relativa al resto de pxeles de un mapa de bits.

Profundidad de color (capacidad para almacenar color), que se expresa en bits.

Una imagen bitmap o mapa de bits, esta compuesta por pequeos puntos o pixeles con unos valores de color y luminancia propios. El conjunto de esos pixeles componen la imagen total.

Para que un ordenador dibuje un grfico de mapa de bits, debe recibir un conjunto de instrucciones para cada uno de esos puntos (cada bits de datos) que constituyen la imagen

Modo grfico

Cuando no usamos modo grfico (usando modo texto) la salida de nuestros programas son caracteres (letras) con un limitado nmero de estos en una pantalla; generalmente 80x24 caracteres. Al usar el modo grfico en nuestras aplicaciones configuramos la pantalla (salida) para soportar dibujado por pixeles; es decir, en realidad no mandamos letras a la salida sino puntos de colores en determinadas posiciones. Esto nos permite mandar figuras ms elaboradas a la salida de las aplicaciones: grficos.

Un programa en modo grfico tiene un esquema que consta de tres etapas: inicio de mdo grfico, ejecucin del programa (la aplicacin en s) y cierre de modo grfico. El establecimiento solamente se tiene que hacer una sola vez en toda la aplicacin; mientras este no sea cerrado la aplicacin seguir en l, no importa si la ejecucin est en el main() o en alguna otra funcin.

Las funciones que controlan el modo grfico estn en la biblioteca graphics.h, por eso es necesario que todo programa que quiera usar esta herramienta incluya dicho archivo:

#include < graphics.h >

Iniciar modo grfico

Para iniciar el modo grfico (de forma estndar) se utiliza una secuencia de instrucciones, por eso es recomendable ocupar una funcin que agrupe este proceso. Veamos la secuencia de comandos:

1: int gdriver = DETECT, gmode;

2: initgraph(&gdriver, &gmode,"C:\\TC\\BGI");

3: if (graphresult()!= grOk) {printf("\nERROR AL INICIAR MODO GRAFICO "); exit(1);}

En la primera lnea declaramos dos variables enteras: gdriver y gmode. La primera de estas la iniciamos con DETECT, una macro definida que indica que el tipo de modo grfico sea auto-detectado por el programa.

En la segunda lnea hacemos la llamada a la funcin initgraph la cual establece propiamente el modo grfico en la pantalla. A dicha funcin le pasamos los parmetros gdriver y gmode como referencia y una cadena donde le damos la ruta relativa o absoluta de un directorio donde tenemos los archivitos controladores del modo grfico: los famosos BGI (ms adelante vamos a ver esta cosa).

En la tercera lnea del cdigo verificamos que efectivamente el modo grfico se ha activado. Para esto verificamos que el valor de la funcin graphresult sea igual a grOK (grOK es otra macro definida). Si hubo algn problema con la activacin del modo grfico mandamos un error y finalizamos el programa.

Con el cdigo anterior se iniciara el modo grfico de una aplicacin con 640x480 pixeles de resolucin a 16 colores (ms adelante trataremos la resolucin y los colores).

Los archivos BGI

Los archivos BGI son los controladores del modo grfico, dichos archivos generalmente se encuentran en una carpeta llamada BGI dentro del directorio en el cual instalamos nuestro compilador. Por ejemplo: TC\BGI, BC\BGI, BORLANDC\BGI, etc. Es indispensable saber donde se ubican dichos archivos para iniciar el modo grfico, pues hay que indicar la ruta relativa o absoluta a la hora de iniciar el modo grfico. Es muy recomendable utilizar una macro para especificar esta carpeta, pues eso har ms fcil la modificacin de nuestro cdigo.

En muchos de los programas de cdigo abierto que encontrars en este portal definen esta macro como RUTA_BGI. Para compilar y ejecutar un programa en modo grfico tienes que escribir la ruta de tus archivos BGI en esta macro. Por ejemplo:

#define RUTA_BGI "C:\\TC\\BGI"

Dibujando

La resolucin es el nmero de puntos (pixeles) que posee la pantalla (salida). Cuando hablamos de una resolucin de 640x480 pixeles estamos diciendo que tenemos 640 puntos a lo ancho de la pantalla y 480 a lo alto.

Cuando dibujamos en modo grfico indicamos mediante funciones las diferentes formas que queremos que aparezcan en pantalla. A estas funciones les pasamos como parmetros coordenadas y tamaos; as estamos dibujando como en un plano cartesiano cuyas dimensiones estn determinadas por la resolucin de la pantalla.

Por ejemplo si queremos dibujar un circulo en las coordenadas [100,80] con un radio de 50 pixeles usaramos la siguiente funcin:

circle(100,80,50);

Tambin mediante funciones podemos definir los colores y estilos con los cuales deseamos dibujar en nuestra pantalla. Por ejemplo si quisiramos definir el color azul en el contorno de las figura usaramos:

setcolor(BLUE);

Donde BLUE es una macro definida que representa el color azul, la cual pasamos como parmetro a la funcin que establece el color. Despus de escribir esta lnea toda figura que dibujemos tendra el contorno azul, sin embargo todas aquellas formas que ya hayamos dibujado con anterioridad conservaran su apariencia.

Todas las funciones para pintar y definir apariencias estn incluidas en la ayuda de nuestro compilador, basta con ver la seccin de ayuda correspondiente a la biblioteca graphics.h.Al igual que la activacin del modo grfico el cierre de este solamente se tiene que hacer una sola vez, generalmente al finalizar el programa. Para cerrar el modo grfico solo es necesario hacer una llamada a la funcin:

closegraph();

Cerrar el modo grfico no es indispensable, pero es una prctica sana ya que liberamos recursos de nuestra mquina que se emplearon en nuestro programa y ya no ocupamos.

Uso de coordenadas Una vez que se inicializa el monitor en modo grfico, las coordenadas tienen al

pxel como unidad de medida. La funcin getmaxx() calcula la cantidad de pxeles por rengln y la funcin getmaxy() calcula la cantidad de renglones de la pantalla.

Las funciones de grficos tienen como estndar el orden de manejo de

coordenadas como columna, rengln; es decir, primero se anota la columna y despus el rengln para posicionarse en dicha coordenada.

Funciones de graficacin Sera muy difcil considerar todas las opciones posibles de todas las funciones de graficacin; sin embargo, en esta antologa se tratan los temas fundamentales para implementar este tipo de funciones. Bsicamente mostraremos que antes de utilizar un color, un tipo de lnea, de relleno, etc. es necesario definirlo. Pxeles, lneas, figuras geomtricas, colores y rellenos En esta seccin se presentan las funciones bsicas de graficacin, utilizadas para colocar pixeles, lneas, figuras geomtricas, etc. en la pantalla.

La funcin putpixel() Tal como se mencion en la seccin anterior, al habilitar el monitor en modo grfico, la pantalla se divide en pequeos puntos llamados pixeles. La funcin putpixel() coloca un punto o pxel de un color especfico en determinada coordenada de la pantalla. Esta funcin requiere 3 argumentos:

1) Columna del punto (coordenada x).

2) Rengln del punto (coordenada y).

3) Color del pxel.

putpixel(int x, int y, int color);

La funcin line()*/

#include // Encabezado con declaraciones de

graficos

#include // Para el uso de kbhit()

#include // Para el uso de random()

#include

// Para el uso de delay

void main(void)

{

int monitor=VGA, modo=VGAHI; // Declaracion de tipo de monitor

y modo

initgraph(&monitor,&modo,"\\tc\\bgi");

// Inicializa el modo grafico indicando el monitor y modo

utilizado

// El subdirectorio \\tc\\bgi indica la ruta de localizacion de

los

// archivos *.BGI (monitores) y *.CHR (tipos de letras)

while(!kbhit()) // Mientras no se oprima cualquier tecla

{

putpixel(random(getmaxx()),random(getmaxy()),random(getmaxcolor

()));

// Coloca un pixel en la pantalla, seleccionando al azar la

columna

// (1..getmaxx), el renglon (1..getmaxy) y el color

(1..getmaxcolor)

delay(5);

}

closegraph(); // Termina el modo grafico (vuelve a su modo

normal)

}

La funcin setlinestyle()

Esta funcin se utiliza para determinar el tipo de lnea o trazo que se desea. Se pueden utilizar trazos con lnea continua, lnea punteada, lnea interrumpida, o un patrn de lnea definido por el usuario. Esta funcin requiere 3 argumentos:

1) Tipo de lnea: Puede ser SOLID_LINE, DOTTED_LINE, CENTER_LINE,

DASHED_LINE o USERBIT_LINE.

2) Patrn: Este argumento regularmente es ignorado (excepto cuando se trata de un

tipo de lnea definido por el usuario).

3) Ancho de lnea: Define la amplitud del trazo.

setlinestyle(DOTTED_LINE,0, NORM_WIDTH);

line(50,100,300,200);

La funcin circle()

Esta funcin dibuja un crculo y requiere 3 argumentos:

1) Coordenada de la columna del centro (en pixeles).

2) Coordenada del rengln del centro (en pixeles).

3) Radio del crculo (en pixeles).

La funcin rectangle()

Esta funcin dibuja un rectngulo indicando las coordenadas de las esquinas superior izquierda e inferior derecha respectivamente. La funcin ellipse()

Se usa esta funcin para dibujar un arco elptico o una elipse completa. Esta funcin requiere 6 argumentos:

1) Columna del centro de la elipse (coordenada x).

2) Rengln del centro de la elipse (coordenada y).

3) ngulo inicial del arco.

4) ngulo donde termina el arco.

5) Radio horizontal de la elipse.

6) Radio vertical de la elipse.

Se puede dibujar una elipse completa indicando el ngulo inicial como 0 (cero) y

el ngulo final como 359 . La Fig. 12 dibuja una elipse completa con centro en 100,150,

con radio horizontal de 25 y radio vertical de 40 pixeles.

La funcin arc()

Se usa esta funcin para dibujar un arco circular. Esta funcin requiere 5 argumentos:

1) Columna del centro del arco (coordenada x).

2) Rengln del centro del arco (coordenada y).

3) ngulo inicial del arco.

4) ngulo donde termina el arco.

5) Radio.

Los puntos de inicio y final del arco se especifican por medio de sus ngulos

medidos en el sentido de las manecillas del reloj; es decir, con 0 en las 3:00, 90 en las

12:00 y as sucesivamente. La funcin setcolor()

Se utiliza esta funcin para definir el color de los trazos siguientes; es decir, antes de dibujar un trazo de un color especfico, ste debe definirse. Esta funcin slo tiene un argumento que representa el cdigo del color deseado. P. ejem. BLACK, RED,

BLUE, GREEN, YELLOW, etc. o bien su nmero entero correspondiente. La muestra la tabla de colores y sus respectivos valores.

BLACK 0

BLUE 1

GREEN 2

CYAN 3

RED 4

MAGENTA 5

BROWN 6

LIGHTGRAY 7

DARKGRAY 8

LIGHTBLUE 9

LIGHTGREEN 10

LIGHTCYAN 11

LIGHTRED 12

LIGHTMAGENTA 13

YELLOW 14

WHITE 15

Definiendo el tipo de relleno de una figura con la funcin setfillstyle()

Si se desea rellenar una figura, es necesario definir previamente el patrn y color

del relleno. La Fig. muestra los patrones de relleno disponibles.

EMPTY_FILL 0

Color del fondo

SOLID_FILL 1

Relleno slido con el color determinado

LINE_FILL 2

Relleno con lnea (---)

LTSLASH_FILL 3

Relleno con /// lneas de ancho normal

SLASH_FILL 4

Relleno con /// lneas

BKSLASH_FILL 5

Relleno con \\\ lneas

LTBKSLASH_FILL 6

Relleno con \\\ lneas de ancho normal

HATCH_FILL 7

Relleno de lneas cruzadas ligeras

XHATCH_FILL 8

Relleno de lneas cruzadas gruesas

INTERLEAVE_FILL 9

Relleno de lneas

WIDE_DOT_FILL 10

Relleno de puntos espaciados

CLOSE_DOT_FILL 11

Relleno de puntos cercanos

USER_FILL 12

La funcin floodfill()

Una vez seleccionado el patrn de relleno mediante la funcin

setfillstyle(), se procede a rellenar una figura usando la funcin floodfill().

Es muy importante resaltar que la figura que se desea rellenar est completamente cerrada, ya que esta funcin contiene un algoritmo que busca el contorno de la figura y, en caso de encontrar una apertura, la funcin extralimitar la figura y tambin rellenar la parte externa de la misma. La funcin floodfill() requiere identificar un punto que se encuentre dentro del contorno de la figura y necesita 3 argumentos:

1) Coordenada de la columna del punto interno de la figura.

2) Coordenada del rengln del punto interno de la figura.

3) Color del borde de la figura.

Ejercicios

Aplicacin a los juegos: Tiro al blancoLenguaje de programacin

#include

#include

#include

#include

#include

#include

#include

#include

int ControladorG, ModoG, ErrorG; /*VARIABLES PARA EL MODO GRAFICO*/

int radio, radio1, radio2;

int xxx[5];

int yyy[5];

int puntaje[4]= {0,0,0,0}; /*esto ayuda para discernir el puntaje final*/

/*Esta funcion permite inicializar el modo grafico*/

void inicializar()

{

ControladorG= DETECT;

initgraph( &ControladorG , &ModoG, "BGI");

ErrorG = graphresult();

if(ErrorG!=grOk )

{

printf("\nError al inicializar el modo grfico...\n%s",grapherrormsg(ErrorG) );

getch();

exit(1);

}

}

//640 x 480 es la resolucion de pantalla

int gprintf( int xloc, int yloc, char *fmt, ... )

{

va_list argptr;

/* lista de argumentos */

char str[140];

/* Buffer para las cadenas*/

int cnt;

/* Resultado de SPRINTF */

va_start( argptr, fmt );

/* Inicializa las va_ functions*/

cnt = vsprintf( str, fmt, argptr );/* imprime la cadena al buffer*/

outtextxy( xloc, yloc, str );/* Enviar la cadena al modo grafico */

yloc += textheight( "H" ) + 2; /* Avance hacia la siguiente linea */

va_end( argptr );

/* cierra va_ functions */

return( cnt );

/* Retorna la cuenta de conversion */

}

/*Esta funcion dibuja un cuadro de texto para ingresar datos*/

void caja_texto(char *nombre,int numr )

{

int cuadro[8]; //posicion del cuadro de texto

int i, x;

char cadena[30];

char *cad;

//setwritemode( OR_PUT);

setbkcolor(9);

setcolor(LIGHTRED);

cuadro[0]= 5;

cuadro[1]= 13;

cuadro[2]= 320;

cuadro[3]= 13;

cuadro[4]= 320;

cuadro[5]= 110;

cuadro[6]= 5;

cuadro[7]= 110;

setfillstyle(INTERLEAVE_FILL,LIGHTBLUE );

fillpoly( 4, cuadro );

setcolor( LIGHTGREEN);

settextstyle( 6,0, 1);

gprintf( 20, 50,"%s",nombre );

cuadro[0]= 90;

cuadro[1]= 48;

cuadro[2]= 290;

cuadro[3]= 48;

cuadro[4]= 290;

cuadro[5]= 75;

cuadro[6]= 90;

cuadro[7]= 75;

setfillstyle( 1, 15 );

fillpoly(4, cuadro);

settextstyle(2, 0, 5);

setcolor(MAGENTA);

/*Este bucle sirve para ingresar los valores*/

for( i = 0, x=110; i 110) && (i>=0) )

{

i= i-1;

x= x-7;

setcolor(15);

cuadro[0]= x;

cuadro[1]= 53;

cuadro[2]= x+7;

cuadro[3]= 53;

cuadro[4]= x+7;

cuadro[5]= 68;

cuadro[6]= x;

cuadro[7]= 68;

setfillstyle( 1, 15 );

fillpoly( 4, cuadro );

x= x-7;

setcolor(MAGENTA)

;

continue;

}

/*en esta parte convierto los datos ingresados a char*/

sprintf( cad,"%c", cadena[i]);

outtextxy( x, 53, cad );

}

switch(numr)

{

case 1:

radio1=atoi(cadena);

break;

case 2:

radio2=atoi(cadena);

break;

case 3:

xxx[0]=atoi(cadena);

break;

case 4:

yyy[0]=atoi(cadena);

break;

case 5:

xxx[1]=atoi(cadena);

break;

case 6:

yyy[1]=atoi(cadena);

break;

case 7:

xxx[2]=atoi(cadena);

break;

case 8:

yyy[2]=atoi(cadena);

break;

case 9:

xxx[3]=atoi(cadena);

break;

case 10:

yyy[3]=atoi(cadena);

break;

case 11:

xxx[4]=atoi(cadena);

break;

case 12:

yyy[4]=atoi(cadena);

break;

}

}

/*Esta funcion dibuja las circunferencias respectivos con los radios*/

void dibujar_circulo(int r)

{

settextstyle(2, 0, 5);

circle (getmaxx()/2,getmaxy()/2,r); /*dibuja una circunferencia*/

}

/*Esta funcion borra la pantalla*/

void limpia_pantalla()

{

cleardevice(); /*Limpia la pantalla*/

setbkcolor(9); /*Pone un color de fondo*/

}

struct PTS {

int x, y;

};/* estructura para los puntos del pentagrama*/

#define MAXPTS5

#define PI 3.141516

void dibujar_pentagrama()

{

/*????*/

double AspectRatio;

int xasp, yasp;

getaspectratio(&xasp,&yasp);

AspectRatio=(double)xasp/(double)yasp;

struct viewporttype vp;

struct PTS points[MAXPTS];

int i, j, h, w, xcenter, ycenter;

int radius, angle, step;

double rads;

getviewsettings( &vp );

xcenter=getmaxx()/2;

ycenter=getmaxy()/2;

radius=radio1; /*este es el radio menor */

step = 360 / MAXPTS;

/* Determiae el # de incrementos*/

angle = 0;

/* Begin at zero degrees*/

for( i=0 ; i centroy - (radio1/2) && yyy[v] < centroy +(radio1/2) )

puntaje[1]=puntaje[1]+4;

else

{

if(xxx[v]< centrox+ (radio1) && xxx[v] > centrox - (radio1) && yyy[v] > centroy - (radio1) && yyy[v] < centroy + radio1 )

puntaje[2]=puntaje[2]+2;

else

{

if(xxx[v]< centrox+ (radio2) && xxx[v] > centrox - (radio2) && yyy[v] > centroy - (radio2) && yyy[v] < centroy + radio2 )

puntaje[3]=puntaje[3]+1;

}

}

}

}/*fin del for*/

}

void dibuja_marcador()

{

setcolor(15);

gprintf(250,100, "EL MARCADOR ES:");

gprintf(250,120, "Zona 1: %d",puntaje[0]);

gprintf(250,140, "Zona 2: %d",puntaje[1]);

gprintf(250,160, "Zona 3: %d",puntaje[2]);

gprintf(250,180, "Zona 4: %d",puntaje[3]);

gprintf(250,200, "TOTAL : %d",puntaje[0]+puntaje[1]+puntaje[2]+puntaje[3]);

}

void main() {

inicializar(); /* llama al mtodo inicializar */

caja_texto("Radio1:",1);

caja_texto("Radio2:",2);

limpia_pantalla();

dibujar_circulo(radio1);

dibujar_circulo(radio2);

dibujar_pentagrama();

getch();

limpia_pantalla();

caja_texto("Coord X1:",3);

caja_texto("Coord Y1:",4);

limpia_pantalla();

dibujar_circulo(radio1);

dibujar_circulo(radio2);

dibujar_pentagrama();

dibuja_punto(xxx[0],yyy[0],2);

getch();

limpia_pantalla();

caja_texto("Coord X2:",5);

caja_texto("Coord Y2:",6);

limpia_pantalla();

dibujar_circulo(radio1);

dibujar_circulo(radio2);

dibujar_pentagrama();

dibuja_punto(xxx[0],yyy[0],2);

dibuja_punto(xxx[1],yyy[1],3);

getch();

limpia_pantalla();

caja_texto("Coord X3:",7);

caja_texto("Coord Y3:",8);

limpia_pantalla();

dibujar_circulo(radio1);

dibujar_circulo(radio2);

dibujar_pentagrama();

dibuja_punto(xxx[0],yyy[0],2);

dibuja_punto(xxx[1],yyy[1],3);

dibuja_punto(xxx[2],yyy[2],4);

getch();

limpia_pantalla();

caja_texto("Coord X4:",9);

caja_texto("Coord Y4:",10);

limpia_pantalla();

dibujar_circulo(radio1);

dibujar_circulo(radio2);

dibujar_pentagrama();

dibuja_punto(xxx[0],yyy[0],2);

dibuja_punto(xxx[1],yyy[1],3);

dibuja_punto(xxx[2],yyy[2],4);

dibuja_punto(xxx[3],yyy[3],5);

getch();

limpia_pantalla();

caja_texto("Coord X5:",11);

caja_texto("Coord Y5:",12);

limpia_pantalla();

dibujar_circulo(radio1);

dibujar_circulo(radio2);

dibujar_pentagrama();

dibuja_punto(xxx[0],yyy[0],2);

dibuja_punto(xxx[1],yyy[1],3);

dibuja_punto(xxx[2],yyy[2],4);

dibuja_punto(xxx[3],yyy[3],5);

dibuja_punto(xxx[4],yyy[4],6);

getch();

limpia_pantalla();

calcula_marcador();

dibuja_marcador();

getch();

}

Solucin de una ecuacin no lineal por el mtodo de la Bisectriz:

Lenguaje de programacin

#include

#include

#include

#include

#include

#include

#include

int main(void)

{

int gdriver = DETECT, gmode, errorcode, gx, gy, gc, inicior, i, xp, yp, cp,escala;

char op;

float a,b,intmin,intmax,error,xi,yi,incremento,errori,inta,intb,intm,ya,yb,ym;

char *msg, *msg1;

a=1;

b=0.2;

intmin=0.001;

intmax=1;

error=0.001;

escala=200;

do

{

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

gx=getmaxx();

gy=getmaxy();

if (errorcode != grOk)

{

printf("Error al cargar unidad grfica: %s\n", grapherrormsg(errorcode));

printf("Presione una tecla para continuar");

getch();

exit(1); /* return with error code */

}

cleardevice();

setcolor(1);

bar(0,0,gx,gy);

setcolor(6);

rectangle(10,10,40,gy-10);

rectangle(gx-10,10,gx-50,gy-10);

rectangle(0,0,gx,gy);

rectangle(2,2,gx-2,gy-2);

settextjustify(1,1);

settextstyle(1,0,2);

outtextxy(gx/2,20,"Escuela Politcnica del Ecuador");

outtextxy(gx/2,50,"Trabajo de Programacin");

settextjustify(0,0);

settextstyle(1,0,2);

outtextxy(100,110,"1.- Ingresar valor de a");

outtextxy(100,140,"2.- Ingresar el valor de b");

outtextxy(100,170,"3.- Ingresar el valor de intelvalo mnimo");

outtextxy(100,200,"4.- Ingresar el valor de intervalo mximo");

outtextxy(100,230,"5.- Ingresar el valor del error admitido");

outtextxy(100,260,"6.- Graficar la ecuacin");

outtextxy(100,290,"7.- Salir del programa");

rectangle(100,320,gx-100,460);

settextstyle(2,0,4);

outtextxy(gx/2-50,330,"DATOS DEL PROGRAMA");

gcvt(a,10,msg);

outtextxy(120,345,"a = ");

outtextxy(160,345,msg);

gcvt(b,4,msg);

outtextxy(120,360,"b = ");

outtextxy(160,360,msg);

gcvt(intmin,10,msg);

outtextxy(120,375,"Int. mnimo = ");

outtextxy(200,375,msg);

gcvt(intmax,10,msg);

outtextxy(120,390,"Int. mximo = ");

outtextxy(200,390,msg);

gcvt(error,10,msg);

outtextxy(120,405,"Error mnimo = ");

outtextxy(200,405,msg);

op=getch();

if (op=='1')

{

closegraph();

printf("Ingrese el valor de a: ");

cin>>a;

}

if (op=='2')

{

closegraph();

printf("Ingrese el valor de b: ");

cin>>b;

}

if (op=='3')

{

closegraph();

printf("Ingrese el valor del intervalo mnimo: ");

cin>>intmin;

}

if (op=='4')

{

closegraph();

printf("Ingrese el valor del intervalo mximo: ");

cin>>intmax;

}

if (op=='5')

{

closegraph();

printf("Ingrese el valor del mximo error permitido: ");

cin>>error;

}

if (op=='6')

{

cleardevice();

setcolor(4);

for (i=0;i