giulia18395 ha scritto:
Ciao! Volevo un parere su questa risoluzione, se l'esercizio mi chiede:
I. dichiara un vettore x di 500 int.
II. dichiara una variabile y di tipo int;
III. dichiara una variabile t di tipo int;
IV. leggere da standard input una sequenza di numeri interi e per ogni numero m della sequenza inserire m nel vettore x solo se m è maggiore del prodotto dei valori che progressivamente vengono inseriti nel vettore x.
Il codice che hai postato presenta sicuramente degli errori, per esempio oltre a quello segnalato da @oregon relativo allo sbagliato posizionamento dell'istruzione
prodotto = prodotto*m;
c'è anche il fatto che non inizializzi correttamente la variabile i, ma lasciamo perdere... vorrei invece approfittarne per ribadire che per me esercizi di questo genere, come altri assegnati dal tuo prof, sono inutilmente criptici e hanno scarsissimo valore didattico!
Nel caso specifico:
- i punti II e III a cosa servono se poi le variabili y e t non vengono menzionate nei punti successivi?!
- quando il vettore x è ancora "vuoto", quanto vale il prodotto?
- l'inserimento deve terminare appena si inserisce un valore di m che non sia maggiore del prodotto corrente (come mi sembra di capire tu abbia inteso) o fin quando il vettore x non viene riempito completamente?
- in quest'ultimo caso sei cosciente del fatto che andrai incontro ad un overflow molto ma moooooooolto prima di inserire 500 elementi nel vettore x?
- finora ho dato per scontato che vengano inseriti valori positivi, ma avendo a che fare con int, sono ovviamente ammessi anche zero e numeri negativi... a tal proposito ipotizziamo che il primo valore letto venga inserito nel vettore x senza essere sottoposto a nessun controllo e che la variabile che tu chiami prodotto venga inizializzata a tale valore... ebbene in una situazione del genere il vettore x può essere riempito completamente senza andare incontro all'overflow ricorrendo ad una sequenza del genere:
a) 0 5 1 33 1 7 1 1 7 5 -14 1 ...
b) -1 1 1 1 1 1 1 1 1 1 1 1 1 ...