unexpected exit from my code.

Hi, I’m having an unexpected exit from my code.
for some reason the variable Ed receives the value of vector V [4].
I searched the code and found nothing to do it.

this is the code:
(I know this is a mess :smiley: ).

int i = 1;
int Ed = 0;
int Pi = 0;
int V[4] = {0,0,0,0};
String Posisao="PA";
String Operasao = "M";
void setup() {
  delay(1000);
  Serial.begin(9600);
  
  pinMode(22,INPUT_PULLUP);
  pinMode(23,INPUT_PULLUP);
  pinMode(24,INPUT_PULLUP);
  pinMode(25,INPUT_PULLUP);
  pinMode(26,INPUT_PULLUP);
  pinMode(27,INPUT_PULLUP);
  pinMode(28,INPUT_PULLUP);
  pinMode(29,INPUT_PULLUP);
  pinMode(30,INPUT_PULLUP);
  pinMode(31,INPUT_PULLUP);
  pinMode(32,INPUT_PULLUP);
  pinMode(33,INPUT_PULLUP);
  pinMode(34,INPUT_PULLUP);
  pinMode(35,INPUT_PULLUP);
  pinMode(36,INPUT_PULLUP);
  pinMode(37,INPUT_PULLUP);
  pinMode(38,INPUT_PULLUP);
  pinMode(39,INPUT_PULLUP);
  pinMode(40,INPUT_PULLUP);
  pinMode(41,INPUT_PULLUP);
  pinMode(42,INPUT_PULLUP);
  pinMode(43,INPUT_PULLUP);
  pinMode(44,INPUT_PULLUP);
 // pinMode(45,INPUT_PULLUP);
  
  
}

void loop() {
 if(digitalRead(22) == LOW){
  
if (Pi>0){
Pi = Pi-1;  
}
  }
  if(digitalRead(23) == LOW){
    if (Operasao = "A"){ 
    Pi = 7;
    Posisao = "PA";
    }
  }
    if(digitalRead(24) == LOW){

    if (Operasao = "A"){ 
    Pi = 5;
    Posisao = "PA";
    }
  }
    if(digitalRead(25) == LOW){
    if (Operasao = "A"){ 
    Pi = 0;
    Posisao = "PA";
    }
  }
    if(digitalRead(26) == LOW){
    Operasao = "A";
  }
    if(digitalRead(27) == LOW){
    if (Operasao = "A"){ 
    Pi = 11;
    Posisao = "PA";
      }
    }
    if(digitalRead(28) == LOW){
    if (Operasao = "A"){ 
    Pi = 18;
    Posisao = "PA";
    }
  }
    if(digitalRead(29) == LOW){
    Operasao = "M";
  }
    if(digitalRead(30) == LOW){
      Ed = 0;
  }
    if(digitalRead(31) == LOW){
                 delay(500);
                 Serial.println();
                 Serial.print(Posisao);
                 Serial.print(Pi);
                 Serial.print(Ed);
                 Serial.print("/");
                int i = 1;
                 while (i < 5) {
                Serial.print(V[i]);
                i = i + 1;
                }
                Ed = 0;
                }
    if(digitalRead(32) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 0;
  }
    if(digitalRead(33) == LOW){
   
      delay(500);  
        Ed = Ed + 1;
      }
    if(digitalRead(34) == LOW){
    delay(500);
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 9;
  
  }
    if(digitalRead(35) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 8;
  }
    if(digitalRead(36) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 7;
  }
    if(digitalRead(37) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 6;
  }
    if(digitalRead(38) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 5;
  }
    if(digitalRead(39) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 4;
  }
    if(digitalRead(40) == LOW){
    Pi = Pi+1;
  }
    if(digitalRead(41) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 3;
  }
    if(digitalRead(42) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 2;
  }   
  if(digitalRead(43) == LOW){
                                    V[1] = V[2];
                                    V[2] = V[3];
                                    V[3] = V[4];
                                    V[4] = 1;
  }
    if(digitalRead(44) == LOW){
    Pi = 0;
    Posisao = "TE";
  }
   // if(digitalRead(45) == LOW){
  //Pi = 0;
//Posisao = "PA";

//while (digitalRead(6) == LOW){

//if(digitalRead(7) == LOW){
  //Pi = 0;
//Posisao = "PA";
//}
//if(digitalRead(8) == LOW){
 //Pi = 5;
//Posisao = "PA";
//}
//if(digitalRead(9) == LOW){
 //Pi = 7;
//Posisao = "PA";
//}
//if(digitalRead(12) == LOW){
  //Pi = 18;
//Posisao = "PA";
//}
//if(digitalRead(13) == LOW){
  //Pi = 11;
//Posisao = "PA";
//}
  //}
}

Your array V has 4 elements, V[0], V[1], V[2], V[3]. Array indexes start at 0. So when you write to V[4] you are writing to memory that you do not "own" causing undefined behaviour.