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

    Vb 2008 Albergo e preventivo

    ragazzi devo fare un esercizio dove caricare tipologia stanza, prezzo audlti, e prezzo bambini

    e fin qui penso di esserci
    ho fatto con il Do

    codice:
    Public Class Form1
        Dim Tipologia_Stanza, Scelta As String
        Dim Prezzo_notte_Adulto, Prezzo_Children, Prezzo_tot As Decimal
        Dim Num_notti(100), Num_Adulti(100), Num_Bambini(100) As Integer
        Dim I As Integer
    Do 
    Tipologia_Stanza = InputBox("Inserire tipo stanza") 
    Prezzo_notte_Adulto = InputBox("Inserire Prezzo adulto/notte") 
    Prezzo_Children = InputBox("Inserisci Prezzo bambino/notte") 
    Scelta = InputBox("Inserire un altra tipologia di stanza?") 
    Loop Until Scelta = "no" End Sub
    poi dovrei fare un preventivo, mettendo il numero di notti, prezzi, num adulti e bambini , cose cosi e sto provando cosi:

    codice:
    Private Sub BtnPreventivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPreventivo.Click 
    For J = 0 To I - 1 
    Num_notti(I) = InputBox("Inserisci quante notti soggiorneranno") 
    Tipologia_Stanza = InputBox("inserisci in che tipo di stanza soggiorneranno") 
    Num_Adulti(J) = InputBox("Inserisci quanti sono gli adulti") 
    Num_Bambini(J) = InputBox("Inserisci quanti sono i bambini") 
    Prezzo_notte_Adulto = (Prezzo_notte_Adulto * Num_Adulti(J)) * Num_notti(J) 
    
    Prezzo_Children = (Prezzo_Children * Num_Bambini(J)) * Num_notti(J) 
    Prezzo_tot = Prezzo_Children + Prezzo_notte_Adulto 
    Next
     MsgBox(Prezzo_tot) 
    End Sub
     End Class
    sicuramente ho sbagliato qualcosa perchè quando clicco sul bottone mi appare subito 0...

    ho aggiustato provando anche questo col Do

    codice:
    Private Sub BtnPreventivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPreventivo.Click 
    Do 
    Num_notti = InputBox("Inserisci quante notti soggiorneranno", "1") 
    Tipologia_Stanza = InputBox("inserisci in che tipo di stanza soggiorneranno", "2") 
    Num_Adulti = InputBox("Inserisci quanti sono gli adulti", "3") 
    Num_Bambini = InputBox("Inserisci quanti sono i bambini", "4") 
    Prezzo_notte_Adulto = (Prezzo_notte_Adulto * Num_Adulti) * Num_notti 
    Prezzo_Children = (Prezzo_Children * Num_Bambini) * Num_notti 
    Prezzo_tot = Prezzo_Children + Prezzo_notte_Adulto MsgBox(Prezzo_tot) 
    Scelta = InputBox("inserire un altro preventivo?") 
    Loop Until Scelta = "no" 
    End Sub 
    End Class
    sembra che funziona, almeno la prima volta, le volte dopo escono numeri troppo grandi..

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Il calcolo non l'ho controllato, ma mi sembra che dia un risultato diverso da zero (a meno che non sia l'utente ad inserire zero da tastiera). Quello che mi fa pensare è che tu inizi il For così: For J = 0 To I - 1 , ma I non è inizializzata da nessuna parte...


    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
    no non esce e ora ho anche cambiato..

    codice:
    Public Class Form1
    Dim Tipologia_Stanza(3), Scelta As String Dim Prezzo_notte_Adulto(3), Prezzo_Children(3), Prezzo_tot As Decimal 
    Dim Num_notti(100), Num_Adulti(100), Num_Bambini(100), Somma As Integer 
    Dim I, N As Integer 
    
    Private Sub BtnPreventivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPreventivo.Click  
    Somma = 0 
    Tipologia_Stanza(I) = InputBox("inserisci in che tipo di stanza soggiorneranno", "2") 
    Do
    Num_Adulti(I) = InputBox("Quanti adulti ci sono?") 
    Num_Bambini(I) = InputBox("Quanti bambini ci sono?") 
    Num_notti(I) = InputBox("Quante notti soggiorneranno?") 
    If Tipologia_Stanza(I) = "Normal" Then 
    Somma = (Prezzo_Children(1) * Num_Bambini(I)) + (Prezzo_notte_Adulto(1) * Num_Adulti(I)) * Num_notti(I) 
    MsgBox(Somma) 
    End If 
    I = I + 1 
    Scelta = InputBox("Inserire altri?")
    Loop Until Scelta = "no" End Sub
    
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    I = 0 
    For I = 0 To N - 1 
    Tipologia_Stanza(1) = "Normal" 
    Tipologia_Stanza(2) = "Suite" 
    Tipologia_Stanza(3) = "ExtraSuite" 
    Prezzo_notte_Adulto(1) = "40" 
    Prezzo_notte_Adulto(2) = "80" 
    Prezzo_notte_Adulto(3) = "120" 
    Prezzo_Children(1) = "20" 
    Prezzo_Children(2) = "40" 
    Prezzo_Children(3) = "80" 
    Next
    End Sub 
    End Class
    come mi ha detto la mia prof ho messo in 3 listbox i dati
    e nel form load li ho caricati
    però poi per fare il preventivo è gisuto come ho fatto?..però esce 0..

  4. #4
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ciao.

    Andiamo per ordine.
    Questo codice non ha molto senso:
    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     I = 0 
     For I = 0 To N - 1 
      Tipologia_Stanza(1) = "Normal" 
      Tipologia_Stanza(2) = "Suite" 
      Tipologia_Stanza(3) = "ExtraSuite" 
      Prezzo_notte_Adulto(1) = "40" 
      Prezzo_notte_Adulto(2) = "80" 
      Prezzo_notte_Adulto(3) = "120" 
      Prezzo_Children(1) = "20" 
      Prezzo_Children(2) = "40" 
      Prezzo_Children(3) = "80" 
     Next
    End Sub
    Non ti serve iterare di 0 a N-1, visto che N non è inizializzata e che il codice per riempire gli array non necessita di iterazioni. Secondo me è più corretto fare così:

    codice:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Prezzo_notte_Adulto(0) = 40  'Le virgolette non servono: gli array sono di tipo decimal
      Prezzo_notte_Adulto(1) = 80 
      Prezzo_notte_Adulto(2) = 120 
      Prezzo_Children(0) = 20
      Prezzo_Children(1) = 40 
      Prezzo_Children(2) = 80 
    End Sub
    Inoltre in VB.NET gli array sono in base zero, quindi nel tuo caso gli array dei prezzi vanno dichiarati come di indice 2 (Tipologia_Stanza(2)) perchè gli array conterranno gli elementi di indice 0, 1, 2.

    Anche il codice che genera il preventivo va rivisto:
    codice:
    Tipologia_Stanza(I) = InputBox("inserisci in che tipo di stanza soggiorneranno", "2")
    Questa riga non ha senso: hai già riempito l'array di Tipologia_Stanza. Io riscriverei tutto così:
    codice:
    Private Sub BtnPreventivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPreventivo.Click  
    I = 0
    Dim IndiceStanza As Short = 0
    Do
    Somma = 0 
    IndiceStanza = 0
    
    Num_Adulti(I) = InputBox("Quanti adulti ci sono?") 
    Num_Bambini(I) = InputBox("Quanti bambini ci sono?") 
    Num_notti(I) = InputBox("Quante notti soggiorneranno?") 
    IndiceStanza = CInt(InputBox("In che tipo di stanza soggiorneranno (0 = Normal; 1 = Suite; 2 = ExtraSuite)?"))
    
    Somma = (Prezzo_Children(IndiceStanza) * Num_Bambini(I)) + (Prezzo_notte_Adulto(IndiceStanza) * Num_Adulti(I)) * Num_notti(I) 
    MessageBox.Show(Somma)
    
    I = I + 1 
    Scelta = InputBox("Inserire altri?")
    Loop Until Scelta = "no" End Sub
    Così ho anche eliminato la variabile N e l'array Tipologia_Stanza.
    Spero di esserti stato di aiuto.



    P.S.:Mancano anche la gestione degli errori e il controllo sull'input dell'utente: vedi se vuoi aggiungierli.
    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
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    26
    intanto l'esercizio è formato da 3 punti:

    1) la possibilità di richiedere preventivo per soggiorno dati in input il numero delle notti, la tipologia di stanza, il numero di partecipanti adulti e bambini, considerando che per soggiorni superiori a 7 notti, si applicherà uno sconto del 5% e che i bambini fino a 4 anni di età non pagano (facoltativo).

    2) si preveda la possibilità per l'utente di richiedere il costo per notte di una tipologia di stanza indicata dall'utente

    3) si preveda la possibilità per l'utente di visualizzare l'intero listino a vidseo


    io sono riuscito a fare cosi..e ora vedo cosa mi hai consigliato te, poi se puoi vedere come migliorare o aggiustare ( se serve) quello che ho fatto:

    codice:
    Public Class Form1 Dim Tipologia_Stanza(3), Scelta, RicercaStanza As String 
    Dim Prezzo_notte_Adulto(3), Prezzo_Children(3), Prezzo_tot As Decimal 
    Dim Num_notti(100), Num_Adulti(100), Num_Bambini(100), Somma, Sconto, Eta_bambini(100) As Integer
    Dim I, N As Integer 
    
    Private Sub BtnPreventivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPreventivo.Click Somma = 0 
    Tipologia_Stanza(I) = InputBox("inserisci in che tipo di stanza soggiorneranno", "2") Eta_Bambini(I) = InputBox("Quanti anni hanno i bambini?") 
    Do 
    Num_Adulti(I) = InputBox("Quanti adulti ci sono?") 
    Num_Bambini(I) = InputBox("Quanti bambini ci sono?") 
    Num_notti(I) = InputBox("Quante notti soggiorneranno?") 
    If Tipologia_Stanza(I) = "Normal" Then 
    Somma = (Prezzo_Children(1) * Num_Bambini(I)) * Num_notti(I) + (Prezzo_notte_Adulto(1) * Num_Adulti(I)) * Num_notti(I) 
    If Num_notti(I) > 7 Then Sconto = (Somma * 5) / 100 
    Prezzo_tot = Somma - Sconto 
    MsgBox(Prezzo_tot) 
    Else : MsgBox(Somma) End If ElseIf Tipologia_Stanza(I) = "Suite" 
    Then 
    Somma = (Prezzo_Children(2) * Num_Bambini(I)) * Num_notti(I) + (Prezzo_notte_Adulto(2) * Num_Adulti(I)) * Num_notti(I) 
    If Num_notti(I) > 7 Then Sconto = (Somma * 5) / 100 
    Prezzo_tot = Somma - Sconto 
    MsgBox(Prezzo_tot) 
    Else : MsgBox(Somma) 
    EndIf 
    ElseIf Tipologia_Stanza(I) = "ExtraSuite" Then 
    Somma = (Prezzo_Children(3) * Num_Bambini(I)) * Num_notti(I) + (Prezzo_notte_Adulto(3) * Num_Adulti(I)) * Num_notti(I)
    If Num_notti(I) > 7 Then Sconto = (Somma * 5) / 100 
    Prezzo_tot = Somma - Sconto 
    MsgBox(Prezzo_tot) 
    Else : MsgBox(Somma) 
    End If
    End If 
    Scelta = InputBox("Inserire altri?") 
    I = I + 1 
    Loop Until Scelta = "no" 
    End Sub 
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Tipologia_Stanza(1) = "Normal" 
    Tipologia_Stanza(2) = "Suite" 
    Tipologia_Stanza(3) = "ExtraSuite" 
    Prezzo_notte_Adulto(1) = "40" 
    Prezzo_notte_Adulto(2) = "80" 
    Prezzo_notte_Adulto(3) = "120" 
    Prezzo_Children(1) = "20" 
    Prezzo_Children(2) = "40" 
    Prezzo_Children(3) = "80" 
    End Sub 
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    ListBox1.Items.Add("Normal") 
    ListBox1.Items.Add("Suite") 
    ListBox1.Items.Add("ExtraSuite") 
    ListBox2.Items.Add("40") 
    ListBox2.Items.Add("80") 
    ListBox2.Items.Add("120") 
    ListBox3.Items.Add("20") 
    ListBox3.Items.Add("40") 
    ListBox3.Items.Add("80") 
    End Sub 
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    RicercaStanza = InputBox("Richiedi tipologia di stanza che si desidera") 
    If RicercaStanza = Tipologia_Stanza(1) 
    Then 
    MsgBox(Prezzo_notte_Adulto(1)) 
    MsgBox(Prezzo_Children(1))
    ElseIf 
    RicercaStanza = Tipologia_Stanza(2) 
    Then 
    MsgBox(Prezzo_notte_Adulto(2)) 
    MsgBox(Prezzo_Children(2)) 
    ElseIf 
    RicercaStanza = Tipologia_Stanza(3) 
    Then MsgBox(Prezzo_notte_Adulto(3)) 
    MsgBox(Prezzo_Children(3)) 
    End If 
    End Sub
    End Class
    non ho usato molto il For perchè mi usciva 0 sennò..

  6. #6
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ciao

    Form1_Load, Button1_Click e Button2_Click vanno bene. Per il preventivo invece c'è ancora da fare. Non so se hai già apportato delle correzioni rispetto all'originale, ma se lo hai già corretto c'è ancora da lavorare. Ti dò qualche indizio: è inutile andare a riempire Tipologia_Stanza(I) con la stanza scelta dall'utente perchè quell'array lo hai già riempito. Inoltre, se quella è tutta la consegna dell'esercizio, non c'è bisogno di usare Num_Notti, Num_Adulti e Num_Bambini come array: basta che dichiari tre variabili e di volta in volta li azzeri, così:

    codice:
    Public Class Form1
     Dim Prezzo_notte_Adulto(3), Prezzo_Children(3), Prezzo_tot As Decimal 
     Dim Num_notti, Num_Adulti, Num_Bambini, Somma, Sconto, Eta_bambini As Integer
     Dim I As Integer 
    
     Private Sub BtnPreventivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPreventivo.Click
      Dim Tipo_Stanza As Integer = 0
      Somma = 0
      Sconto = 0
    
      Do
       Tipo_Stanza = InputBox("inserisci in che tipo di stanza soggiorneranno", "2") 
       Eta_Bambini = InputBox("Quanti bambini hanno meno di quattro anni?") 
       Num_Adulti = InputBox("Quanti adulti ci sono?") 
       Num_Bambini = InputBox("Quanti bambini ci sono?") 
       Num_notti = InputBox("Quante notti soggiorneranno?") 
    
       If Tipo_Stanza = "Normal" Then 
        Somma = (Prezzo_Children(1) * Num_Bambini) * Num_notti + (Prezzo_notte_Adulto(1) * Num_Adulti) * Num_notti 
        If Num_notti > 7 Then 
         Sconto = (Somma * 5) / 100 
         Prezzo_tot = Somma - Sconto 
         MsgBox(Prezzo_tot) 
        Else
         MsgBox(Somma) 
        End If
       End if
       'Fai tutto il resto che devi fare.
      Loop Until Scelta = "no" 
     End Sub 
    End Class
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    26
    ok Grazie 1000, ora provo

    allora
    1) ma non c'è un modo per mettere if tipo_stanza = "normal" or "suite" or "extra suite"....? perchè la mia prof in laboratorio aveva scritto cosi..
    magari viene più corto in questo modo

    2) cmq piu o meno è come ho fatto io o sbaglio..?

    e poi quello dei bambini minori di 4 anni io lo immaginavo più come una sottrazione, cioè se ci sono 2 bambini di 3 anni togliere il prezzo...
    invece te chiedi prima quanti sono i minori di 4 anni e poi in base a questo dato metti quanti sono i bambini che pagano giusto?

  8. #8
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da mat7e0
    ok Grazie 1000, ora provo

    allora
    1) ma non c'è un modo per mettere if tipo_stanza = "normal" or "suite" or "extra suite"....? perchè la mia prof in laboratorio aveva scritto cosi..
    magari viene più corto in questo modo.
    Io ho scritto solo il gestore se l'utente inserisce "normal", gli if che controllano il suite o l'extra suite li lascio scrivere a te.

    Originariamente inviato da mat7e0
    2) cmq piu o meno è come ho fatto io o sbaglio..?
    Non sbagli, più o meno siamo lì.

    Originariamente inviato da mat7e0
    e poi quello dei bambini minori di 4 anni io lo immaginavo più come una sottrazione, cioè se ci sono 2 bambini di 3 anni togliere il prezzo...
    invece te chiedi prima quanti sono i minori di 4 anni e poi in base a questo dato metti quanti sono i bambini che pagano giusto?
    Esatto.

    Buon lavoro.

    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    26
    si però io intedevo se è possibile scrivere tutto in un if solo..senza fare 3000 if.....

  10. #10
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ba... usa ElseIf senza aprire tutti gli if, ma altre soluzioni non mi vengono in mente.

    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

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 © 2025 vBulletin Solutions, Inc. All rights reserved.