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