keyword to store value(final)

actually i am using accelerometer and i am getting readings from the sensor.now i am store the constant reading of x and y in a,b in horizontal position of quadcopter.after that i am comparing the readings from sensor with a,b after increasing speed of motors so that ican balance the position but it is not working.please tell
i have only problem in case 5

#include <Servo.h>

Servo m3,m5,m9,m11;
const int groundpin = 14;             // analog input pin 4 -- ground
const int powerpin = 19;              // analog input pin 5 -- voltage
const int xpin = A1;                  // x-axis of the accelerometer
const int ypin = A2;                  // y-axis
const int zpin = A3;
int xin,yin,zin;// z-axis (only on 3-axis models)
#define X_ZERO 332
#define Y_ZERO 324
#define Z_ZERO 396
#define ACCEL_CON 0.93
#define TIME_CON 0.02
#define SEN_CON 0.95
int x=0,y=0,z=0;// create servo object to control a servo

float s1,s3,s5,s9,s11;
int val=0;    // variable to read the value from the analog pin
float val1,val2,val3,val5,val9,val11;
int temp=0,a=0,b=0;
void setup() 
{ 
  pinMode(2,INPUT);  
pinMode(4,INPUT);
  pinMode(6,INPUT);  
pinMode(8,INPUT); 
  pinMode(10,INPUT); 
  m1.attach(3);  
  m2.attach(5);
  m3.attach(9);
  m4.attach(11);
  attachInterrupt(0,dtmf,RISING);
  Serial.begin(9600); 
} 
 
void loop() 
{ xin=(analogRead(A1));
yin=(analogRead(A2));
zin=(analogRead(A3));
int x=map(xin,317,460,-90,90);
int y=map(yin,311,480,-90,90);
if(temp<4)
{
a=x;
b=y;
temp++;
}
 if(val!=0)
  {
   Serial.println(val); // print the new value to the serial monitor
   val = 0; // reset the value to 0
  }
}
void dtmf() // the ISR - this function is called everytime a RISING interrupt occurs on PIN 2 (INT 0)
{
  for(int i=1;i<5;i++) // Once we receive an Interrupt, we need to read each of q1 to q4, with q1 being the LSB and q4 the MSB
  {
    if(digitalRead(i+i+2)==1)// check if the pin is 1 or 0, if 1 then we need to process for binary to decimal conversion
    {
      val =digitalRead(4)+2*digitalRead(6)+4*digitalRead(8)+8*digitalRead(10);
      switch (val)
      {
         case 1:
         s1=583;
 val1 = map(s1, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
  m1.write(val1);
m2.write(val1);
m3.write(val1);
m4.write(val1);// sets the servo position according to the scaled value
break;
     case 5:
s5 =s5 +0.74;
s3 =s3 +0.74;
s9 =s9 +0.86;
s11=s11+0.5;

val5=map(s5,0,1023,0,1023);
val3=map(s3,0,1023,0,1023);
val9=map(s9,0,1023,0,1023);
val11=map(s11,0,1023,0,1023);

m5.write(val5);
m3.write(val3);
m9.write(val9);
m11.write(val11);

xin=(analogRead(A1));
yin=(analogRead(A2));
x=map(xin,317,460,-90,90);
y=map(yin,311,480,-90,90);

do{

xin=(analogRead(A1));
x=map(xin,317,460,-90,90);
if(x<a)
{
s9=s9+0.01;
val9=map(s9,0,1023,0,1023);
m9.write(val9);
} 
else
{
s11=s11+0.01;
val11=map(s11,0,1023,0,1023);
m11.write(val11);
}

}while(x!=a);


do{

yin=(analogRead(A2));
y=map(yin,311,480,-90,90);
if(y<b)
{
s5=s5+0.01;
val5=map(s5,0,1023,0,1023);
m5.write(val5);
} 
else
{
s3=s3+0.01;
val3=map(s3,0,1023,0,1023);
m3.write(val3);
}

}while(y!=b);
break;
            default:
            for(s1=0;s1<110;s1++)
            {
  val1 = map(s1, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
  m1.write(val1);
m2.write(val1);
m3.write(val1);
m4.write(val1);// sets the servo position according to the scaled value 
            }
break;
      }
    }
  } 
}
  // waits for the servo to get there

Moderator edit:
</mark> <mark>[code]</mark> <mark>

</mark> <mark>[/code]</mark> <mark>
tags added.