Algoritmos de programación formal
Su código es demasiado antiguo, mucho más antiguo que C99, incluso más antiguo que C89.
Simplemente lo cambié y no sé si fue tu petición.
Sin TC, la verificación no se puede ejecutar.
# include & ltstdio.h & gt
# include & ltgraphics.h & gt
#Definición izquierda 1
#Definición Derechos 2
#define abajo 4
#define arriba 8
/*
#define XL 100
#Definition XR 400
#Definition YB 100
#Definition YT 400
*///El código ha sido eliminado
float XL, YB, XR, YT; /// Código agregado // Movido de la función principal.
Codificación nula (coma flotante x, coma flotante y, int * código)
{
int c = 0;
if (x & lt; XL)c = c | IZQUIERDA
si no (x & lt; c = c | ABAJO;
si no (y & gt; YT)c = c | ARRIBA;
* código = c;
Retorno;
}
/*(x1, y1) y ( x2, y2) son las coordenadas del punto final del segmento de línea.
Los otros cuatro parámetros definen los límites izquierdo, inferior, derecho y superior de la ventana*/
void C_S_LineCLip(punto flotante x1, punto flotante y1, punto flotante x2, punto flotante y2 )
{
int código1, código2, código;
Punto flotante x, y;
Codificación (x1, y1, & amp code 1);
Codificación (x2, y2 y ampcode 2);
while((code1!=0) ||(code2!=0))
{
if((código 1 y código 2)! = 0) devuelve
código = código 1
if( código 1 == 0)código = código 2;
if ((left & code)!=0)/*El segmento de línea cruza el límite izquierdo*/
{ p >
x = XL
y = y 1+(y2-y 1)*(XL-x 1)/(x2-x 1);
}< / p>
else if((Código derecho y amp)!=0)/*El segmento de línea cruza el límite derecho*/
{
x = XR p>
y = y 1+(y2-y 1)*(XR-x 1)/(x2-x 1);
}
si no(( BOTTOM & amp ; código)! =0)/*El segmento de línea intersecta el límite inferior*/
{
y = YB
x = x 1 +(x2-x 1)*(y B- y 1)/(y2-y 1);
}
else if((TOP & amp; código)!= 0) /*Segmento de línea intersecta el límite superior*/
{
y = YT
x = x 1+(x2-x 1)*( YT-y 1)/ (y2-y 1);
}
if(código==código1)
{ x 1 = x 1; = y; código(x, y y código de amplificador 1);}
Otro
{ x2 = x; y2 = y; codificación (x, y y código de amplificador 2);}
}
Fila ((int)x1, (int)y1, (int)x2, (int)y2);
Retorno;
}
int main()
{
int Graphdriver = VGA
int Graphmode = VGAHI
Punto flotante px1, py1, px2, py2
//float XL, YB, XR, YT /// El código agregado se mueve al frente.
init graph(& controlador de gráficos y modo gráfico, " c:\\turbo 2 "
scanf("%f%f%f%f ", & ampXL & amp ;YB & Introduzca los dos puntos finales de la línea que desea recortar: ");
scanf("%f%f%f%f",&px1.py1.px2&py2); p>
C_S_LineCLip(px1, py1, px2, py2);
closegraph();
getchar();
Devuelve 0; p>
}