Errore programma c++

di il
5 risposte

Errore programma c++

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

5 Risposte

  • Re: Errore programma c++

    Non l'ho guardato tutto, ma all'inizio ci sono errori:
    
             ...
             int t,z,l;
             int s[l];
           
             cout<<"inserisci la lunghezza dell'array: ";
             cin>>l;
             ...
    
    lo vedi?

    e poi...
    
              ...
              for(t=0;t<=l;t++){ 
              ...
    

    Saluti,
    Max
  • Re: Errore programma c++

    Ok grazie! quelli li ho risolti! ora il programma parte, pero dopo che finisce l'inserimento dei valori nell'array il programma si ferma! sicuramente ho sbagliato qualcosa nella definizione della funzione! pero non capisco cosa! grazie=)
  • Re: Errore programma c++

    For(i=k; i>0; i--){
    complemento=false;
    if(v==0){
    v=0;

    Gli indici degli array partono da (0) quindi se tu hai un array di 5 elementi avrai :
    array [0] , array[1] ...... array[4]
    nel tuo ciclo for se dai k = 5 vai fuori range for(i=k; i>0; i--) . Appena inizia il ciclo avrai :
    i=k=5
    v[5] non esiste è fuori range quindi il tuo ciclo dovrà essere :
    for(i=(k-1) ; i>=0 ; i--)

    Secondo questa loica devi aggiustare gli altri eventuali for
  • Re: Errore programma c++

    Ho trovato l'errore!esattamente era questo:
    for(j=i-1; j>=0; j--){
                            if(v[j]==0){
                                v[j]==1;
                                }else{
                                  v[j]==0;
                                  }
                                }
    ho messo un uguale in piu nei due assegnamenti dei costrutti if. per quello che non mi faceva nulla! poi giustamente come hai detto te, andava cambiato il costrutto for perche come l'avevo impostato io modificava tutto tranne il valore nel vettore V[0].

    grazie mille per le dritte! ora funziona tutto correttamente!
  • Re: Errore programma c++

Devi accedere o registrarti per scrivere nel forum
5 risposte