![]() |
Pages (3): « 1 [2] 3 » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Fondamenti di architettura e programmazione (http://www.dsy.it/forum/forumdisplay.php?forumid=234)
-- Compitino Laboratorio martedì 25 novembre[Capra] (http://www.dsy.it/forum/showthread.php?threadid=37030)
Originally posted by ViPah
emily per aiutarti fallo prima su carta, cioè pensa al ragionamento che fai nella tua testa e scrivilo.
math.random() restituisce un numero tra 0 e 1. Quindi moltiplicalo per 2008 e ti uscira un numero tra 0 e 2007.
metti questo in un do while o un for e fallo uscire dal ciclo solo quando l'anno riportato sarà tra 1920 e 2007.
Parti da questo!
Grazie mille, ho provato a farli... All'inizio bisogna pensarci un po, ma nn son difficilissimi.
Un consiglio per il primo es. della data da estrarre:
int x = (int)((Math.random()*(2008-1920))+1920);
In questo modo, prendo il range da 1920 a 2007.
Grazie per aver messo il testo della prova ![]()
personalmente, mi sembra molto piu intuitivo moltiplicarlo per 2008 e fare un while...
..peccato che con il while come dici tu è possibile (una probabilità remota) che non estragga mai una data nel range richiesto...inoltre il computer fatica in modo notevolmente maggiore in quanto deve attuare un ciclo fino a che non esce una data compresa nell'intervallo dovuto, cosa facilmente aggirabile con la linea di codice suggerita dagli altri.
Mi accodo ai sostenitori del (int)(Math.random()*88)+1920; 
Originally posted by Andrewz
..peccato che con il while come dici tu è possibile (una probabilità remota) che non estragga mai una data nel range richiesto...inoltre il computer fatica in modo notevolmente maggiore in quanto deve attuare un ciclo fino a che non esce una data compresa nell'intervallo dovuto, cosa facilmente aggirabile con la linea di codice suggerita dagli altri.
Mi accodo ai sostenitori del (int)(Math.random()*88)+1920;![]()
perchè secondo te il pc fa fatica a moltiplicare 2008 * 0<x<1? farà un milione di calcoli al secondo se ha un processore lento -.-''
è diverso: se tu metti un ciclo while che ti calcola
int anno;
while (anno<1920){
anno=(Math.random()*2008);
}
il programma calcola n volte l'istruzione finchè non esce un numero compreso nell'intervallo che vuoi (in questo caso 1920-2007).Perciò il computer svolge l'istruzione n volte prima di trovare il numero che tu cerchi, contro la unica volta necessaria se si utilizza l'istruzione :
(Math.random()*88)+1920;.
Sono d'accordo che i computer di oggi sono molto veloci e di questo problema se ne possono fregare alla grande, però da un punto di vista di efficienza del codice è innegabile che eseguire una istruzione una volta è assolutamente più auspicabile che eseguirla almeno una volta.
Per concludere:le due soluzioni funzionano entrambe e a questi livelli di programmazione sono esattamente equivalenti, ma nel caso di un programma molto più complicato in cui il computer deve eseguire grandissime quantità di istruzioni non avrebbe tanto senso utilizzare la ripetizione di un gruppo di istruzioni per risolvere un problema per il quale ne occorrerebbe in realtà una sola !
Son d'accordo con te, ma il problema si sarebbe posto nel caso di calcoli abnormi, il primo milione di numeri primi o cose del genere...
ok siamo d'accordo però siamo d'accordo anche che più un codice è efficiente maggiore è la sua qualità 
Originally posted by ViPah
Son d'accordo con te, ma il problema si sarebbe posto nel caso di calcoli abnormi, il primo milione di numeri primi o cose del genere...
Non può avere soluzione è una cagata, è un ipotesi remotissima che non si verificherà quasi mai. Al test del programma, appena schiacciavo "invio" andava, anche con 100 date mi restituiva subito l'output. Sull'efficienza del programma ok, ma con un codice e un problema di questa entità, le due soluzioni sono equivalenti...Tantè che alla fine ho usato anche io la tecnica del 88 che rendeva il codice piu leggibile, visto che mi era rimasto un poco di tempo
ahahah dai questa discussione sta durando da tanto e direi che va bene così, alla fine siamo un po tutti d'accordo vedo...
Piuttosto..chissà com'era il compitino di oggi!
hihihi, stasera sentiremo le bestemmie ![]()
Originally posted by ViPah
Non può avere soluzione è una cagata, è un ipotesi remotissima che non si verificherà quasi mai. Al test del programma, appena schiacciavo "invio" andava, anche con 100 date mi restituiva subito l'output. Sull'efficienza del programma ok, ma con un codice e un problema di questa entità, le due soluzioni sono equivalenti...Tantè che alla fine ho usato anche io la tecnica del 88 che rendeva il codice piu leggibile, visto che mi era rimasto un poco di tempo
qualcuno sa qualcosa del test di inglese?
http://www.ccdinf.unimi.it/it/avvisi/6113.html
| All times are GMT. The time now is 13:58. | Pages (3): « 1 [2] 3 » Show all 33 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.