Question 1
Code
#include <graphics.h>
#include <conio.h>
void main() {
 int gd = DETECT, gm; // Corrected variable declaration
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Ensure the path is correct for your setup
 setbkcolor(GREEN);
 printf("\t\t\t\n\nLINE");
 line(50, 40, 190, 40);
 printf("\t\t\n\n\n\nRECTANGLE");
 rectangle(125, 115, 215, 165);
 printf("\t\t\t\n\n\n\n\n\n\nARC");
 arc(120, 200, 180, 0, 30);
 printf("\t\n\n\n\nCIRCLE");
 circle(120, 270, 30);
 printf("\t\n\n\n\nECLIPSE");
 ellipse(120, 350, 0, 360, 30, 20);
 getch();
 closegraph(); // Close the graphics mode
}
Question 2
Cdoe
#include <graphics.h>
#include <conio.h>
void main() {
 int gd = DETECT, gm, i, x, y; // Corrected variable declaration
 // initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Ensure the path is correct for your setup
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Ensure the path is correct for your setup
 x = getmaxx() / 3; // Calculate x-coordinate
 y = getmaxy() / 3; // Calculate y-coordinate (corrected from getmaxx to getmaxy)
 setbkcolor(WHITE); // Set background color to white
 setcolor(BLUE); // Set drawing color to blue
 for (i = 1; i <= 8; i++) {
 setfillstyle(i, i); // Set fill pattern and color
 delay(20); // Add a small delay for animation effect
 circle(x, y, i * 20); // Draw a circle with increasing radius
 floodfill(x - 2 + i * 20, y, BLUE); // Fill the circle with color
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
}
Question 3
Code
// #include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
#include <time.h> // For srand() and rand()
void main() {
 int gd = DETECT, gm, i = 0, x, xx, y, yy, r;
 // Initialize the graphics system
 // initgraph(&gd, &gm, "C:\\TC\\BGI"); // Ensure the path is correct for your setup
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Ensure the path is correct for your setup
 x = getmaxx(); // Get maximum x-coordinate of the screen
 y = getmaxy(); // Get maximum y-coordinate of the screen
 srand(time(0)); // Seed the random number generator
 while (!kbhit()) { // Continue until a key is pressed
 i++;
 xx = rand() % x; // Random x-coordinate
 yy = rand() % y; // Random y-coordinate
 r = rand() % 30; // Random radius
 circle(xx, yy, r); // Draw a circle at random position with random radius
 setfillstyle(rand() % 12, rand() % 16); // Random fill style and color
 floodfill(xx, yy, getmaxcolor()); // Fill the circle with random color
 delay(200); // Delay for animation effect
 }
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
}
Question 4
Code
#include <graphics.h>
#include <conio.h>
int main() {
 int gd = DETECT, gm, i, maxx, cy; // Corrected variable declaration
 // initgraph(&gd, &gm, "C:\\TC\\BGI"); // Ensure the path is correct for your setup
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Ensure the path is correct for your setup
 setbkcolor(WHITE); // Set background color to white
 setcolor(RED); // Set drawing color to red
 maxx = getmaxx(); // Get maximum x-coordinate of the screen
 cy = getmaxy() / 2; // Get the middle y-coordinate of the screen
 for (i = 0; i < maxx - 140; i++) {
 cleardevice(); // Clear the screen for smooth animation
 // Draw the car body
 line(0 + i, cy - 20, 0 + i, cy + 15);
 line(0 + i, cy - 20, 25 + i, cy - 20);
 line(25 + i, cy - 20, 40 + i, cy - 70);
 line(40 + i, cy - 70, 100 + i, cy - 70);
 line(100 + i, cy - 70, 115 + i, cy - 20);
 line(115 + i, cy - 20, 140 + i, cy - 20);
 line(0 + i, cy + 15, 18 + i, cy + 15);
 circle(28 + i, cy + 15, 10); // Left wheel
 line(38 + i, cy + 15, 102 + i, cy + 15);
 circle(112 + i, cy + 15, 10); // Right wheel
 line(122 + i, cy + 15, 140 + i, cy + 15);
 line(140 + i, cy + 15, 140 + i, cy - 20);
 // Draw the car window
 rectangle(50 + i, cy - 62, 90 + i, cy - 30);
 // Fill the car body with blue color
 setfillstyle(1, BLUE);
 floodfill(5 + i, cy - 15, RED);
 // Fill the car window with light blue color
 setfillstyle(1, LIGHTBLUE);
 floodfill(52 + i, cy - 60, RED);
 delay(20); // Adjust delay for smoother animation
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
 return 0;
}
Question 5
Code
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
void main() {
 int gd = DETECT, gm;
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Updated path for Turbo C++ 3.0
 setbkcolor(9); // Set background color to light blue
 setcolor(WHITE); // Set drawing color to white
 // Draw the horizontal line
 line(100, 100, 370, 100);
 // Draw the first vertical line
 line(120, 100, 120, 170);
 // Draw the first arc
 arc(143, 100, 0, 180, 23);
 // Draw the second vertical line
 line(165, 100, 165, 155);
 // Draw the second arc
 arc(150, 155, 100, 0, 15);
 // Draw the third vertical line
 line(180, 100, 180, 170);
 // Draw the first circle and line
 circle(210, 140, 10);
 line(210, 130, 250, 130);
 // Draw the second circle and line
 circle(280, 140, 10);
 line(280, 130, 330, 130);
 // Draw the fourth vertical line
 line(330, 100, 330, 170);
 // Draw the fifth vertical line
 line(345, 100, 345, 170);
 // Draw the ellipse
 ellipse(337, 100, 0, 180, 9, 18);
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
}
Question 6
Ccdoe
#include <graphics.h>
#include <stdio.h>
#include <conio.h> // Added for getch()
void main() {
 int gd = DETECT, gm, x, y, r = 40; // Corrected variable declaration
 char ch;
 initgraph(&gd, &gm, "C:\\TURBOC3\\BGI"); // Corrected path with backslashes
 setbkcolor(3); // Set background color to cyan
 x = getmaxx() / 2; // Initialize x to the center of the screen
 y = getmaxy() / 2; // Initialize y to the center of the screen
 setfillstyle(1, RED); // Set fill style to solid and color to red
 circle(x, y, r); // Draw a circle at the center
 floodfill(x, y, getmaxcolor()); // Fill the circle with red
 while ((ch = getch()) != 13) { // Continue until the Enter key (ASCII 13) is pressed
 switch (ch) {
 case 75: // Left arrow key
 if (x >= r + 10) { // Check if the circle can move left
 cleardevice(); // Clear the screen
 circle(x -= 10, y, r); // Move the circle left by 10 pixels
 floodfill(x, y, getmaxcolor()); // Fill the circle
 break;
 case 72: // Up arrow key
 if (y >= r + 10) { // Check if the circle can move up
 cleardevice(); // Clear the screen
 circle(x, y -= 10, r); // Move the circle up by 10 pixels
 floodfill(x, y, getmaxcolor()); // Fill the circle
 break;
 case 77: // Right arrow key
 if (x <= (getmaxx() - r - 10)) { // Check if the circle can move right
 cleardevice(); // Clear the screen
 circle(x += 10, y, r); // Move the circle right by 10 pixels
 floodfill(x, y, getmaxcolor()); // Fill the circle
 break;
 case 80: // Down arrow key
 if (y <= (getmaxy() - r - 10)) { // Check if the circle can move down
 cleardevice(); // Clear the screen
 circle(x, y += 10, r); // Move the circle down by 10 pixels
 floodfill(x, y, getmaxcolor()); // Fill the circle
 break;
 closegraph(); // Close the graphics mode
}
Question 7
Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
struct time t;
void display(int,int,int);
void main()
 int i=0,gd=DETECT,gm,hr,min,sec;
 clrscr();
 initgraph(&gd,&gm,"c:\\turboc3\\bgi");
 setcolor(GREEN);
 settextstyle(4,0,7);
 while(!kbhit())
 gettime(&t);
 hr=t.ti_hour;
 min=t.ti_min;
 sec=t.ti_sec;
 i++;
 display(100,100,hr);
 display(200,100,min);
 display(300,100,sec);
 sound(400);
 delay(30);
 nosound();
 delay(930);
 cleardevice();
 getch();
void display(int x,int y,int num)
 char str[3];
 itoa(num,str,10);
 settextstyle(4,0,7);
 outtextxy(180,100,":");
 outtextxy(280,100,":");
 outtextxy(x,y,str);
 rectangle(90,90,380,200);
 rectangle(70,70,400,220);
 outtextxy(90,250,"Digital Clock");
}
Question 8
Code
#include <stdio.h>
#include <graphics.h>
#include <conio.h> // Added for kbhit() and getch()
#define HEIGHT getmaxy()
#define WIDTH getmaxx()
#define GROUND 450
#define MAXHEIGHT 420
void main() {
 int x, y = 0, t = MAXHEIGHT, c = 1;
 int gd = DETECT, gm;
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Corrected path
 for (x = 40; x <= getmaxx(); x += 2) {
 // Draw Ground
 setcolor(WHITE);
 rectangle(0, MAXHEIGHT, getmaxx(), MAXHEIGHT + 5);
 floodfill(5, MAXHEIGHT + 3, WHITE);
 // Draw Ball
 setcolor(RED);
 setfillstyle(SOLID_FILL, RED);
 pieslice(x, y, 0, 360, 20);
 delay(50); // Adjust delay for smoother animation
 // Ball movement logic
 if (y > MAXHEIGHT - 20) {
 c = 0;
 t -= 40;
 if (y <= (MAXHEIGHT - t)) {
 c = 1;
 if (t >= 40) {
 y += (c ? 15 : -15);
 cleardevice(); // Clear the screen for the next frame
 // Exit upon keypress
 if (kbhit()) {
 break;
 closegraph(); // Close the graphics mode
}
Question 9
Code
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
int main() {
 int gd = DETECT, gm;
 int x, y, flag = 0;
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Updated path for Turbo C++ 3.0
 x = getmaxx() / 2; // Initialize x to the center of the screen
 y = 30; // Initialize y to the top of the screen
 while (!kbhit()) { // Continue until a key is pressed
 // Toggle the flag when the ball reaches the top or bottom
 if (y >= getmaxy() - 30 || y <= 30) {
 flag = !flag;
 // Draw the red ball
 setcolor(RED);
 setfillstyle(SOLID_FILL, RED);
 circle(x, y, 30); // Draw the circle
 floodfill(x, y, RED); // Fill the circle with red
 delay(50); // Delay for smooth animation
 cleardevice(); // Clear the screen for the next frame
 // Move the ball up or down based on the flag
 if (flag) {
 y += 5; // Move the ball down
 } else {
 y -= 5; // Move the ball up
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
 return 0;
}
Question 10
Code
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>
int x1, y1, x2, y2, x3, y3;
void draw();
void rotate();
int main(void) {
 int gd = DETECT, gm;
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Updated path for Turbo C++ 3.0
 printf("Enter first co-ordinate value for triangle: ");
 scanf("%d%d", &x1, &y1);
 printf("Enter second co-ordinate values for triangle: ");
 scanf("%d%d", &x2, &y2);
 printf("Enter third co-ordinate values for triangle: ");
 scanf("%d%d", &x3, &y3);
 draw(); // Draw the original triangle
 getch(); // Wait for a key press
 rotate(); // Rotate the triangle
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
 return 0;
}
void draw() {
 // Draw the triangle using the given coordinates
 line(x1, y1, x2, y2);
 line(x2, y2, x3, y3);
 line(x3, y3, x1, y1);
void rotate() {
 int a1, a2, a3, b1, b2, b3;
 float angle;
 // Calculate the centroid (pivot point) of the triangle
 int a = (x1 + x2 + x3) / 3;
 int b = (y1 + y2 + y3) / 3;
 printf("Enter the rotation angle in degrees: ");
 scanf("%f", &angle);
 cleardevice(); // Clear the screen
 // Convert the angle from degrees to radians
 angle = (angle * 3.14) / 180;
 // Calculate the new coordinates after rotation
 a1 = a + (x1 - a) * cos(angle) - (y1 - b) * sin(angle);
 b1 = b + (x1 - a) * sin(angle) + (y1 - b) * cos(angle);
 a2 = a + (x2 - a) * cos(angle) - (y2 - b) * sin(angle);
 b2 = b + (x2 - a) * sin(angle) + (y2 - b) * cos(angle);
 a3 = a + (x3 - a) * cos(angle) - (y3 - b) * sin(angle);
 b3 = b + (x3 - a) * sin(angle) + (y3 - b) * cos(angle);
 printf("ROTATION");
 printf("\nChanged coordinates:\n");
 printf("%d %d\n%d %d\n%d %d", a1, b1, a2, b2, a3, b3);
 // Draw the rotated triangle
 line(a1, b1, a2, b2);
 line(a2, b2, a3, b3);
 line(a3, b3, a1, b1);
}
Question 11
Code
#include<stdio.h>
#include<graphics.h>
void drawcircle(int x0, int y0, int radius)
 int x = radius;
 int y = 0;
 int err = 0;
 while (x >= y)
 putpixel(x0 + x, y0 + y, 7);
 putpixel(x0 + y, y0 + x, 7);
 putpixel(x0 - y, y0 + x, 7);
 putpixel(x0 - x, y0 + y, 7);
 putpixel(x0 - x, y0 - y, 7);
 putpixel(x0 - y, y0 - x, 7);
 putpixel(x0 + y, y0 - x, 7);
 putpixel(x0 + x, y0 - y, 7);
 if (err <= 0)
 y += 1;
 err += 2*y + 1;
 if (err > 0)
 x -= 1;
 err -= 2*x + 1;
 }
void main()
 int gdriver=DETECT, gmode, error, x, y, r;
 initgraph(&gdriver, &gmode, "c:\\turboc3\\bgi");
 printf("Enter radius of circle: ");
 scanf("%d", &r);
 printf("Enter co-ordinates of center(x and y): ");
 scanf("%d%d", &x, &y);
 drawcircle(x, y, r);
 getch();
}
Question 12
Code
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h> // For getch()
#define pi 3.14
// Function prototypes
void drawSine(float amplitude);
void drawCosine(float amplitude);
void drawTangent(float amplitude);
void initializeGraphics();
int main() {
 int choice;
 float amplitude;
 // Initialize graphics mode
 initializeGraphics();
 // Input amplitude
 printf("Enter the maximum value for Y (amplitude): ");
 scanf("%f", &litude);
 // Menu
 printf("\nMENU:\n");
 printf("1. SINE CURVE\n");
 printf("2. COSINE CURVE\n");
 printf("3. TANGENT CURVE\n");
 printf("4. EXIT\n");
 printf("Enter your choice: ");
 scanf("%d", &choice);
 switch (choice) {
 case 1:
 drawSine(amplitude);
 break;
 case 2:
 drawCosine(amplitude);
 break;
 case 3:
 drawTangent(amplitude);
 break;
 case 4:
 exit(0);
 default:
 printf("Invalid choice!\n");
 break;
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
 return 0;
void drawSine(float amplitude) {
 int xm, ym;
 float x, y;
 cleardevice();
 xm = getmaxx() / 2;
 ym = getmaxy() / 2;
 // Draw axes
 line(xm, 0, xm, 2 * ym); // Y-axis
 line(0, ym, 2 * xm, ym); // X-axis
 outtextxy(xm + 5, 10, "Y-AXIS");
 outtextxy(2 * xm - 50, ym + 5, "X-AXIS");
 // Draw sine curve
 for (x = -300; x <= 300; x += 0.5) {
 y = amplitude * sin((pi * x) / 180);
 putpixel(x + xm, -y + ym, RED);
void drawCosine(float amplitude) {
 int xm, ym;
 float x, y;
 cleardevice();
 xm = getmaxx() / 2;
 ym = getmaxy() / 2;
 // Draw axes
 line(xm, 0, xm, 2 * ym); // Y-axis
 line(0, ym, 2 * xm, ym); // X-axis
 outtextxy(xm + 5, 10, "Y-AXIS");
 outtextxy(2 * xm - 50, ym + 5, "X-AXIS");
 // Draw cosine curve
 for (x = -300; x <= 300; x += 0.5) {
 y = amplitude * cos((pi * x) / 180);
 putpixel(x + xm, -y + ym, RED);
void drawTangent(float amplitude) {
 int xm, ym;
 float x, y;
 cleardevice();
 xm = getmaxx() / 2;
 ym = getmaxy() / 2;
 // Draw axes
 line(xm, 0, xm, 2 * ym); // Y-axis
 line(0, ym, 2 * xm, ym); // X-axis
 outtextxy(xm + 5, 10, "Y-AXIS");
 outtextxy(2 * xm - 50, ym + 5, "X-AXIS");
 // Draw tangent curve
 for (x = -300; x <= 300; x += 0.5) {
 y = amplitude * tan((pi * x) / 180);
 putpixel(x + xm, -y + ym, RED);
void initializeGraphics() {
 int gd = DETECT, gm;
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Updated path for Turbo C++ 3.0
 int errorcode = graphresult();
 if (errorcode != grOk) {
 printf("Graphics error: %s\n", grapherrormsg(errorcode));
 printf("Press any key to halt: ");
 getch();
 exit(1);
}
Question 13
Cdoe
#include <graphics.h>
#include <conio.h>
int main() {
 int gd = DETECT, gm;
 int left = 100, top = 100, right = 200, bottom = 200;
 int x = 300, y = 150, radius = 50;
 // Initialize graphics mode
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Updated path for Turbo C++ 3.0
 // Draw a rectangle
 rectangle(left, top, right, bottom);
 // Draw a circle
 circle(x, y, radius);
 // Draw a bar (filled rectangle)
 bar(left + 300, top, right + 300, bottom);
 // Draw a horizontal line
 line(left - 10, top + 150, left + 410, top + 150);
 // Draw an ellipse
 ellipse(x, y + 200, 0, 360, 100, 50);
 // Display text
 outtextxy(left + 100, top + 325, "My first C graphics program");
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
 return 0;
}
Question 14
Code
#include <graphics.h>
#include <conio.h>
int main()
 int gd = DETECT, gm;
 initgraph(&gd, &gm, "C:\\TC\\BGI");
 setcolor(YELLOW);
 rectangle(0,30,639,450);
 settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
 setcolor(WHITE);
 outtextxy(275,0,"Bar Chart");
 setlinestyle(SOLID_LINE,0,2);
 line(100,420,100,60);
 line(100,420,600,420);
 line(90,70,100,60);
 line(110,70,100,60);
 line(590,410,600,420);
 line(590,430,600,420);
 outtextxy(95,35,"Y");
 outtextxy(610,405,"X");
 outtextxy(85,415,"O");
 setfillstyle(LINE_FILL,BLUE);
 bar(150,100,200,419);
 setfillstyle(XHATCH_FILL,RED);
 bar(225,150,275,419);
 setfillstyle(WIDE_DOT_FILL,GREEN);
 bar(300,200,350,419);
 setfillstyle(INTERLEAVE_FILL,MAGENTA);
 bar(375,125,425,419);
 setfillstyle(HATCH_FILL,BROWN);
 bar(450,175,500,419);
 getch();
 return 0;
}
Question 15
Code
#include <graphics.h>
#include <math.h>
#include <stdio.h>
#include <conio.h> // For getch()
// Function for finding absolute value
int abs(int n) {
 return ((n > 0) ? n : (n * (-1)));
// Custom round function (since round() may not be available in Turbo C++)
int round(float num) {
 return (int)(num + 0.5);
// DDA Function for line generation
void DDA(int X0, int Y0, int X1, int Y1) {
 // Calculate dx & dy
 int dx = X1 - X0;
 int dy = Y1 - Y0;
 // Calculate steps required for generating pixels
 int steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy);
 // Calculate increment in x & y for each step
 float Xinc = dx / (float)steps;
 float Yinc = dy / (float)steps;
 // Put pixel for each step
 float X = X0;
 float Y = Y0;
 int i; // Declare loop variable at the beginning of the block
 for (i = 0; i <= steps; i++) {
 putpixel(round(X), round(Y), RED); // Put pixel at (X, Y)
 X += Xinc; // Increment in x at each step
 Y += Yinc; // Increment in y at each step
 delay(50); // Delay for visualization of line generation
// Driver program
int main() {
 int gd = DETECT, gm;
 int X0, Y0, X1, Y1; // Declare all variables at the beginning of the block
 // Initialize graphics function
 initgraph(&gd, &gm, "C:\\Turboc3\\BGI"); // Updated path for Turbo C++ 3.0
 // Coordinates of the line
 X0 = 100;
 Y0 = 100;
 X1 = 400;
 Y1 = 300;
 // Function call to draw the line using DDA algorithm
 DDA(X0, Y0, X1, Y1);
 getch(); // Wait for a key press
 closegraph(); // Close the graphics mode
 return 0;
}
Question 16
Code
#include<stdio.h>
#include<graphics.h>
void drawline(int x0, int y0, int x1, int y1)
 int dx, dy, p, x, y;
 dx=x1-x0;
 dy=y1-y0;
 x=x0;
 y=y0;
 p=2*dy-dx;
 while(x<x1)
 if(p>=0)
 putpixel(x,y,7);
 y=y+1;
 p=p+2*dy-2*dx;
 else
 putpixel(x,y,7);
 p=p+2*dy;}
 x=x+1;
int main()
 int gdriver=DETECT, gmode, error, x0, y0, x1, y1;
 initgraph(&gdriver, &gmode, "c:\\turboc3\\bgi");
 printf("Enter co-ordinates of first point: ");
 scanf("%d%d", &x0, &y0);
 printf("Enter co-ordinates of second point: ");
 scanf("%d%d", &x1, &y1);
 drawline(x0, y0, x1, y1);
 return 0;
}
Question 17
Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
 int xc=340,yc=280,y,r,x;
 float theta;
 int gd=DETECT,gm;
 initgraph(&gd,&gm,"C:\\turboc3\\BGI");
 //printf("Enter the center of circle:");
 //scanf("%d%d",&xc,&yc);
 printf("Enter radius of circle:");
 scanf("%d",&r);
 for(theta=0;theta<=2*3.14;theta+=0.01)
 x=(int)(xc+(r*cos(theta)));
 y=(int)(yc+(r*sin(theta)));
 putpixel(x,y,WHITE);
 getch();
 closegraph();
}
Question 18
Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
 int gd=DETECT,gm;
 int r,x,y,p,xc=320,yc=240;
 initgraph(&gd,&gm,"C:\\TurboC3\\BGI");
 cleardevice();
 printf("Enter the radius");
 scanf("%d",&r);
 x=0;
 y=r;
 putpixel(xc+x,yc-y,1);
 p=3-(2*r);
 for(x=0;x<=y;x++)
 if(p<0)
 y=y;
 p=(p+(4*x)+6);
 else
 y=y-1;
 p=p+((4*(x-y)+10));
 putpixel(xc+x,yc-y,1);
 putpixel(xc-x,yc-y,2);
 putpixel(xc+x,yc+y,3);
 putpixel(xc-x,yc+y,4);
 putpixel(xc+y,yc-x,5);
 putpixel(xc-y,yc-x,6);
 putpixel(xc+y,yc+x,7);
 putpixel(xc-y,yc+x,8);
 getch();
 closegraph();
}
Question 19
Code
//Write a program to implement Cohen Sutherland line clipping algorithm.
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
const int t=1,b=2,r=2,l=8;
float xmin,ymin,xmax,ymax;
int calcode(float x,float y)
 int code=0;
 if(y>ymax)
 code |=t;
 else if(y<ymin)
 code|=b;
 else if(x>xmax)
 code|=r;
 else if(x<xmin)
 code|=l;
 return(code);
void lineclip(float x1,float y1,float x2,float y2)
 unsigned int code1,code2,codeout;
 int accept=0,done=0;
 code1=calcode(x1,y1);
 code2=calcode(x2,y2);
 do
 if(!(code1|code2))
{
 accept=1;
 done=1;
else if(code1 & code2)
 done=1;
else
 float x,y;
 codeout=code1?code1:code2;
 if(codeout& t)
 x=x1+(x2-x1)*(ymax-y1)/(y2-y1);
 y=ymax;
 else if(codeout& b)
 x=x1+(x2-x1)*(ymin-y1)/(y2-y1);
 y=ymin;
 else if(codeout& r)
 y=y1+(y2-y1)*(xmax-x1)/(x2-x1);
 x=xmax;
 else
 y=y1+(y2-y1)*(xmin-x1)/(x2-x1);
 x=xmin;
 if(codeout==code1)
 {
 x1=x;
 y1=y;
 code1=calcode(x1,y1);
 else
 x2=x;
 y2=y;
 code2=calcode(x2,y2);
 while(done==0);
 if(accept)
 line(x1,y1,x2,y2);
 rectangle(xmin,ymin,xmax,ymax);
main()
 float x1,y1,x2,y2;
 int gd=DETECT,gm;
 clrscr();
 initgraph(&gd,&gm,"C:\\TurboC3\\BGI");
 printf("Enter the co-ordinates of line ::::\n\t x1");
 scanf("%f",&x1);
 printf("\n\t y1:");
 scanf("%f",&y1);
 printf("\n\t x2:");
 scanf("%f",&x2);
 printf("\n\t y2:");
 scanf("%f",&y2);
 printf("Enter the co-ordinates of window :::\n");
 printf("\n\txmin");
 scanf("%f",&xmin);
 printf("\n\tymin");
 scanf("%f",&ymin);
 printf("\n\txmax");
 scanf("%f",&xmax);
 printf("\n\tymax");
 scanf("%f",&ymax);
 clrscr();
 line(x1,y1,x2,y2);
 rectangle(xmin,ymin,xmax,ymax);
 getch();
 clrscr();
 lineclip(x1,y1,x2,y2);
 getch();
 closegraph();
 return 0;
}
Question 20
Code
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<math.h>
int main()
 int gd = DETECT,gm,a,b,i,r,x,y;
 initgraph(&gd, &gm,"C:\\Turboc3\\BGI");
 //draw the bottom rectangle
 setfillstyle(SOLID_FILL,1);
 rectangle(10,320,200,340);
 floodfill(11,321,15);
 rectangle(30,300,175,320);
 floodfill(31,301,15);
 rectangle(50,280,155,300);
 floodfill(51,281,15);
 //draw the pole
 setfillstyle(SOLID_FILL,3);
 rectangle(100,38,110,280);
 floodfill(101,39,15);
 //draw the top rectangle
 setfillstyle(SOLID_FILL,RED);
 rectangle(110,40,220,58);
 floodfill(111,43,15);
 setfillstyle(SOLID_FILL,15);
 rectangle(110,58,220,78);
 floodfill(111,59,15);
 setfillstyle(SOLID_FILL,GREEN);
 rectangle(110,78,220,98);
 floodfill(111,79,15);
 //Ashok chakra
 a=160;
 b=68;
 r=13;
 setcolor(BLUE);
 circle(a,b,r);
 for(i=0;i<=360;i=i+25)
 x=r*cos(i*3.14/180);
 y=r*sin(i*3.14/180);
 line(a,b,a+x,b-y);
 getch();
 return 0;
 // closegraph();