iBookG4user
Manifesto originale- 27 giugno 2006
- Seattle, WA
- 20 settembre 2009
'Scrivi una funzione che riempia un array con 25 numeri casuali tra 1 e 10. Quindi scrivi una funzione che stamperà l'array. Scrivi del codice in main per testare le tue funzioni. A volte questo codice di prova è chiamato *driver
Non utilizzare le variabili globali qui. Passa l'array alla funzione tramite l'elenco dei parametri'
Il mio codice attuale non genera errori nel debugger, ma non restituisce l'array. E non so cosa intende scrivendo al conducente, cosa dovrei testare? Vi siete dimostrati tutti estremamente utili in passato e sono sicuro che questa volta mi aiuterete a indirizzarmi nella giusta direzione
Codice: |_+_|
lee1210
- 10 gennaio 2005
- Dallas, TX
- 20 settembre 2009
Inoltre, e sono sicuro che sia un errore onesto, sono sicuro che il tuo professore intendesse pseudo- a caso.
Inoltre, in generale, stai dichiarando nuovi double(), non invocando la produzione e la stampa. Porta via il doppio lì e passa un argomento come discusso sopra e cambia il tipo di ritorno di entrambi in void.
-Leggi
gnasher729
Sospeso
- 25 novembre 2005
- 20 settembre 2009
E come scriveresti una chiamata alla funzione 'produci'?
E all'interno della tua funzione 'principale', quale delle due hai scritto, un prototipo di funzione o una chiamata di funzione?
iBookG4user
Manifesto originale- 27 giugno 2006
- Seattle, WA
- 20 settembre 2009
lee1210 ha detto: Alcune cose: il tuo array dovrebbe essere di tipo int[], non double[]. Devi accettare un array int per produrre e stampare. Devi dichiarare un int[] in main, passarlo a produrre, compilarlo lì, quindi passarlo alla stampa. Il<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.
Inoltre, e sono sicuro che sia un errore onesto, sono sicuro che il tuo professore intendesse pseudo- a caso.
Inoltre, in generale, stai dichiarando nuovi double(), non invocando la produzione e la stampa. Porta via il doppio lì e passa un argomento come discusso sopra e cambia il tipo di ritorno di entrambi in void.
-Leggi
Ok, ho apportato le modifiche che hai suggerito e il codice sembra più logico. Anche se ora sto ricevendo tre errori nei cicli for.
Codice: |_+_|
Allegati
lee1210
- 10 gennaio 2005
- Dallas, TX
- 20 settembre 2009
Penso che l'intento sia di richiamare print in main, il che dovrebbe andare bene.
Inoltre, quando passi array da produrre, usa semplicemente array non *array.
-Leggi
iBookG4user
Manifesto originale- 27 giugno 2006
- Seattle, WA
- 20 settembre 2009
lee1210 ha detto: Cambia il tipo di argomento di produrre in int[] o int *. In questo momento è solo int, quindi non puoi usare [], ecc. Lo stesso vale per la stampa. Inoltre, non è necessario restituire nulla da prodotti o stampe. Cambia il loro tipo di reso in void.
Penso che l'intento sia di richiamare print in main, il che dovrebbe andare bene.
Inoltre, quando passi array da produrre, usa semplicemente array non *array.
-Leggi
Ha funzionato
Ora, sai cosa intendeva scrivendo il codice per testare le funzioni? Cosa intende con quello? E grazie mille per il tuo aiuto finora!
Codice: |_+_|
chown33
Moderatore
Membro dello staff- 9 agosto 2009
- il Piano Abissale
- 20 settembre 2009
iBookG4user ha detto: Ora, sai cosa intendeva scrivendo il codice per testare le funzioni? Cosa intende con quello?
La specifica diceva che i numeri nell'array dovrebbero essere compresi tra 1 e 10. Potresti scrivere un test che lo confermi.
Ha anche detto che i numeri dovrebbero essere casuali. Mentre la casualità può essere più difficile da testare di quanto sembri, la semplice non casualità può essere facile da testare. Il più semplice è confermare che tutti i numeri non hanno lo stesso valore. Test di casualità più complessi utilizzano analisi statistiche.
Un altro test che puoi scrivere è confermare che la funzione produce() restituisce valori diversi ogni volta che viene chiamata. Si tratta di una semplice forma di analisi statistica, ovvero garantire che le invocazioni consecutive abbiano risultati indipendenti.
Dovresti anche considerare di inizializzare l'array con valori non validi noti, come -1 o 0, prima di chiamare produce(). Altrimenti un array locale non inizializzato potrebbe già contenere valori imprevedibili, che un test potrebbe interpretare come casuali anche se produce() non fa nulla.
Come specificazione, la dichiarazione di lavoro è alquanto vaga. Per prima cosa, non specifica quali test deve superare. Credimi, se lasci alla maggior parte dei programmatori la scelta dei test di qualificazione, è un grosso errore. Il codice potrebbe funzionare solo in un caso, che era il caso utilizzato dal programmatore per sviluppare il codice. Se ti sembra una follia, ti posso assicurare che è successo.
iBookG4user
Manifesto originale- 27 giugno 2006
- Seattle, WA
- 20 settembre 2009
Questo ha funzionato a meraviglia:
Codice: |_+_| S
Levigatrice
a
- 24 aprile 2008
- 21 settembre 2009
iBookG4user ha detto: È stato abbastanza semplice, grazie!
Questo ha funzionato a meraviglia:
Prova a inserire un numero 'non valido' nel tuo array (diciamo 11) e verifica se questa funzione lo rileva.
iBookG4user
Manifesto originale- 27 giugno 2006
- Seattle, WA
- 21 settembre 2009
Sander ha detto: prova a inserire un numero 'non valido' nel tuo array (diciamo 11) e verifica se questa funzione lo rileva.
Ho impostato temporaneamente l'array per consentire numeri maggiori di 10 e lo ha rilevato, grazie S
Levigatrice
a
- 24 aprile 2008
- 22 settembre 2009
iBookG4user ha detto: ho impostato temporaneamente l'array per consentire numeri maggiori di 10 e lo ha rilevato, grazie
Anche se non è il primo elemento dell'array..?
Il motivo per cui lo sto chiedendo è perché la tua funzione print() (almeno l'ultima versione mostrata in questo thread) restituisce solo il primo elemento dell'array (convertito in doppio).
Messaggi Popolari