[1] Il define scritto cosi' non va bene: quello che sta dopo il simbolo viene sostituito nel testo, percio' 0.5 * g diventa 0.5 * 9.8 m/s*s. Perche' partite da t=1? t=t+deltaT e' meglio scriverlo t+=deltaT. Non ci sono controlli sulle variabili di input. Il calcolo di v0x e v0y non dipende da t percio' si puo' portare fuori del ciclo. vx e vy non servono a niente (anzi, per come e' scritto il seguito e' proprio sbagliato). Incompleto. [2] 9.8 e' meglio metterlo come costante. Non ci sono controlli sull'input. Le variabili si dichiarano all'inizio del programma. Il controllo sul muro e' fatto basandosi sulla conoscenza della fisica, che pero' in questo caso andava considerata ignota. La condizione per il controllo del passaggio del muro e' sbagliata. v0x e v0y non dipendono dal tempo, percio' si calcolano fuori dal ciclo. La formula per il calcolo di yt e' sbagliata. Disordinato. [3] pi greco e' definito come M_PI in math.h. In ogni caso non vale 3.141592!! Controlli inutilmente complicati e inutili. Non dovete usare la fisica per calcolare quantita' che si stimano con il programma! Meglio scrivere t+=deltaT. La ripetizione del codice per v ridotte non si fa riscriverndo le istruzioni. Che li abbiamo studiati a fare i cicli? [4] 9.8 va messo come costante. Nei controlli non ci sono messaggi per gli utenti che sbagliano. Le condizioni sull'angolo e su dt sono sbagliate. Le variabili si dichiarano tutte all'inizio. Perche' si parte da t=dt? Meglio t+=dt invece di t=t+dt. Inutile ricalcolare ogni volta grandezze che non dipendono dal tempo: calcolate le velocita' iniziali fuori dal ciclo. La condizione per verificare l'impatto sul muro non e' corretta. [5] 9.8 va messo come costante. A che serve il do esterno? Le velocita' iniziali si calcolano fuori dal ciclo perche' non dipendono da t. La condizione del ciclo sul moto e' sbagliata (t1 < delta?). Il controllo su teta e' sbagliato (non c'e' possibilita' di correggere). [6] ASSENTI [7] un angolo, non un'angolo. Meglio t+=at invece di t=t+at. Non considera il muro. Non ci sono controlli sull'input. [8] pi non vale 3.14. Si scrive M_PI. Mi spiegate il senso di printf("")? I conti sull'impatto con il muro dovrebbero prescindere dalla conoscenza della fisica. Evitare di ripetere conti inutili nei cicli. Definire fuori dal ciclo le quantita' indipendenti dalla variabile di ciclo. Le condizioni per continuare la simulazione non sono esatte. [9] Piuttosto incompleto, ma quel che c'e' va bene. Un po' disordinato. [10] Fattore di riduzione??? 1/2 = 0!!! La condizione che definisce l'urto con il muro non e' giusta. break!!!!! vy = vy - g*t???? Meglio scrivere t+=dt invece di t=t+dt. [11] ASSENTI [12] La condizione del while per il controllo dell'input e' sbagliata (e' il contrario). Non c'e' il muro. [13] ASSENTI [14] Buona l'idea di porre t=tmax al verificarsi delle condizioni per cui interrompere la simulazione. [15] vy e' sbagliato (perche' non copiate le formule date?). Il for non e' un costrutto adatto a questo problema. Molto incompleto. [16] 1.57 sarebbe pi/2??? Il for non e' il costrutto piu' adatto in questo caso. Troppo output. La struttura for con exit non rispetta le regole. Non tiene conto del muro. [17] Cosa devo vedere: pigrecomezzi=1.5707963!!! L'if non e' il costrutto giusto per il controllo dell'input: come si fa a correggerlo? Meglio usare t+=dt invece di t=t+dt. Il calcolo delle velocita' si fa fuori dal ciclo visto che queste non dipendono dal tempo. La condizione per il controllo dell'interruzione del ciclo e' sbagliata. L'operatore = e' l'operatore di assegnazione, non quello di confronto: bocciati! [18] Le dichiarazioni si fanno prima di cominciare a eseguire istruzioni. L'if per il controllo del valore di theta e' inutile: andava usato un do. t=t+dt si scrive t+=dt. Inutile calcolare coseni e seni nel ciclo: la velocita' iniziale si calcola fuori. Al verificarsi delle condizioni che interrompono il moto il ciclo non si ferma. [19] Se theta > 90 o < 0 l'input va ripetuto fino a quando non si inserisce il valore giusto, non solo una volta! Scrivete t+=dT invece di t=dT+t. 1/2 fa 0. Se il punto materiale colpisce il muro la simulazione si deve fermare lo stesso. [20] p=3.14!! Non si devono calcolare le condizioni usando la fisica (peraltro non serve). t+=delta, non t=t+delta. La condizione che stabilisce l'urto con il muro e' sbagliata. Non si capisce il senso dell'if su t>tmax. La struttura globale dell'if e' sbagliata. [21] L'if non e' adatto a fare il controllo dell'input: ci vuole un do. 3,14159265!!!!! Ma che e'? Non solo mettete a mano il numero, ma usate la virgola invece del punto!! vx e vy si calcolano fuori dal ciclo perche' sono costanti. Non c'e' il muro. [22] 9.8 va definita come costante. Non c'e' controllo sull'input. Che razza di condizione e' t>=dt? A che serve o? *(-1)???? Il return in mezzo al ciclo e' una pessima idea. L'uso di i e o mi paiono del tutto fuori luogo... [23] 3.14/2.: mi sento male :-(. La condizione di stop del ciclo e' a dir poco criptica: l'uso di i e' inutile (e richiede elaborazioni in piu'). Troppe parentesi (inutili). i=Tmax funziona, ma dal punto di vista logico non e' una scelta idonea (il controllo non lo fate su i, ma su i*dt). Difficilmente si verificheranno le condizioni che avete imposto per il controllo dell'urto sul muro. Il punto materiale potrebbe attraversarlo senza accorgersene. Il modo in cui sono scritti gli else rende difficile la lettura. [24] ASSENTI [25] ASSENTI [26] ASSENTI [27] ASSENTI [28] ASSENTI [29] ASSENTI [30] ASSENTI [31] pigreco non vale 3.1419!! Usate un if al posto del do per controllare l'input. t==0 (e seguenti) non e' un'assegnazione!!! Avete commesso l'errore contrario a quello che si fa di solito. Ci sono almeno tre t+deltat: non e' meglio cambiare subito variabile? E poi si scrive t+=deltat. Non ci sono controlli di alcun genere. [32] Avete usato == come operatore di assegnazione invece che come operatore di confronto. Chi ha copiato da chi? Il controllo dell'input non si fa con un if, ma con un do. Chi e' z? deltat=z, ma se z non e' mai stato assegnato? Che razza di ciclo e': si calcolano due volte le stesse cose? Non ci sono controlli di nessun genere. [33] Non c'e' il controllo sull'input. Usare t+=deltat invece di t=t+deltat. 1/2 fa 0. Perche' i++? Chi lo ha detto che il tempo incrementa di un'unita' a ogni passo? Non c'e' il muro. [34] ASSENTI [35] Le variabili vanno dichiarati all'inizio del blocco. Gli angoli si usano in radianti nelle funzioni trigonometriche. 9.8 dovrebbe essere una costante. 1/2 e' uguale a zero! Non si devono fare previsioni basate sulla conoscenza della fisica per stabilire le condizioni di interruzione del moto. i++? Perche'? i non aumenta di uno ogni volta. E perche' poi c'e' anche t++? [36] Non c'e' alcun controllo sull'input. Inserisci i valori di vx e vy???? t=t+deltat e' meglio scriverlo t+=deltat. Ma poi perche' usare t se il controllo lo fate su i? E chi lo dice che i avanza di un'unita'? Non avete fatto inserire deltat apposta? Non c'e' controllo sul proseguimento del moto.