|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
problema massimo
Qualcuno mi spiega il perchè quando si risolve un problema di massimo la variabile max va inizializzata al primo elemento dell'array e non a 0??
So che va fatto ma non so bene il motivo! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 309
|
perchè se i numeri sono tutti negativi tu ti ritrovi come massimo lo 0, che è sbagliato
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Puoi inizializzarla al valore minimo possibile.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
La regola di base è che il confronto deve essere fatto solo fra elementi dell'insieme in cui cercare. Non necessariamente devi prendere il primo elemento, puoi prendere qualsiasi valore tra quelli contenuti nell'insieme di ricerca.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
This. E' la cosa più sicura da fare.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
Quindi voi dite che andrebbe.prima.trovato il minimo e poi inizializzare max al valore trovato dal minimo?!
E la variabile min a cosa va inizializzata? Inviato dal mio GT-I9003 usando Tapatalk |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Credo che intendessero di inizializzare la variabile di quel tipo al valore minimo permesso a quel tipo. Ad esempio uno short int ha come valore minimo -127 (se non ricordo male), quindi la inizializzi così. Non c'è niente di più piccolo del più piccolo valore accettato dalla macchina.
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Jul 2009
Messaggi: 146
|
Si , ma è inutile inizializzare il valore massimo al minimo assoluto per il tipo di dato . Se devo trovare il massimo in un insieme tanto vale partire dal primo elemento che il mio insieme contiene dicendo che per adesso è lui il mio valore massimo poi lo confronto con gli altri elementi e modifico il valore di conseguenza .
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Ma anche di difficile realizzazione se il tipo utilizzato non prevede un minimo.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Oppure (ad esempio) a una serie (infinita) di valori?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Utilizzare il valore minimo ha senso quando non sai la dimensione dell'insieme di cui devi trovare il massimo. Se l'insieme e' vuoto non hai un primo elemento. Per cui come regola se il tipo prevede un valore minimo (o un valore che sei sicuro che l'insieme di input non supera) usa quello. Se non ce l'hai verifica che l'insieme abbia almeno un elemento e usa il primo elemento come valore iniziale.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Pero' non e' detto che un qualsiasi tipo utilizzato per rappresentarli abbia il concetto di valore massimo/minimo. Se In generale un qualsiasi tipo che non preveda un valore di minimo e/o massimo, come ad esempio alcuni numeri a precisione arbitraria. Alcuni prevedono il "-infinito", altri no. Ad esempio in Python mi par di ricordare che gli interi non prevedano un minimo (ma dovrei verificare per esserne sicuro...)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Filosofo.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
In effetti nella sua brevita' la risposta poteva sembrare eccessivamente acida.
Spero che banryu non se la sia presa troppo ![]()
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Dai tuoi successivi messaggi ho poi capito cosa intendevi, grazie ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#19 |
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
Secondo me l'unica differenza nell'inizializzazione della variabile massimo, tra il prendere il primo elemento del vettore e il minimo valore accettabile dal tipo di dato sta solo nella comodità dell'operazione da effettuare per fare ciò.
Poi la cosa può anche essere opinabile. ![]()
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 485
|
Personalmente preferisco inizializzare la variabile al primo elemento cosi da far partire il confronto dal secondo. La differenza prestazionale è infima, anche se (forse) ci possono essere situazioni dove il confronto può essere oneroso, ma se si può fare una cosa in meno perchè non farla? Certo... se impattasse molto negativamente sulla leggibilità del codice sarebbe un altro paio di maniche
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:31.