PROBLEMA Codice non funzionante, non trovo l'errore [C++]

Pubblicità

Andrea Rinaldi

Nuovo Utente
Messaggi
8
Reazioni
0
Punteggio
24
Ciao a tutti ragazzi, studiando per il mio prossimo compito di programmazione ho deciso di "allenarmi" un pochino cercando di creare un programma che converte un numero da decimale a binario. So che il codice non è perfettamente ottimizzato e che potrei evitare qualche variabile (alcune sono ancora inutilizzate, come 'int binario' perchè mi seriviranno successivamente) ma il problema è che anche se il codice non è completo dovrebbe funzionare mentre non lo fa e non riesco nemmeno a trovare l'errore, potreste darmi una mano gentilmente?

P.s. Come potete vedere da soli, si, sono alle prime armi

Codice:
#include <iostream>#include <cstdlib> 
using namespace std;


 
int main(int argc, char *argv[]){


int binario;
int decimale;
int i=0;
int a;
int vettore [100];
cout << "Inserire un numero: ";
cin >> decimale;
int decimale2 = decimale;




do
{
if (decimale % 2 == 0){
    vettore [i] = 0;
    decimale = decimale/2;
    i++;}
    
else{
    vettore [i] = 1    ;
    decimale = decimale/2;
    i++;}
    
decimale2 = decimale2 / 2;
    a++;
} while (decimale2 >= 1);


for (i = a; i = 0; i--){
cout << vettore [i];
}
return 0;
}
 
Che compilatore stai usando? Compilando con clang++ l'errore è evidente:

Codice:
bha.cc:39:15: warning: using the result of an assignment as a condition without
      parentheses [-Wparentheses]
for (i = a; i = 0; i--){
            ~~^~~
bha.cc:39:15: note: place parentheses around the assignment to silence this
      warning
for (i = a; i = 0; i--){
              ^
            (    )
bha.cc:39:15: note: use '==' to turn this assignment into an equality comparison
for (i = a; i = 0; i--){
              ^
              ==
1 warning generated.
 
Che compilatore stai usando? Compilando con clang++ l'errore è evidente:

Codice:
bha.cc:39:15: warning: using the result of an assignment as a condition without
      parentheses [-Wparentheses]
for (i = a; i = 0; i--){
            ~~^~~
bha.cc:39:15: note: place parentheses around the assignment to silence this
      warning
for (i = a; i = 0; i--){
              ^
            (    )
bha.cc:39:15: note: use '==' to turn this assignment into an equality comparison
for (i = a; i = 0; i--){
              ^
              ==
1 warning generated.

Ora provo modificando, grazie mille

(Io uso DEV C++ perchè a scuola utilizzano quello e per essere sicuro lo utilizzo pure io, qual'è più consigliato tra i due?)
 
Ciao, ma a parte all'errore in sé, quindi il codice diventerebbe

Codice:
for (i=0;i==0;i--);

non ho guardato cosa fa esattamente il programma, ma anche se a fosse 0, il programma entra nel ciclo perchè se a=0 allora i=a, ma dopo il primo ciclo con i-- i diventerebbe -1 quindi ciclerebbe solo una volta....non so se mi sono spiegato,
 
Ciao, ma a parte all'errore in sé, quindi il codice diventerebbe

Codice:
for (i=0;i==0;i--);

non ho guardato cosa fa esattamente il programma, ma anche se a fosse 0, il programma entra nel ciclo perchè se a=0 allora i=a, ma dopo il primo ciclo con i-- i diventerebbe -1 quindi ciclerebbe solo una volta....non so se mi sono spiegato,

Hai perfettamente ragione.. Avevo già risolto ma mi sono dimenticato di avvisare. Posto il codice se a qualcuno interessa. Grazie mille a tutti per l'aiuto! :)
 
Ciao, ma a parte all'errore in sé, quindi il codice diventerebbe

Codice:
for (i=0;i==0;i--);

non ho guardato cosa fa esattamente il programma, ma anche se a fosse 0, il programma entra nel ciclo perchè se a=0 allora i=a, ma dopo il primo ciclo con i-- i diventerebbe -1 quindi ciclerebbe solo una volta....non so se mi sono spiegato,
Hai perfettamente ragione.. Avevo già risolto ma mi sono dimenticato di avvisare. Posto il codice se a qualcuno interessa. Grazie mille a tutti per l'aiuto! :)


momento ma il ciclo for non esegue l'assegnazione poi la condizione, cicla, opera sulla variabile e riesegue il test? ovvero a=0 non entra proprio nel ciclo....scusate per L'OT....
 
sì esatto...
anche perchè se dovesse entrare non ne uscirebbe più dato che poi 'i' sarebbe < e non == di 0..ma penso si sia semplicemente confuso l'altro utente invertendo inizializzazione e controllo...
 
Pubblicità
Pubblicità
Indietro
Top