Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    26

    Risolvere equazioni di primo grado

    Devo fare un programma che mi permetta di risolvere equazioni di primo grado con il Do, quindi alla fine dare la possibilità di termianre o risolvere una nuova equazione....potete dirmi se cosi è giusto?.....

    codice:
    Public Class Form1     
    Dim a, b, x, I As Integer     
    Dim Scelta As String      
    Private Sub BtnCarica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCarica.Click         
    I = 0         
    Do             
    a = InputBox("inserisci coefficinete")             
    b = InputBox("insierisci coefficente b")             
    x = a / b             
    Scelta = InputBox("Continuare? (Si/No)")          
    Loop Until Scelta = "No"         
    MsgBox(x)    
    End Sub 
    End Class

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Sostanziamente è corretto, tuttavia alcune cose non mi tornano:
    codice:
    a = InputBox("inserisci coefficinete")         'Occhio: come si scrive coefficente??
    b = InputBox("insierisci coefficente b")
    Perchè dichiari la variabile I, che poi non usi??

    Ti consiglio di mettere il MessageBox.Show all'interno del Do...Loop. Inoltre, visto che sono in argomento, aprofitto per spronarti ad usare MessageBox.Show invece del vecchio MsgBox di vb6: ora stai usando il .NET, quindi attieniti alle sue direttive.


    ...potete dirmi se cosi è giusto?...
    Prima ti ho risposto perchè mi piace aiutare, ma questo non è il modo giusto per usare un forum. Sono contento che tu abbia sviluppato il tuo codice, ma limitarsi a postarlo su un forum e chiedere di correggerlo è un po'generico: se funziona allora vuol dire che hai fatto il lavoro in modo corretto, quindi non serve postare (a parte qualche svista che puoi correggere anche tu); se non funziona allora posta pure e scrivi cosa c'è che non va.
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    26
    ok grazie 1000 ..si lo so..però in effetti ecco il problema se emtto x=a/b mi fa la divisione e quindi se faccio 1/1 vabbè esce 1 ma se metto per es. 2/7 esce 0....quindi come faccio a far apparire 2/7?

  4. #4
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Secondo me basta mettere un If: controlli se x è minore di zero. In tal caso il MessageBox conterrà a/b, altrimenti conterrà x.
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  5. #5

    Re: Risolvere equazioni di primo grado

    Originariamente inviato da mat7e0
    Devo fare un programma che mi permetta di risolvere equazioni di primo grado con il Do, quindi alla fine dare la possibilità di termianre o risolvere una nuova equazione....potete dirmi se cosi è giusto?.....

    codice:
    Public Class Form1     
    Dim a, b, x, I As Integer     
    Dim Scelta As String      
    Private Sub BtnCarica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCarica.Click         
    I = 0         
    Do             
    a = InputBox("inserisci coefficinete")             
    b = InputBox("insierisci coefficente b")             
    x = a / b             
    Scelta = InputBox("Continuare? (Si/No)")          
    Loop Until Scelta = "No"         
    MsgBox(x)    
    End Sub 
    End Class
    Quanti errori/inesattezze..

    Partiamo da un presupposto: non devi risolvere un'equazione ma semplicemente devi svolgere una divisione tra 2 numeri dati in input.

    Partiamo dalle 3 inesattezze principali:

    1. la variabile I è inizializzata ma non utilizzata, per quale motivo l'hai inserita?
    2. perchè le variabili a,b,x,I sono state dichiarate fuori dalla procedura, pur essendo il loro utilizzo esclusivamente di tipo "privato"?
    3. Il MsgBox è fuori dal ciclo Do, per cui ti restituirà solamente il risultato dell'ultima operazione effettuata.


    Ecco gli errori:

    1. la funzione InputBox restituisce un dato di tipo String, mentre te lo utilizzi come dato Integer: capisco che VB fa il cast implicito dei tipi di dati, ma per correttezza formale sarebbe necessario trasformare il dato stringa in numerico

    2. hai dichiarato le variabili come Integer: se l'utente desiderasse inserire un numero con la virgola cosa succederebbe?

    3. totale assenza della gestione degli errori: se l'utente per sbaglio non inserisce un dato, oppure lo inserisce con un carattere non valido (es. 123a), il programma non è pronto a rispondere a tale evenienza.


    Conclusioni: ti consiglio di riscrivere questo codice facendo attenzione ai punti che ti ho mostrato; anche se non stai scrivendo un software per un dispositivo embedded critico, attenersi alle buone regole di programmazione e correttezza formale è sempre consigliabile.

    Sono a disposizione per ulteriori chiarimenti.


    Ciao


    PS: la prossima volta nel titolo inserisci il linguaggio (e la versione..)

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    26
    Originariamente inviato da ShaleN
    Secondo me basta mettere un If: controlli se x è minore di zero. In tal caso il MessageBox conterrà a/b, altrimenti conterrà x.
    non ho ben cpaito cosa intendi..però facendolo non esce cmq come vorrei che uscisse io, cioè per es. 7/5 sette quinti..e no sette diviso 5 = ....

    Originariamente inviato da MdE2005
    Quanti errori/inesattezze..

    Partiamo da un presupposto: non devi risolvere un'equazione ma semplicemente devi svolgere una divisione tra 2 numeri dati in input.

    Partiamo dalle 3 inesattezze principali:

    1. la variabile I è inizializzata ma non utilizzata, per quale motivo l'hai inserita?
    2. perchè le variabili a,b,x,I sono state dichiarate fuori dalla procedura, pur essendo il loro utilizzo esclusivamente di tipo "privato"?
    3. Il MsgBox è fuori dal ciclo Do, per cui ti restituirà solamente il risultato dell'ultima operazione effettuata.


    Ecco gli errori:

    1. la funzione InputBox restituisce un dato di tipo String, mentre te lo utilizzi come dato Integer: capisco che VB fa il cast implicito dei tipi di dati, ma per correttezza formale sarebbe necessario trasformare il dato stringa in numerico

    2. hai dichiarato le variabili come Integer: se l'utente desiderasse inserire un numero con la virgola cosa succederebbe?

    3. totale assenza della gestione degli errori: se l'utente per sbaglio non inserisce un dato, oppure lo inserisce con un carattere non valido (es. 123a), il programma non è pronto a rispondere a tale evenienza.


    Conclusioni: ti consiglio di riscrivere questo codice facendo attenzione ai punti che ti ho mostrato; anche se non stai scrivendo un software per un dispositivo embedded critico, attenersi alle buone regole di programmazione e correttezza formale è sempre consigliabile.

    Sono a disposizione per ulteriori chiarimenti.


    Ciao


    PS: la prossima volta nel titolo inserisci il linguaggio (e la versione..)
    alla faccia che era tutto giusto shalen xD (scherzo eh )..comunque mi puoi speigare proprio quella cosa che hai detto , se per caso clicco annulla o inserisoc valori errati non sa come gestirli e si annulla...quindi cosa devo aggiungere perchè sia tutto regolare?

    per il fatto delle variabili poste come interi mah non lo trovo del tutto errato perchè almeno io finore nelle equazioni non ho mai incontrato numeri con la virgola..mm o.O

  7. #7
    Originariamente inviato da mat7e0
    per il fatto delle variabili poste come interi mah non lo trovo del tutto errato perchè almeno io finore nelle equazioni non ho mai incontrato numeri con la virgola..mm o.O
    Certo, in questo caso si, però in teoria quando si usano tipi di dati numerici è buona regola tener conto di tale evenienza.
    Per la gestione degli errori: prendiamo la variabile a; se l'utente preme annulla, la variabile rimane vuota, oppure se l'utente inserisce un carattere si hanno errori. Io risolverei con qualcosa del genere:
    codice:
    myinput:
    a = inputbox ("inserisci numero")
    if a = "" or isnumeric(a) = false then goto myinput
    in modo tale da far reinserire all'utente il valore del coefficiente.

    Stesso discorso per la 2° variabile.

    Finisco con:
    codice:
    x = CInt(a) / CInt(b)

    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    26
    Originariamente inviato da MdE2005
    Certo, in questo caso si, però in teoria quando si usano tipi di dati numerici è buona regola tener conto di tale evenienza.
    Per la gestione degli errori: prendiamo la variabile a; se l'utente preme annulla, la variabile rimane vuota, oppure se l'utente inserisce un carattere si hanno errori. Io risolverei con qualcosa del genere:
    codice:
    goto input:
    a = inputbox ("inserisci numero")
    if a = "" or isnumeric(a) = false then goto input
    in modo tale da far reinserire all'utente il valore del coefficiente.

    Stesso discorso per la 2° variabile.

    Finisco con:
    codice:
    x = CInt(a) / CInt(b)

    Ciao
    ok grazie ma quel x=cint...a che serve? semrpe che mi esce il risultato finale..

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da MdE2005
    Per la gestione degli errori: prendiamo la variabile a; se l'utente preme annulla, la variabile rimane vuota, oppure se l'utente inserisce un carattere si hanno errori. Io risolverei con qualcosa del genere:
    codice:
    goto input:
    a = inputbox ("inserisci numero")
    if a = "" or isnumeric(a) = false then goto input
    Non serve a niente se la variabile a è di tipo Integer, se l'utente preme annulla o se preme OK senza digitare niente si solleverà comunque un'eccezione.
    Devi modificare anche la variabile a da tipo Integer a tipo String
    Sbagliare è umano, perseverare è diabolico.

  10. #10
    Ho modificato il codice perché avevo usato una etichetta errata.
    La funzione InputBox ritorna dati String, ecco perché devi dichiarare a come String; CInt serve solo a convertirla ad Integer.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.