Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    9

    [VB6] Esercizio di scuola un pò complicato...

    Sono Chiara, avrei bisogno di un aiuto per un esercizio scolastico..
    Allora il problema sarebbe questo (non so come la prof se li inventi):

    'Dati n valori in sequenza, sommare e contare quelli di posto pari;
    'sommare e contare quelli di posto dispari.
    Io ho fatto il codice, diciamo che non funziona esattamento come sparavo...Se potete darci un'occhiata e casomai venirci a capo
    Grazie vi metto il codice che ho fatto io...è un pò lungo:
    Private Sub cmdok_Click()
    NV = Val(txtposti.Text)
    App = 0
    Apd = 0

    Do
    Stringa = InputBox("Inserisci il valore", "Richiesta valore")
    V = Val(Stringa)
    C = C + 1

    Dim intNumero As Double
    If Len(Stringa) > 0 Then
    intNumero = (Stringa)
    If intNumero Mod 2 = 0 Then
    V = Np
    Else
    V = Nd
    End If
    End If

    If V = Np Then
    Npp = Npp + 1
    Else
    If V = Nd Then
    Npd = Npd + 1
    End If
    End If
    App = App + Np
    Apd = Apd + Nd
    Loop Until C = NV
    Spp = App
    Spd = Apd
    lblrisultato.Caption = " La somma dei posti pari è " & Spp & " , " & " la somma dei posti dispari è " & Spd & " , " & " il numero di posti pari è " & Spp & " , " & " il numero dei posti dispari è " & Npd
    End Sub

    Spero di averlo messo dalla parte giusta sta volta

  2. #2
    Io la semplificherei così:

    Private Sub cmdok_Click()
    dim Stringa as string
    dim NV as integer
    dim Valore as double
    dim nPari as integer
    dim nDispari as integer
    dim sommaPari as double
    dim sommaDispari as double

    NV = Val(txtposti.Text)

    Do
    Stringa = InputBox("Inserisci il valore", "Richiesta valore")
    Valore = Val(Stringa)

    If Len(Stringa) > 0 Then
    If valore Mod 2 = 0 Then
    nPari=nPari+1
    sommaPari=sommaPari + valore
    Else
    nDispari=nDispari+1
    sommaDispari=sommaDispari + valore
    End If
    End If
    Loop Until C = NV

    lblrisultato.Caption = " La somma dei posti pari è " & sommaPari & " , " & " la somma dei posti dispari è " & sommaDispari & " , " & " il numero di posti pari è " & nPari & " , " & " il numero dei posti dispari è " & nDispari
    End Sub

    Questo dando per scontato che non avete ancora studiato gli array.....altrimenti il discorso cambia radicalmente.


    Facci sapere....
    Ciao.

  3. #3
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    il codice di Jeremy conta e somma i valori pari e dispari, mentre a quanto ho capito, viene richiesto che si sommino e si contino i valori di posto pari o dispari.

    Il codice di chiara è un po' confusionario, sia nelle dichiarazioni che nell'uso delle variabili appropriate.

    Così dovrebbe funzionare:

    codice:
    Dim nValori As Integer
    Dim i As Integer
    Dim ValoreAttuale As String
    Dim nDispari As Integer
    Dim nPari As Integer
    Dim sumDispari As Integer
    Dim sumPari As Integer
    Dim msgFinale As String
    
    nValori = 5
    
    For i = 1 To nValori
    
        'Chiedo il valore all'utente
        ValoreAttuale = InputBox("Inserisci il valore n. " & i, "Inserimento Dati")
    
        'Se viene premuto annulla viene mostrato un messaggio
        ' di errore e la procedura termina
        If Trim(Len(ValoreAttuale)) = 0 Then
            MsgBox "Serie incompleta"
            Exit Sub
        End If
    
        If i Mod 2 = 0 Then
    
            ' se il posto corrente è pari, lo conto e sommo
            nPari = nPari + 1
            sumPari = sumPari + CInt(ValoreAttuale)
        Else
    
            ' il posto corrente è dispari, lo conto e sommo
            nDispari = nDispari + 1
            sumDispari = sumDispari + CInt(ValoreAttuale)
        End If
    Next
    
    'Costruisco il messaggio finale con i valori ottenuti
    
    msgFinale = "La somma dei posti pari è " & sumPari & vbCrLf
    msgFinale = msgFinale & "Il numero dei posti pari è " & nPari & vbCrLf
    msgFinale = msgFinale & "La somma dei posti dispari è " & sumDispari & vbCrLf
    msgFinale = msgFinale & "Il numero dei posti dispari è " & nDispari
    
    MsgBox msgFinale
    Consiglio a chiara di analizzare bene il codice, confrontandolo con il proprio per capirne eventuali differenze.
    Se qualcosa non è chiara sono a disposizione per ulteriori spiegazioni.

    Boolean

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    9
    Grazie davvero a tutti
    Sono riuscita a fare l'esercizio con questo codice:
    'Dati n valori in sequenza, sommare e contare quelli di posto pari;
    'sommare e contare quelli di posto dispari.
    'Dati di input:
    'Valori V, Numero dei valori NV, Stringa Stringa
    Dim V, NV As Integer
    Dim Stringa As String
    'Dati di output:
    'Somma dei posti pari Spp, Somma dei posti di dispari Spd,
    'Numero posti pari Npp, Numero posti dispari Npd
    Dim Spp, Spd, Npp, Npd As Integer
    'Variabili di lavoro:
    'Contatore C, Accumulatore posti pari App, Accumulatore posti dispari Apd,
    Dim C, App, Apd As Integer

    Private Sub cmdesci_Click()
    End
    End Sub

    Private Sub cmdok_Click()
    NV = Val(txtposti.Text)
    App = 0
    Apd = 0

    Do
    Stringa = InputBox("Inserisci il valore", "Richiesta valore")
    V = Val(Stringa)
    C = C + 1
    Dim intNumero As Double
    If Len(Stringa) > 0 Then
    intNumero = (Stringa)
    If intNumero Mod 2 = 0 Then
    App = App + V
    Npp = Npp + 1
    Else
    Apd = Apd + V
    Npd = Npd + 1
    End If
    End If
    Loop Until C = NV
    Spp = App
    Spd = Apd
    lblrisultato.Caption = " La somma dei posti pari è " & Spp & " , " & " la somma dei posti dispari è " & Spd & " , " & " il numero di posti pari è " & Npp & " , " & " il numero dei posti dispari è " & Npd
    End Sub

    Grazie ancora

  5. #5
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Queste dichiarazioni:

    codice:
    Dim V, NV As Integer
    Dim Spp, Spd, Npp, Npd As Integer
    Dim C, App, Apd As Integer
    non fanno quello che ti aspetti.

    In Visual Basic 6, ogni variabile deve essere tipizzata direttamente.
    Esempio:
    codice:
    Dim C As Integer, App As Integer, Apd As Integer
    Come hai fatto tu dimensioni solo l'ultima, le altre vengono dichiarate automaticamente come Variant producendo, talvolta, risultati inattesi.

    Non capisco poi il senso di questa dichiarazione:

    codice:
    Dim intNumero As Double
    Quella variabile (come dice anche il prefisso "int"), dovrebbe contenere un intero, che senso ha dichiararlo in doppia precisione?

    Inoltre anche con il tuo codice sommi separatamente i numeri pari e dispari, ma l'esercizio dice di contare i numeri di posto pari e dispari. La soluzione che stai usando, quindi, non soddisfa il quesito.

    Boolean

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    9
    Inoltre anche con il tuo codice sommi separatamente i numeri pari e dispari, ma l'esercizio dice di contare i numeri di posto pari e dispari. La soluzione che stai usando, quindi, non soddisfa il quesito.
    Sono daccordo con te ...la prof alla fine oggi in classe ha detto che bastava contare i numeri pari e dispari, il che è molto differente
    Così il problema secondo la prof viene...tipo se io metto che ci sono 3 posti, 4-5-6,
    Il problema mi dice che ci sono 2 posti pari (4-6) e uno dispari (5) e che la somma dei posti pari mi da 10 e la somma dei posti dispari 5...
    In questo modo viene...Comunque anche la prof poteva spiegarsi meglio e prima
    Chiara

  7. #7
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Beh... la cosa che non capisco è perchè dare l'esercizio con una traccia e poi accontentarsi di una soluzione che, con la traccia, non c'entra nulla...
    Capisco che oggi i professori, forse, ringraziano già per il fatto di avere degli alunni a cui insegnare... ma forse sarebbe meglio anche aspettarsi ciò che si chiede per esercizio...

    Alla fine, fammi capire, come credi di aver svolto il tuo compito? perchè io sinceramente non ho capito cosa hai capito tu

    Boolean

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    9
    Alla fine si è risolto che semplicemente il codice sommava non più i numeri di POSTO PARI ma solo i NUMERI PARI e anche li contava, e così anche per i dispari..
    Chiara

  9. #9
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Ah.. ok...
    Comunque, se vuoi dare un'occhiata al mio codice, fa esattamente quanto richiesto dalla prof.
    Magari puoi prendere spunto per modificare il tuo codice, in fondo basta cambiare la variabile discriminante pari/dispari, sostituendo al numero vero e proprio la variabile contatore.

    Boolean

  10. #10
    Sarà mica che la prof......la traccia la trovata da qualche parte su internet.....è la capita per come l'ho capita io (non ci ha capito un tubo)
    Bha....questi prof.

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.