Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Ricerca delle occorrenze - Massimo e Minimo
Forum - C# / VB.NET - Ricerca delle occorrenze - Massimo e Minimo

Avatar
giova95 (Normal User)
Rookie


Messaggi: 29
Iscritto: 23/12/2011

Segnala al moderatore
Postato alle 9:37
Giovedì, 29/12/2011
(ho creato una discussione e non una domanda perchè credo che in questo caso ci sia bisogno di opinioni e non di risposte..)

Giorno :)
Il mio dubbio lo presento sotto questa forma perchè si è presentato così a me... ma è estendibile a molte altre occasioni.

Stavo facendo un programmino che comprendeva la ricerca del massimo e del minimo.
La parte di codice "incriminata" è questa:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub BtnMaxMin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnMaxMin.Click
  2.         N = CInt(TxtN.Text)
  3.         If i = 0 Then
  4.             max = N
  5.             min = N
  6.         End If
  7.         If N > max Then
  8.             max = N
  9.         ElseIf N < min Then
  10.             min = N
  11.         End If
  12.         i += 1
  13.  
  14.   End Sub



Come vedete a ogni click del bottone leggo N e verifico se sia più basso del minimo o più alto del massimo e funziona a meraviglia ovviamente xD
Il mio dubbio è sul passaggio
Codice sorgente - presumibilmente C# / VB.NET

  1. If i = 0 Then
  2.     max = N
  3.     min = N
  4. End If



So che è esatto e funziona, ma in questo modo a ogni click del bottone il programma deve verificare se i è o no uguale a 0 ed è uno spreco di tempo...
In un programma come questo ovviamente non fa la differenza ma in ogni caso.. possibile che non ci sia il modo per evitare questo "spreco"?
Mi era venuto in mente il fatto di poter creare un evento... ma non ho mai lavorato sulla creazione di eventi... forse questo è il momento buono per iniziare :)

Gradirei delucidazioni :)

Ultima modifica effettuata da giova95 il 29/12/2011 alle 9:39
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 11:07
Giovedì, 29/12/2011
1) Hai sbagliato sezione, il tuo codice è di vb.net, qui si parla di vb6

2) Il codice è corretto, anche all'università ci hanno insegnato che questo è il codice più corretto.
Un altro metodo è quello di dare alla variabile max il minimo numero intero rappresentabile, mentre alla variabile min il massimo numero intero rappresentabile (ora non ricordo bene qual'era, basta cercare su internet ma dovrebbe essere qualcosa del tipo 2 elevato a 32, questo per lo meno in java ma dovrebbe essere la stessa cosa per vb)

Se N sarà dunque maggiore del minimo numero rappresentabile automaticamente:
max = N

Ma questo equivale esattamente all'inizializzazione della variabile del tuo codice.

Stessa cosa per min.

Comunque questo secondo metodo è sconsigliato, quindi in sostanza il codice che usi tu è quello corretto :k:

PM Quote
Avatar
giova95 (Normal User)
Rookie


Messaggi: 29
Iscritto: 23/12/2011

Segnala al moderatore
Postato alle 11:15
Giovedì, 29/12/2011
grazie per la precisazione, me lo ricorderò... intanto chi di dovere sposti la discussione così evitiamo di mettere in subbuglio il tutto :)

si lo so... anche a me è stato detto che questo è il metodo migliore.. però boh, pensavo che si potesse creare un evento o qualcosa del genere che assegnasse a Min e Max il primo valore di N, senza verificare tutte le volte se è "la prima volta"

Grazie :)

Intanto se qualcuno ha qualche idea dica pure che io ascolto volentieri :)

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 13:02
Giovedì, 29/12/2011
Salve,
al di la del linguaggio la soluzione e' semplice, a patto di essere sicuri di avere almeno un click, basta inizializzare max al piu' piccolo numero rappresentabile e min al piu' grande escrivere:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub BtnMaxMin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnMaxMin.Click
  2.             N = CInt(TxtN.Text)
  3.  
  4.             If N > max Then
  5.                 max = N
  6.             End If
  7.             If N < min Then
  8.                 min = N
  9.             End If
  10.             i += 1
  11.      
  12.       End Sub



senza l'elseif, infatti cosi' facendo, al primo click le condizioni risulteranno Per forza tutte e due vere, eseguendo il codice:

Codice sorgente - presumibilmente Plain Text

  1. max = N
  2. min = N



Negli altri click, delle condizioni, ne sara' vera al piu' una.

Saluti.

Ultima modifica effettuata da gigisoft il 29/12/2011 alle 13:07
PM Quote
Avatar
giova95 (Normal User)
Rookie


Messaggi: 29
Iscritto: 23/12/2011

Segnala al moderatore
Postato alle 13:27
Giovedì, 29/12/2011
ok, grazie :)

PM Quote