Displaying Source Code(s)
|
|
Graphic simulation of the n_Queen problem using Backtracking.
--------------------------------------------------------------------------------
Description : This C code will solve the n-Queen problem using
the
backtracking approach.The object of this problem is to place n
Queens in
an nXn chess-board, such that none of them can threaten each
othe in one
move.It graphically shows the movement of queens, as the
algorithm runs.It
halts
momentarily whenever a solution is found, for the user to view
it. It
resumes to find other solutions on hitting a key at this
juncture.When the
queen of the 1st row reaches the last column, and since there is
no row
behind it to backtrack to, the program exits.The user can exit
the program
by hitting any key,during the normal running of the program.
Parameters :None.The user will be asked to enter the size of the
chess-board(eg. Enter 8 if you want to solve for an 8X8
chess-board).
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<dos.h>
int
diag45[12],sol[12],n,chess[12][12],r1,c1,num=0,i,x1,x2,y2,y1;
int num1,num2,m=0,x3;
void main()
{
int gd=DETECT,gm,x,y;
void queens(int,int);
clrscr();
printf("Enter the size of the chess board
(12 is the limit) ");
scanf("%d",&n);
initgraph(&gd,&gm,"c:\tc\bgi");
x=getmaxx();
y=getmaxy();
setcolor(WHITE);
x1=y1=0;
x2=x/n;
y2=y/n;
if(x2>=10)
{
if(x2>y2)
x2=y2;
else
y2=x2;
for(i=0;i<=n;i++)
{
delay(250);
line(x1,y1,x1,y);
if(i==1)
num1=x1/2;
x1=x1+x2;
//y1=y1+y2;
//x2=x2+x/n;
//y2=y2+y/n;
}
x1=x1-x2;
x3=x1;
for(i=0;i<=n;i++)
{
delay(250);
line(x1,y1,0,y1);
//x1=x1+x2;
if(i==1)
num2=y1/2;
y1=y1+y2;
//x2=x2+x/n;
//y2=y2+y/n;
}
x1=(x/n)/2;
y1=(y/n)/2;
} /* if(x2>10)*/
else
{
x2=y2=10;
for(i=0;i<=n;i++)
{
delay(250);
line(x1,y1,x2,y2);
x1=x1+10;
}
for(i=0;i<=n;i++)
{
delay(250);
line(x1,y1,0,y1);
y1=y1+10;
}
x1=5;
y1=5;
}
delay(250);
for(i=0;i<n;i++)
sol[i]=32767;
for(i=0;i<n;i++)
{for(int j=0;j<n;j++)
{chess[i][j]=j;
}}
for(int j=0;j<n;j++)
diag45[j]=sol[j]=32767;
//sol[1]=1;
//int c1=0;
//while(c1!=7)
//{
num1=x1;
queens(0,c1);
//c1++;
//}
setcolor(WHITE);
outtextxy(x3,y1,"All solutions are over ");
printf("
Total number of solutions is %d ",num);
getch();
}
void queens(int r,int c)
{
delay(10);
int d45,d135,atck=0;
if(r>(n-1)||c>(n-1))
printf("Nonsensical condition reached ");
if(m==1)
{
setcolor(BLACK);
setfillstyle(1,BLACK);
fillellipse(x1+((c-1)*x2),y1+(r*y2),7,7);
}
m=0;
setcolor(WHITE);
setfillstyle(1,WHITE);
fillellipse(x1+((c)*x2),y1+(r*y2),6,6);
delay(350);
//printf("r is %d ; c is %d
",r,c);
//getch();
/*delay(100);
printf("r is %d ; c is %d
",r,c);*/
d45=r-c;
for(i=0;i<r;i++)
{
r1=abs(r-i);
c1=abs(c-sol[i]);
if((chess[r][c]!=sol[i])&&(d45!=diag45[i])&&(r1!=c1))//This
condition
continue; //checks for an
else //attack
{
atck=1;
break;
}}
//If the queen is safe :-
if(atck!=1)
{
//setcolor(WHITE);
//pieslice(x1+(c*num2*2),y1+(r*num1*2),0,360,4);
sol[r]=c;
diag45[r]=r-c;
if(r==(n-1))
{
//printf("
A possible solution is : ");
//for(i=0;i<n;i++)
//printf("%d ",sol[i]);
//printf("<BR>);
num++;
getch();
if(c==(n-1))
{
//sol[r-1]=sol[r-1]+1;
setcolor(BLACK);
setfillstyle(1,BLACK);
fillellipse(x1+((n-1)*x2),y1+((n-1)*y2),7,7);
m=1;
//queens(r-1,sol[r-1]);
}
else
{
m=1;
queens(r,c+1);
}}
//*********//
else
{
/*for(i=0;i<r;i++)
printf("%d ",sol[i]);*/
sol[r+1]=0;
queens(r+1,0);
if(c!=(n-1))
queens(r,c+1);
else
{
setcolor(BLACK);
setfillstyle(1,BLACK);
fillellipse(x1+((c)*x2),y1+(r*y2),6,6);
printf("");
}}}
//If an attack is taking place :-
else
{
setfillstyle(1,BLACK);
setcolor(BLACK);
fillellipse(x1+(c*x2),y1+(r*y2),6,6);
if(r!=0)
{
if(c!=(n-1))
queens(r,c+1);
else
{
m=1;
setbkcolor(RED);
delay(100);
setbkcolor(BLACK);
printf("");
}}
else
{
if(c!=(n-1))
printf("");
// else
// printf("All solutions are over ! ");
}
}}
ForwardSourceID:NT0000740A
----- Forwarded by Amit M/BLR/TCS on 09/30/2004 09:52 AM -----
<newcode@sourcecodesworld.com>
09/28/2004 06:00 PM
Please respond to
<rajamukesh@gmail.com>
To
<amit@vyomworld.com>
cc
<amit.m@tcs.com>
Subject
*** SourceCode: New Code Added ***
(Add this code in the Language with following Id)
Language Id:1
ScriptName: program to implement who command
Content Type:1
Type :37
New Category:
Author :raja mukesh
Author Email:rajamukesh@gmail.com
Description:program to implementing who command using system
calls
Parameters :
Code :
#include<stdio.h>
#include<sys/utsname.h>
#include<utmp.h>
int main(void)
{
struct utmp *n;
char *a;
int i;
setutent();
n=getutent();
while(n!=NULL)
{
if(n->ut_type==7)
{
printf("%-9s",n->ut_user);
printf("%-12s",n->ut_line);
a=ctime(&n->ut_time);
printf(" ");
for(i=4;i<16;i++)
printf("%c",a[i]);
printf(" (");
printf("%s",n->ut_host);
printf(")<BR>);
}
n=getutent();
}
}
ForwardSourceID:NT0000741E
----- Forwarded by Amit M/BLR/TCS on 09/30/2004 09:52 AM -----
<newcode@sourcecodesworld.com>
09/29/2004 05:41 AM
Please respond to
<vivek_patel9@rediffmail.com>
To
<amit@vyomworld.com>
cc
<amit.m@tcs.com>
Subject
*** SourceCode: New Code Added ***
(Add this code in the Language with following Id)
Language Id:2
ScriptName: Inventory Management System
Content Type:1
Type :3
New Category:
Author :Vivek Patel
Author Email:vivek_patel9@rediffmail.com
Description:This software is designed to manage your inventory
system,
with a facility of adding, modifying, deleting, viewing,
searching, and
analyzing a item stored in an inventory. This all functionality
is very
well comprised using Graphics Outlet for user to go on with
it!!!
Parameters :
Code :
/**************************************************************/
/****************INVENTORY MANAGEMENT SYSTEM*******************/
/**************************************************************/
/**************************************************************/
/*Programmed by : Vivek Patel**********************************/
/*For Bugs Free feel to contact********************************/
/*Website : www.vivekpatel.cjb.net*****************************/
/*Email : vivek_patel9@rediffmail.com**************************/
/**************************************************************/
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<fstream.h>
#include<graphics.h>
#include<dos.h>
#include<string.h>
#include<stdio.h>
#include <time.h>
fstream inoutfile;
//Menu Global Item
#define pixTOrc(x) (8*(x-1)) //convert pixel into row and col
format
#define INC 5 //Increment Distance Between Menu Items
#define ROW 15 //Row Value for Menu Item
#define COL 8 //Column Value for Menu Item
// To display the Inventory Main menu options
typedef char option[15];
option mainMenu[]= {
"New Record",
"Display",
"Search",
"Updation",
"Deletion",
"Analysis",
"Exit"
};
/*-------------------Inventory Class--------------------*/
class Inventory{
char itemNo[2],itemName[20];
int qty;
double price,amt;
public:
char *getno(){return itemNo;}
char *getitem(){ return itemName;}
double getamt(){return amt;}
void getdata();
void showdata(int,int);
void showspecific();
void alterspecific(char *,char *);
};
void Inventory :: getdata(){
gotoxy(30,12);
cout<<"Enter Item Number : ? ";
cin>>itemNo;
gotoxy(30,14);
cout<<"Enter Item Name : ? ";
cin>>itemName;
gotoxy(30,16);
cout<<"Enter Quantity : ? ";
cin>>qty;
gotoxy(30,18);
cout<<"Enter Price : ? ";
cin>>price;
amt = price * qty;
}
void Inventory :: showdata(int x,int y){
gotoxy(x,y);
cout.setf(ios::left,ios::adjustfield);
cout<<setw(3)<<itemNo;
cout.setf(ios::left,ios::adjustfield);
cout<<setw(13)<<itemName;
cout<<setw(4)<<qty;
cout.setf(ios::right,ios::adjustfield);
cout.setf(ios::showpoint);
cout.setf(ios::fixed,ios::floatfield);
cout<<setprecision(2)<<setw(8)<<price;
cout.setf(ios::right,ios::adjustfield);
cout.setf(ios::showpoint);
cout.setf(ios::fixed,ios::floatfield);
cout<<setprecision(2)<<setw(15)<<amt;
}
void Inventory :: showspecific(){
gotoxy(30,13);
cout<<"--Search Item Found--";
gotoxy(30,15);
cout<<"Item No : ";
cout.setf(ios::left,ios::adjustfield);
cout<<itemNo;
gotoxy(30,17);
cout<<"Item Name : ";
cout.setf(ios::left,ios::adjustfield);
cout<<itemName;
gotoxy(30,19);
cout<<"Quantity : ";
cout<<qty;
cout.setf(ios::right,ios::adjustfield);
cout.setf(ios::showpoint);
cout.setf(ios::fixed,ios::floatfield);
gotoxy(30,21);
cout<<"Price : ";
cout<<setprecision(2)<<price;
gotoxy(30,23);
cout<<"Amount : ";
cout.setf(ios::right,ios::adjustfield);
cout.setf(ios::showpoint);
cout.setf(ios::fixed,ios::floatfield);
cout<<setprecision(2)<<amt;
}
void Inventory :: alterspecific(char itmno[2],char itmname[20]){
strcpy(itemNo,itmno);
strcpy(itemName,itmname);
gotoxy(30,16);
cout<<"Enter Quantity : ? ";
cin>>qty;
gotoxy(30,18);
cout<<"Enter Price : ? ";
cin>>price;
amt = price * qty;
}
/*---------------Inventory Codes End------------------*/
/*--------------Menu and all other functions
Code--------------*/
//Displays Graphic text in delaying fashion
void displayMe(int x,int y,const char *ch,int delayTime){
char d[2];
int len=strlen(ch);
for(int i=0;i<=len;i++)
{
d[0]=ch[i];
d[1]='
|
|
|