PROBLEMA Codeblocks Esegue Male Il Codice

Napoleone96

Nuovo Utente
Buongiorno a tutti,

sto preparando l'esame di informatica e all'improvviso, proprio ora che l'esame è alle porte, Codeblocks da di matto.
Ho scritto un codice in C, l'ho buildato( nessun errore di compilazione) e l'ho runnato. Il programma mi da risultati diversi (sbagliati) rispetto a quello dei miei compagni. Pensavo di aver sbagliato a scrivere il codice e per sicurezza l'ho copiato pari pari da quello del prof. e ugualmente continua a darmi l'errore.
Ho cambiato PC, con lo stesso codice, e ha funzionato perfettamente. Successivamente alla seconda build/run pure in quel PC ha prodotto il medesimo errore di prima o.O
Ho provato a disinstallare e reinstallare ma niente, l'errore rimane.
Purtroppo nel mio corso usano codeblocks e non sono molto abile con gli IDE quindi chiedo a voi una mano!!

Grazie

P.s: ho mandato il codice ad un mio amico e da lui funziona quindi il problema non è il codice
 

Napoleone96

Nuovo Utente
Preferirei risolvere il problema in CodeBlocks...
Anche perché come detto non sono esperto di IDE e nel mio corso i prof. spiegano in base a quel programma lì.
Grazie comunque, in extremis dovrò provare altri programmi come DeV-C++

Ma che problemi ti da ?
Il codice di programma è una cavolata, semplicemente non capisco perché produce un risultato errato (rispetto al codice).
Praticamente tramite questa porzione di codice





Teoricamente l'utente è libero di riempire il vettore con qualsiasi valore finché il vettore non è pieno (i < N) o finché non digita il valore 0.
Il problema è che a me chiede al massimo di inserire 3 valori dopo di che salta alla porzione di codice seguente (che non riporto perché funziona invece), a volte ne chiede 2. Dovrebbe teoricamente chiedermene 5 a meno che io non digiti 0 (cosa che ovviamente non faccio).
Ai miei amici funzona così, a me si blocca a 3 elementi. Come già detto il problema non è il codice ma qualcosa in CodeBlocks.

Come dovrebbe essere:


(lascia perdere val e l'altro elemento, quello che non combacia è il numero di elementi del vettore che da lui sono giustamente 5 in quanto non ha digitato 0 e da me 2)

Come gira da me:
 

over_coder

Nuovo Utente
L'errore invece è proprio nel sorgente. Il vettore v non è infatti inizializzato a nessun valore, quindi l'array contiene garbage, definiamoli pure valori casuali per adesso.

Nella guardia del ciclo while controlli che il valore in posizione v(i) sia diverso da zero. Però, precedentemente, se v(i) era diverso avevi incrementato i. Quindi stai controllando la posizione successiva a quella inserita.
Visto che l'array non è stato correttamente inizializzato il suo contenuto è totalmente casuale. In diversi casi conterrà zero. Testando quindi il successivo elemento ancora da immettere troveremo uno zero, facendoci terminare. Altre istanze di esecuzione potrebbero portare a trovare valori positivi o negativi, permettendoci di continuare.

Soluzione? Correggere il controllo nel while e l'incremento dell'indice. Inoltre è sicuramente importantissimo inizializzare sempre e il prima possibile le variabili che si dichiarano.

P.S.
Ho utilizzato la notazione v(i) perché a quanto pare le parentesi quadre lo rilevano, giustamente, come BBCode.
 

Entra

oppure Accedi utilizzando