Ciao a tutti! sono nuovo! mi chiamo salvo!
HO un problema con un programma c++: questo programma deve creare una procedura che riceve come parametri un array di zero e di uno e la sua lunghezza. Dopo di che deve farmi il complemento a 2 dove, partendo da destra, tutti gli zero fino al primo 1 compreso, restano invariati mentre dal primo uno escluso verso destra i valori vengono invertiti. Ovvero se riceve 10010 il programma mi deve restituire 01110.
Il programma dev c++ in fase di compilazione non mi da errori e mi crea correttamente l'eseguibile solo che, quando lo faccio partire mi va in crash, si apre e si chiude subito. Il codice è questo: 
#include<iostream>
#include<stdlib.h>
using namespace std;
void cdue(int v[],int k){
int i,j;
bool complemento=true;
while(complemento==true){
for(i=k; i>0; i--){
         complemento=false;
         if(v[i]==0){
            v[i]=0;
            complemento=true;
            }else{
             v[i]=1;
             for(j=i-1; j>=0; j--){
                        if(v[j]==0){
                            v[j]==1;
                            }else{
                              v[j]==0;
                              }
                            }
                         complemento=false;
                       }                           
                 }
                 }   
                 }
      
     int main(){
          int t,z,l;
         int s[l];
       
         cout<<"inserisci la lunghezza dell'array: ";
         cin>>l;
         
         for(t=0;t<=l;t++){
                  cout<<"\ninserisci dei valori compresi tra zero e uno: ";
                   cin>>s[t];
                   }
         cdue(s,l);
              
              cout<<"\n\n\nl'array corrispondente con i complemento a 2 e' :";
              
              for(t=0;t<=l;t++){              
                          cout<<s[t];
                          }
                          
                          
                          system("PAUSE");
return 0;
} 
riuscite ad aiutarmi??
grazie