Esercizio Vb!!
Ho da poco iniziato la programmazione in Visual Basic, e ho provato a fare questo esercizio ma non riesco a completarlo. Sapreste darmi una mano????
Grazie!!!
"con una finestra di dialogo l'utente può inserire un numero e con 2 pulsanti di comando può scegliere tra quadrato e cerchio.Il programma calcola l'area della figura in base alla richiesta dell'utente,utilizzando il numero fornito come lato nel caso del quadrato o come raggio nel caso del cerchio".
Aspetto una risposta!!! thanxxxx!!!
Grazie!!!




"con una finestra di dialogo l'utente può inserire un numero e con 2 pulsanti di comando può scegliere tra quadrato e cerchio.Il programma calcola l'area della figura in base alla richiesta dell'utente,utilizzando il numero fornito come lato nel caso del quadrato o come raggio nel caso del cerchio".
Aspetto una risposta!!! thanxxxx!!!
Risposte
"IlaCrazy":
Ho da poco iniziato la programmazione in Visual Basic, e ho provato a fare questo esercizio ma non riesco a completarlo. Sapreste darmi una mano????
Grazie!!!![]()
![]()
![]()
![]()
"con una finestra di dialogo l'utente può inserire un numero e con 2 pulsanti di comando può scegliere tra quadrato e cerchio.Il programma calcola l'area della figura in base alla richiesta dell'utente,utilizzando il numero fornito come lato nel caso del quadrato o come raggio nel caso del cerchio".
Aspetto una risposta!!! thanxxxx!!!
Usi VB6 o .Net?
Per finestra di dialogo intendi InputBox(,,,,) o un form modale???
Se ho più dati ti posso postare il progetto già fatto!!!
CIAO
Meglio non postare gli interi compiti di altre persone, ma aiutarle a risolvere.
Cosa non riesci a fare, precisamente? Ti bastano una textbox, un commandbutton e due option.
Cosa non riesci a fare, precisamente? Ti bastano una textbox, un commandbutton e due option.
emmmm .... non volevo postare compiti.... non sono più studente da molti anni e non pensavo a questa eventualità!!
volevo solo fornire del codice di esmpio da studiare!!
Scusate ancora.
volevo solo fornire del codice di esmpio da studiare!!
Scusate ancora.

Ah, ma non c'e' niente per cui scusarsi
. Era un'informazione sullo spirito di questo forum.

Non conosco il visualbasic, pero' vediamo se riesco a darti ugualmente una mano.
Hai un interfaccia grafica con 2 pulsanti e due caselle numeriche.
I due pulsanti saranno legati a due funzioni, di cui il nome di queste funzioni sara' specificato da te nelle proprieta' dell'oggetto pulsante.
Mentre le due caselle numeriche avranno un nome sempre assegnato dalle proprieta' dell'oggetto e chiamate opportunamente casella_parametro e casella_risultato.
Supponiamo che il pulsante che deve restituirti l'area del quadrato hai assegato una funzione di nome area_quadrato, mentre all'altro pulsante area_cerchio.
Dove le funzioni leggi_valore e scrivi_valore, cosi' chiamate da me, devi trovare il corrispondente nella guida del VB nella sezione in cui si parla delle interazioni con l'interfaccia grafica.
A presto,
Eugenio
Hai un interfaccia grafica con 2 pulsanti e due caselle numeriche.
I due pulsanti saranno legati a due funzioni, di cui il nome di queste funzioni sara' specificato da te nelle proprieta' dell'oggetto pulsante.
Mentre le due caselle numeriche avranno un nome sempre assegnato dalle proprieta' dell'oggetto e chiamate opportunamente casella_parametro e casella_risultato.
Supponiamo che il pulsante che deve restituirti l'area del quadrato hai assegato una funzione di nome area_quadrato, mentre all'altro pulsante area_cerchio.
Sub area_quadrato lato = leggi_valore(casella_parametro) area = lato * lato scrivi_valore(casella_risultato, area) End Sub
Sub area_cerchio raggio = leggi_valore(casella_parametro) area = raggio * raggio * 3.14 scrivi_valore(casella_risultato, area) End Sub
Dove le funzioni leggi_valore e scrivi_valore, cosi' chiamate da me, devi trovare il corrispondente nella guida del VB nella sezione in cui si parla delle interazioni con l'interfaccia grafica.
A presto,
Eugenio
Studiati questo codice :
su di un form devi mettere questi controlli
- 2 text box chiamate Text1 e Text2
- 2 label chiamate Label1 e Label2
- 2 CommandButton chiamati Command1 e Command2
poi copia questo nel codice
Private Sub Command1_Click()
Text2.Text = AreaQuadrato(Val(Text1.Text))
End Sub
Private Sub Command2_Click()
Text2.Text = AreaCerchio(Val(Text1.Text))
End Sub
Private Sub Form_Load()
Label1.Left = 120
Label1.Top = 120
Label1.Caption = "Lato o raggio"
Label1.AutoSize = True
Label2.Left = 120
Label2.Top = 1800
Label2.Caption = "Risultato"
Label2.AutoSize = True
Text1.Left = 120
Text1.Top = 480
Text1.Text = ""
Text2.Left = 120
Text2.Top = 2200
Text2.Text = ""
Command1.Top = 1000
Command1.Left = 120
Command1.Caption = "Area Quadrato"
Command2.Top = 1000
Command2.Left = 1100
Command2.Caption = "Area Cerchio"
End Sub
Function AreaCerchio(raggio As Single) As Single
AreaCerchio = raggio * raggio * 3.14
End Function
Function AreaQuadrato(lato As Single) As Single
AreaQuadrato = lato * lato
End Function
nota l'uso della funzione per restituire il valore senza farlo passare per una variabile e senza scriverlo direttamente nella textbox.
posso così riutilizare la funzione tutte le volte che voglio.
Spero ti sia di aiuto!
su di un form devi mettere questi controlli
- 2 text box chiamate Text1 e Text2
- 2 label chiamate Label1 e Label2
- 2 CommandButton chiamati Command1 e Command2
poi copia questo nel codice
Private Sub Command1_Click()
Text2.Text = AreaQuadrato(Val(Text1.Text))
End Sub
Private Sub Command2_Click()
Text2.Text = AreaCerchio(Val(Text1.Text))
End Sub
Private Sub Form_Load()
Label1.Left = 120
Label1.Top = 120
Label1.Caption = "Lato o raggio"
Label1.AutoSize = True
Label2.Left = 120
Label2.Top = 1800
Label2.Caption = "Risultato"
Label2.AutoSize = True
Text1.Left = 120
Text1.Top = 480
Text1.Text = ""
Text2.Left = 120
Text2.Top = 2200
Text2.Text = ""
Command1.Top = 1000
Command1.Left = 120
Command1.Caption = "Area Quadrato"
Command2.Top = 1000
Command2.Left = 1100
Command2.Caption = "Area Cerchio"
End Sub
Function AreaCerchio(raggio As Single) As Single
AreaCerchio = raggio * raggio * 3.14
End Function
Function AreaQuadrato(lato As Single) As Single
AreaQuadrato = lato * lato
End Function
nota l'uso della funzione per restituire il valore senza farlo passare per una variabile e senza scriverlo direttamente nella textbox.
posso così riutilizare la funzione tutte le volte che voglio.
Spero ti sia di aiuto!
@Crook:mi blocco su quale comando dover usare x indicare che se si seleziona il cerchio allora l'area deve avere una certa formul,ain caso contrario un'altra......
@Eugenio: grazie 1000 ora provo......
tra poco posto come l'ho fatto..........
@Eugenio: grazie 1000 ora provo......
tra poco posto come l'ho fatto..........
Allora,faccio una legenda dei nomi assegnati:
txt1= la textbox in cui metto il valore del lato
txtris=la textbox del risultato
Opt1= seleziono cerchio
Opt= seleziono quadrato
Private Sub cmd1_Click()
Dim a As Integer
Dim ris As Integer
a = txt1.Text
If Opt1.Value = True Then
ris = a * a * 3.14
Else
If Opt2.Value = True Then
ris = a * a
End If
txtris.Text = ris
End Sub
Cosa sbaglio???
Non funziona!!!
Grazie anke a johnjohn ora lo provo!!!
txt1= la textbox in cui metto il valore del lato
txtris=la textbox del risultato
Opt1= seleziono cerchio
Opt= seleziono quadrato
Private Sub cmd1_Click()
Dim a As Integer
Dim ris As Integer
a = txt1.Text
If Opt1.Value = True Then
ris = a * a * 3.14
Else
If Opt2.Value = True Then
ris = a * a
End If
txtris.Text = ris
End Sub
Cosa sbaglio???
Non funziona!!!
Grazie anke a johnjohn ora lo provo!!!
per peima cosa Txt1.text è una stringa e non un numero e la devi quindi convertire prima di usarla :
a = Val(txt1.Text)
poi sia "a" che "ris" non devono essere integer ma Single soprattutto se moltiblichi per 3.14!!!
If Opt1.Value = True Then
ris = a * a * 3.14
end if
If Opt2.Value = True Then
ris = a * a
End If
hai sbagliato a scrivere gli if.... End if, come ho scritto io è giusto.
Riprova.... ci sei quasi... solo ualche errore di sintassi!!
a = Val(txt1.Text)
poi sia "a" che "ris" non devono essere integer ma Single soprattutto se moltiblichi per 3.14!!!
If Opt1.Value = True Then
ris = a * a * 3.14
end if
If Opt2.Value = True Then
ris = a * a
End If
hai sbagliato a scrivere gli if.... End if, come ho scritto io è giusto.
Riprova.... ci sei quasi... solo ualche errore di sintassi!!
Private Sub cmd1_Click()
Dim a As Single
Dim ris As Single
a = Val(txt1.Text )
If Opt1.Value = True Then
ris = a * a * 3.14
Else
If Opt2.Value = True Then
ris = a * a
End If
End if
txtris.Text = ris
End Sub
Così credo funzioni.. ....... grazie tntss!!
Dim a As Single
Dim ris As Single
a = Val(txt1.Text )
If Opt1.Value = True Then
ris = a * a * 3.14
Else
If Opt2.Value = True Then
ris = a * a
End If
End if
txtris.Text = ris
End Sub
Così credo funzioni.. ....... grazie tntss!!
si... adesso dovrebbe andare ma il secondo if...end if si può togliere.
bravo
bravo
Basta che scrivi
if opt1.value=true then
ris=a^2*3.14
else
ris=a^2
end if
Comunque, VB6 fa la conversione automaticamente, non serve il Val; e, in ogni caso, è più corretto scrivere CSng.
Poi, usare le variabili di tipo single non ha senso, in questo caso, perché hai quelle a precisione doppia, le double.
if opt1.value=true then
ris=a^2*3.14
else
ris=a^2
end if
Comunque, VB6 fa la conversione automaticamente, non serve il Val; e, in ogni caso, è più corretto scrivere CSng.
Poi, usare le variabili di tipo single non ha senso, in questo caso, perché hai quelle a precisione doppia, le double.
Grazie ancora x ttt le info!! ora ho capito!!!!
Essendo all'inizio di Vb6 faccio ancora un pò fatica ad orientarmi.....
Se avete qualke esercizio da proporre,ve ne sarei mlt grata!!!!!!!!!
Essendo all'inizio di Vb6 faccio ancora un pò fatica ad orientarmi.....
Se avete qualke esercizio da proporre,ve ne sarei mlt grata!!!!!!!!!
Ok, allora prova a fare un programma che, inserendo i coefficienti di un polinmio di 2° grado, ne calcoli le radici in $RR$, cioè solo se delta >= 0.
Provo a postare l'esercizio di risoluzione di un'equazione di 2° grado come rikiesto:
Dim a, b, c As Integer
Dim ris1, ris2 As Double
Dim delta As Long
Private Sub cmdcalcola_GotFocus()
a = txta.Text
b = txtb.Text
c = txtc.Text
delta = b ^ 2 - 4 * a * c
If delta < 0 Then
MsgBox "il delta è <0,reinserire i coeff", , "ATTENZIONE"
txta.Text = ""
txtb.Text = ""
txtc.Text = ""
txtris.Text = ""
txta.SetFocus
Else
ris1 = -b + Math.Sqr(delta) / 2 * a
ris2 = -b - Math.Sqr(delta) / 2 * a
End If
txtris.Text = CStr(ris1) & " " & CStr(ris2)
End Sub
Private Sub cmdesci_Click()
End
End Sub
Private Sub txta_Change()
Dim a As Integer
a = txta.Text
If IsNumeric(a) = False Then
MsgBox "si deve inserire un valore numerico", vbCritical, "Attenzione"
Cancel = True
Else
If txta.Text = "" Then
MsgBox "inserire un numero", vbInformation
Cancel = True
End If
End If
End Sub
Private Sub txta_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
txtb.SetFocus
End Select
End Sub
Private Sub txtb_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
txtc.SetFocus
End Select
End Sub
Private Sub txtc_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
cmdcalcola.SetFocus
End Select
End Sub
DITEMI SE è CORRETTO!!!!!
GRAZIEEEEEEEEEE
Dim a, b, c As Integer
Dim ris1, ris2 As Double
Dim delta As Long
Private Sub cmdcalcola_GotFocus()
a = txta.Text
b = txtb.Text
c = txtc.Text
delta = b ^ 2 - 4 * a * c
If delta < 0 Then
MsgBox "il delta è <0,reinserire i coeff", , "ATTENZIONE"
txta.Text = ""
txtb.Text = ""
txtc.Text = ""
txtris.Text = ""
txta.SetFocus
Else
ris1 = -b + Math.Sqr(delta) / 2 * a
ris2 = -b - Math.Sqr(delta) / 2 * a
End If
txtris.Text = CStr(ris1) & " " & CStr(ris2)
End Sub
Private Sub cmdesci_Click()
End
End Sub
Private Sub txta_Change()
Dim a As Integer
a = txta.Text
If IsNumeric(a) = False Then
MsgBox "si deve inserire un valore numerico", vbCritical, "Attenzione"
Cancel = True
Else
If txta.Text = "" Then
MsgBox "inserire un numero", vbInformation
Cancel = True
End If
End If
End Sub
Private Sub txta_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
txtb.SetFocus
End Select
End Sub
Private Sub txtb_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
txtc.SetFocus
End Select
End Sub
Private Sub txtc_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
cmdcalcola.SetFocus
End Select
End Sub
DITEMI SE è CORRETTO!!!!!
GRAZIEEEEEEEEEE
Per la cronaca,l'utente inserisce i coefficienti a,b,c dell'equazione. La textbox di risultato è txtris.
Sì, va bene, mi piace il fatto che premendo Enter ti sposti sull'altro coefficiente
. Vanno riscritti ris1 e ris2, cioè ris1 = (-b-sqr(delta))/(2*a) e ris2 = (-b+sqr(delta))/(2*a). Puoi benissimo omettere il Math. .

Ah!!!! ko allora grazie 10000!!!!!!!!!!!!!!!!
Ne ho un altro da proporre abbastanza urgente:
dato in input un numero n,mandare in output la somma di tutti i numeri primi da zero a n...
Come faccio a scrivere con Vb i numeri primi??
Può servire la funzione mod??
Grazie a tutti!!!
dato in input un numero n,mandare in output la somma di tutti i numeri primi da zero a n...
Come faccio a scrivere con Vb i numeri primi??
Può servire la funzione mod??
Grazie a tutti!!!
Certo che serve.
L'algoritmo abbastanza efficiente per decidere se un numero è primo:
Usa il classico crivello di Eratostene, andrà bene.
L'algoritmo abbastanza efficiente per decidere se un numero è primo:
Function IsPrime(n as long) as boolean dim i as long if n mod 2 = 0 then IsPrime = false: Exit Function for i=3 to sqr(n) step 2 if n mod i = 0 then IsPrime = false: Exit Function next i IsPrime = true End Function
Usa il classico crivello di Eratostene, andrà bene.