View Full Version : Determinare valori Min, Max e medio
Ciao;
E possibile determinare avendo tre variabili quale di essi abbia il valore Min, Max e medio.
Es.
Var1= 0,88
Var2= 0,89
Var3= 0,96
Ciao
:mbe: scusa, eh:
double Min, Max, Med;
if (Val1 < Val2) {
Min = Val1;
if (Val2 < Val3) {
Med = Val2;
Max = Val3;
}
}
else if (Val2 < Val3) {
Min = Val2;
if (Val1 < Val3) {
Med = Val1;
Max = Val3;
}
}
else {
Min = Val3;
if (Val1 < Val2) {
Med = Val1;
Max = Val2;
}
}
no, un momento, c'è un errore :D
aspetta che lo rivedo... ^^'
ghiotto86
01-06-2005, 23:10
Ciao;
E possibile determinare avendo tre variabili quale di essi abbia il valore Min, Max e medio.
Es.
Var1= 0,88
Var2= 0,89
Var3= 0,96
Ciao
ciao.
scusami conosci gli array cosa sono??
eccolo:
double Min, Max, Med;
if (Val1 < Val2) {
if (Val1 < Val3) {
Min = Val1;
if (Val2 < Val3) {
Med = Val2;
Max = Val3;
}
else {
Med = Val3;
Max = Val2;
}
}
else {
Min = Val3;
Med = Val1;
Max = Val2;
}
}
else {
if (Val2 < Val3) {
Min = Val2;
if (Val1 < Val3) {
Med = Val1;
Max = Val3;
}
else {
Med = Val3;
Max = Val1;
}
}
else {
Min = Val3;
Med = Val2;
Max = Val1;
}
}
Ciao;
Forse o dimenticato di mensionare il linguaggio che utilizzo che è il VB6.
Le parentesi graffe mi fanno pensare che il codice che mi ai postato possa essere se non erro o per java, c
Te ne sarei grata se potresti postarmelo per VB6
Ciao e Grazie
Public Sub Calcola()
' Questa parte del codice serve solo per renderlo più personalizzabile e adatto a ogni caso, niente di più
Dim Num_Val As Long
Num_Val = 3
' Dichiarazione delle variabili e ridimensionamento dell'array (var)
Dim Var() As Double
ReDim Var(Num_Val - 1)
Dim Max, Min, Med As Double
' A Min assegnamo un valore molto grande, o poi non verrà eseguito correttamente il codice
' è importante sapere che min dovrebbe essere più grande del numero massimo,
' ma questo comporta un'altro ciclo for
' quindi presuppondendo che il numero massimo non dovrebbe essere più di 999.999,
' assegnamo a min 999.999
Min = 999999
' Assegnazione
For h = 0 To Num_Val - 1
Var(h) = InputBox("Valore " & h)
Next h
For i = 0 To Num_Val - 1
' se il valore massimo è minore di Var(i), allora assegna il valore massimo come var(i)
If Max < Var(i) Then
Max = Var(i)
End If
'se il valore minimo è maggiore di Var(i), allora assegna il valore minimo come var(i)
If Min > Var(i) Then
Min = Var(i)
End If
' Addiziona tutto, per formare la media, in seguito
Med = Med + Var(i)
Next i
' Forma la media, quindi divide tutto per il numero del valori inseriti
Med = Med / Num_Val + 1
' Stampa a video il valore massimo, minimo e medio
MsgBox Min
MsgBox Max
MsgBox Med
End Sub
ciao.
scusami conosci gli array cosa sono??
ma lei magari non ha un array, ha i 3 valori distinti; si fa prima a scrivere qualche if come ho fatto io che a mettere i valori nell'array e ordinarlo.
cmq Carmen, il tuo problema non è difficile, basta solo ragionarci un attimino. portare in VB6 il codice C che ho scritto è semplicissimo, si fa anche ad intuito; basta sapere che se in Cscrivi:
if (...) {
.
.
.
}
else {
.
.
.
}
è come scrivere:
If ... Then
.
.
.
Else
.
.
.
End If
Cia a tutti;
La cosa purtroppo a me sembra complessa più che mai.
Il codice postato da "Massi91" potrebbe andare bene, dico potrebbe perche non funziona in tutti i casi che si possono verificare.
All'ora io o tre query le quali tutte e tre possono ritornare dati, oppure non possono ritornare nessuno dei tre, oppure ancora solo una.
Faccio un esempio pratico:
La prima query non contiene dati, la seconda nemmeno e la terza si, Minimo come valore mi ritorna 0 quando invece ci deve essere un valore.
Se invece la prima query e la terza query ritornano un risultato che mi dovrebbe tornare il valore minimo risulta vuoto.
Se invece la prima e la terza query contengono dati funziona.
Posto il codice:
' Questa parte del codice serve solo per renderlo più personalizzabile e adatto a ogni caso, niente di più
Dim Num_Val As Long
Num_Val = 10
' Dichiarazione delle variabili e ridimensionamento dell'array (var)
Dim Var() As Double
ReDim Var(Num_Val - 1)
Dim Max, Min, Med As Double
' A Min assegnamo un valore molto grande, o poi non verrà eseguito correttamente il codice
' è importante sapere che min dovrebbe essere più grande del numero massimo,
' ma questo comporta un'altro ciclo for
' quindi presuppondendo che il numero massimo non dovrebbe essere più di 999.999,
' assegnamo a min 999.999
Min = 999999
'prima query
Data2.RecordSource = "SELECT Min(campo) As PrMin, Max(campo) As PrMax, Avg(campo) As PrMed FROM Tabella1"
Data2.Refresh
If IsNull(Data2.Recordset("PrMin")) = False Then
'gestione prezzi min,max e med fatture
Var(1) = Data2.Recordset("PrMin")
Var(2) = Data2.Recordset("PrMax")
Var(3) = Data2.Recordset("PrMed")
End If
'seconda query
Data3.RecordSource = "SELECT Min(campo) As PrMin, Max(campo) As PrMax, Avg(campo) As PrMed FROM Tabella2"
Data3.Refresh
If IsNull(Data3.Recordset("PrMin")) = False Then
'gestione prezzi min,max e med bolle
Var(4) = Data3.Recordset("PrMin")
Var(5) = Data3.Recordset("PrMax")
Var(6) = Data3.Recordset("PrMed")
End If
'terza query
Data4.RecordSource = "SELECT Min(campo) As PrMin, Max(campo) As PrMax, Avg(campo) As PrMed FROM Tabella3"
Data4.Refresh
If IsNull(Data4.Recordset("PrMin")) = False Then
'gestione prezzi min,max e med vendita al dettaglio
Var(7) = Data4.Recordset("PrMin")
Var(8) = Data4.Recordset("PrMax")
Var(9) = Data4.Recordset("PrMed")
End If
For I = 0 To Num_Val - 1
' se il valore massimo è minore di Var(i), allora assegna il valore massimo come var(i)
If Max < Var(I) Then
Max = Var(I)
End If
'se il valore minimo è maggiore di Var(i), allora assegna il valore minimo come var(i)
If Min > Var(I) Then
Min = Var(I)
End If
' Addiziona tutto, per formare la media, in seguito
Med = Med + Var(I)
Next I
' Forma la media, quindi divide tutto per il numero del valori inseriti
Med = Med / Num_Val + 1
' Stampa a video il valore massimo, minimo e medio
MsgBox Min
MsgBox Max
MsgBox Med
Ciao
ma scusa, sbaglio o alla fine hai usato un array? :mbe:
ordinalo, no? puoi usare l'insertion sort o il quick sort.
OK! vi proverò sperando di riuscirci....
Ciao
leadergl
03-06-2005, 00:40
ciao, io non uso il C perchè potrei scrivere male la sintassi...però questa è la prima cosa che mi è venuta in mente, a funzionare funziona, forse non è il massimo dell'ottimizzazione :D
Le tue variabili sono Var1, Var2 e Var3 e da quelle abbiamo ricavato il Minimo, Medio e Massimo...
Min=Var1
if Var2 < Min then
Max = Min
Min = Var2
else
Max = Var2
end if
if Var3 < Max then
if Var3 > Min then
Med = Var3
else
Med = Min
Min = Var3
end if
else
Med = Max
Max = Var3
end if
Ziosilvio
03-06-2005, 14:23
Per determinare minimo, massimo, e medio di tre valori, basta usare un algoritmo di ordinamento semplice (anche insertion sort va bene), che, essendo tu una programmatrice, saprai sicuramente implementare in VB6.
Il problema vero, se ho capito bene, è che i tre valori sono ottenuti mediante interrogazioni a un database, che possono anche non dare risposta.
Allora bisogna anzitutto capire come si fa ad accorgersi che una risposta è stata data. Questo dipende dal database: cerca sul manuale.
Grazie 1000 a tutti.
Ciao!!!!!!!!!!
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.