|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
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 |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
scusa, eh:Codice:
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;
}
}
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
no, un momento, c'è un errore
aspetta che lo rivedo... ^^' |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Quote:
scusami conosci gli array cosa sono?? |
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
eccolo:
Codice:
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;
}
}
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
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 Ultima modifica di Carmen : 02-06-2005 alle 00:06. |
|
|
|
|
|
#7 |
|
Registered User
Iscritto dal: Apr 2005
Messaggi: 56
|
Codice:
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
Ultima modifica di Massi91 : 02-06-2005 alle 09:59. |
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
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: Codice:
if (...) {
.
.
.
}
else {
.
.
.
}
Codice:
If ... Then . . . Else . . . End If |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
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 |
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ma scusa, sbaglio o alla fine hai usato un array?
![]() ordinalo, no? puoi usare l'insertion sort o il quick sort. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
OK! vi proverò sperando di riuscirci....
Ciao |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
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
Le tue variabili sono Var1, Var2 e Var3 e da quelle abbiamo ricavato il Minimo, Medio e Massimo... Codice:
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
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#13 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16214
|
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.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Grazie 1000 a tutti.
Ciao!!!!!!!!!! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:57.











scusa, eh:








