Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455

    [VB.NET] Problema operazione variabile

    Ciao a tutti, vi spiego subito la situazione:

    Ho una variabile(GameW) che contiene le settimane di un mese (quindi 4) io vorrei che ogni volta che questo valore arriva a 4 venga aggiunto +1 alla variabile dei mesi e che poi vengano sottratti 4 alla variabile delle settimane. Per fare cio' ho applicato questo codice ad un timer (la variabile GMADDTotalWeeks corrisponde al calcolo delle settimane necessarie per svolgere una funzione,questa variabile la richiamerò da qualche altra parte quando mi servirà...) :

    codice:
      GMADDTotalWeeks = (GMADDweeks(1)) + (GMADDweeks(2)) + (GMADDweeks(3)) + (GMADDweeks(4)) + (GMADDweeks(5)) + (GMADDweeks(6)) + (GMADDweeks(7)) + (GMADDweeks(8)) + (GMADDweeks(9)) _
          + (GMADDweeks(10)) + (GMADDweeks(11)) + (GMADDweeks(12)) + (GMADDweeks(13)) + (GMADDweeks(14)) + (GMADDweeks(15)) + (GMADDweeks(16)) + (GMADDweeks(17)) + (GMADDweeks(18))
    
            Module2.gameW = GMADDTotalWeeks
    
            If Module2.gameW = 4 Or Module2.gameW > 4 Then
    
                Module2.gameM += 1
    
                Module2.gameW -= 4
    
            End If
    
     Label2.Text = "Years:" & Module2.gameY & "Months:" & Module2.gameM & "Weeks" & Module2.gameW
    Per quale motivo non funziona? esegue la funzione correttamente solo la prima volta che supero il numero 4.

    edit: dimenticavo la variabile gameM corrisponde ai mesi.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Onestamente, non si è capito nulla...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    In poche parole,

    la variabile GameW ogni volta che supera il valore di 4 deve:

    aggiungere il valore di 1 alla variabile GameM
    sottrarre 4 alla variabile GameW (quindi se stessa)

    il codice che ho usato per fare questa cosa l'ho inserito in un timer.Il codice è questo:

    codice:
            If Module2.gameW = 4 Or Module2.gameW > 4 Then
    
                Module2.gameM += 1 
    
                Module2.gameW -= 4
    
            End If
    la funzione viene eseguita correttamente solo una volta, dopo anche se la variabile supera 4 non succede nulla.

  4. #4
    Semplicemente, immagino che quella lunga somma di valori che fai all'inizio sia una somma di 16 valori ognuno dei quali è un valore da 1 a 4, giusto?

    Allora quello che può succedere è che la loro somma sia per esempio superiore a 8, nel quale caso NON è corretto diminuire di 4 il valore della settimana, nè aumentare di 1 il valore del mese, perchè in realtà andrebbe diminuito di 8 il valore della settimana e aumentato di 2 quello del mese.

    La soluzione corretta è usare

    mese= mese+ int(settimane/4)
    settimana=settimane mod 4

    in questo modo la divisione intera del numero di settimane per 4 ti dirà di quanti mesi interi ti devi spostare, mentre il modulo (ovvero il resto della divisione) per 4 ti dirà le settimane spurie rimanenti.

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    Grazie mille! hai centrato in pieno quello che devo fare.

    La tua soluzione sembra funzionare perfettamente grazie

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.