Monday, September 26, 2011

Different printf Statement

consider this code :

                                void main()
                                {
                                   int a=10,b=20;
                                   printf("%d...%d");
                                 }
o/p :
             10...20
the values will be printed even its variables are not mentioned. format specifier is necessary for that statement.


    




HOW TO PRINT THIS - printf("hello")

this can be done by the following code :

                                        printf("printf(\"hello\")");

o/p :

printf("hello")

Sunday, July 17, 2011

when will you declare a variable as a pointer variable

first understand the meaning of this declaration below :
                           
                                                 int a=10;
                                           
                                     
                                              
The statement describes the  variable (a) which holds the value 10 in a address in memory.Now the point to be noted is variable (a) contains a value.




But at the same time if the variable wants to hold address as a value like mentioned below

                                             a= address of another variable

then you have to declare this variable as a pointer variable like this
                                            int *a ;

Thursday, June 30, 2011

Snake game in C

The libraries used in this snake game are:
  • graphics.h
  • stdio.h
  • conio.h
  • dos.h
  • time.h
  • stdlib.h
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>


check();
end();
win();
int m[500],n[500],con=8,temp,a,i,j,t,s=500,z;
clock_t start,stop;
void main(void)

{
int gd=DETECT,gm,ch,maxx,maxy,x=13,y=14,p,q,spd=100;

initgraph(&gd,&gm,"D:\\TC\\BGI");


setcolor(WHITE);
settextstyle(3,0,6);
outtextxy(150,2," SNAKE GAME ");
settextstyle(6,0,2);
setcolor(RED);
outtextxy(20,80," Use Arrow Keys To Direct The Snake ");
setcolor(YELLOW);
outtextxy(20,140," Avoid The Head Of Snake Not To Hit Any Part Of Snake");
outtextxy(20,160," Pick The Beats Untill You Win The Game ");
setcolor(BLUE);
outtextxy(20,240," Press 'Esc' Anytime To Exit ");
outtextxy(20,220," Press Any Key To Continue ");

setcolor(GREEN);


outtextxy(400,380,"Made By :");
outtextxy(400,400,"Shubhang");
outtextxy(400,420,"Mohit");
outtextxy(400,440,"Rahul");



ch=getch();
if(ch==27) exit(0);
cleardevice();
maxx=getmaxx();
maxy=getmaxy();
for (z=0;z<3;z++)
{
sound(s);
delay(1000);
nosound();
delay(1000);
s+=500;
}
randomize();

p=random(maxx);
temp=p%13;
p=p-temp;
q=random(maxy);
temp=q%14;
q=q-temp;



start=clock();
a=0,i=0;
while(1)
{

 setcolor(WHITE);
 setfillstyle(SOLID_FILL,con+5);
 circle(p,q,5);
 floodfill(p,q,WHITE);

   if( kbhit() )
   {
     ch=getch(); if(ch==0) ch=getch();
     if(ch==72&& a!=2) a=1;
     if(ch==80&& a!=1) a=2;
     if(ch==75&& a!=4) a=3;
     if(ch==77&& a!=3) a=4;
      }
       else
     {
     if(ch==27
     ) break;
     }

       if(i<20){
     m[i]=x;
     n[i]=y;
     i++;
        }

   if(i>=20)

   {
     for(j=con;j>=0;j--){
      m[1+j]=m[j];
      n[1+j]=n[j];
       }
     m[0]=x;
     n[0]=y;

     setcolor(WHITE);
     setfillstyle(SOLID_FILL,con);
     circle(m[0],n[0],8);
     floodfill(m[0],n[0],WHITE);

     setcolor(WHITE);
     for(j=1;j<con;j++)
     {
    setfillstyle(SOLID_FILL,con+j%3);
     circle(m[j],n[j],5);
     floodfill(m[j],n[j],WHITE);
          }
       delay(spd);

    setcolor(BLACK);
    setfillstyle(SOLID_FILL,BLACK);
     circle(m[0],n[0],8);
     floodfill(m[0],n[0],BLACK);

     setcolor(BLACK);
    setfillstyle(SOLID_FILL,BLACK);
     circle(m[j],n[j],5);
     floodfill(m[j],n[j],BLACK);

     }
     stop=clock();
     t=(stop-start)/CLK_TCK;
     check();

    if(x==p&&y==q)
    {
    con=con+1;
    if(spd>=5)
    spd=spd-5;

    else spd=5;

    if(con>50)
    win();

    p=random(maxx);
    temp=p%13;
    p=p-temp;
    q=random(maxy);
    temp=q%14;
    q=q-temp;
        }

    if(a==1)
    y =  y-14;

    if(y<0)
    { temp=maxy%14;
    y=maxy-temp;
    }

    if(a==2)
    y =  y+14;

    if(y>maxy)
    y=0;

    if(a==3)
    x =  x-13;

    if(x<0)
    {
    temp=maxx%13;
    x=maxx-temp;
    }

    if(a==4)
    x =  x+13;

    if(x>maxx)
    x=0;

    if(a==0)
    {
    y = y+14 ;
    x=x+13;
    }

   }

 }


check()
{
   int a;
   for(a=1;a<con;a++)

if(m[0]==m[a] && n[0]==n[a]) end();
   else continue;
   return 0;
}

end()

{

    int j,i;
   setcolor(WHITE);
   for(i=0;i<5;i++)
   {
   delay(500);
   cleardevice();
   delay(500);
   for(j=0;j<=con;j++)
   {
    setfillstyle(SOLID_FILL,RED);
    circle(m[j],n[j],5);
    floodfill(m[j],n[j],RED);
   }

   }

    settextstyle(3,0,4);
    outtextxy(150,150,"    GAME OVER ");
    getch();
    getch();
    exit(0);
    return 0;
    }

win()
{
int j,i;
setcolor(WHITE);
   for(i=0;i<5;i++)
   {
   for(j=0;j<=con;j++)
   {
     setfillstyle(SOLID_FILL,con);
     circle(m[j],n[j],5);
     floodfill(m[j],n[j],WHITE);
   }

    delay(500);
    cleardevice();
    delay(500);
   }
  settextstyle(3,0,4);
  outtextxy(210,320," YOU WIN ");
  getch();
  exit(0);
  return 0;
}
NOTE : If the game shows any linking error 
then go to options>linkers>libraries and the tick on graphics.This
 method automatically link the graphics. 

Wednesday, June 29, 2011

swapping of two numbers without using temporary variable

swapping of two numbers using temporary variable :

                              int t;
                              t=a;
                              a=b;
                              b=t;
now consider swapping of two numbers without using the temporary variable:
                               a=a+b;
                               b=a-b;
                               a=a-b;

ex : consider a=10 and b=20
     a=10+20=30
     b=30-20=10
     a=30-10=20
now a=20 and b=10 after swapping

Tuesday, June 28, 2011

exit function


 The "exit" function terminates program execution and
returns the status value to the system. 
 
#include <stdlib.h>
exit( status );

The function begins its work by calling all the clean-up functions specified by "atexit" routines, in the reverse order that the functions were specified (so that the most recently specified clean-up function is executed first). These clean-up functions are executed in an environment that makes it look as if "main" has just returned. This means that automatic storage duration objects created by the program may not be accessed.
Next, "exit" flushes all I/O buffers and closes any streams that are currently open. Files created with the "tmpfile" function are removed.
Lastly, control is returned to the system. The system receives the status value indicating the success or failure of the program. The status is encoded in the program switch words in the same way as the UW Tools "exit" function; see "expl b lib exit" for details. In TSS, EXIT_FAILURE also issues a DRL T.ERR indicating an error.
For compatibility with other versions of C, you should only count on the lowest eight bits of "status" being returned to the caller.

exit(0) - exit with success
exit(1)-exit with failure

Use of return statement in a function

The most important thing is to know what happens when a return type function is used . let us taken a simple example
of it .
           function with return type :
            sum()- this is a function call.when the program encounters this statement it automatically goes to the definition part of the function from the main function.the point to be noted in here is before going to the defintion part of a function it stores the function call line address of the main function to the stack. now after executing that function when it encounters the closing "return" statement of the function. the stored address in the stack helps it to come back to the line where it is called from  the main function program.
look down the fig below and follow the steps :