Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    115

    scomporre in potenze di 2

    Qualcuno mi può dare qualche idea su come far scomporre un numero in una somma di potenze del 2?
    (ad esempio vorrei che se io scrivessi 1183 me lo scomponesse come 2^10+2^7+2^4+2^3+2^2+2^1+2^0)

  2. #2
    Prova con queste istruzioni

    nm = 1183
    st$ = ""
    For i = 40 To 0 Step -1
    ' potenze di 2
    potenza2 = 2 ^ i
    If nm >= potenza2 Then
    nm = nm - potenza2
    st$ = st$ + "2^" + Format$(i) + "+"
    End If
    Next i
    ' toglie l'ultimo segno più in eccesso
    st$ = Left$(st$, Len(st$) - 1)
    Print st$

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    115
    Grazie dell'aiuto, il tuo codice funziona benissimo, però solo se mn lo inseirsco io manualmente. Se provo ad assegnare un numero ad mn da textbox invece me lo scompone sempre come 2^40... secondo te cosa sbaglio?
    Questo è il codice come lo ho modificato io...
    in ogni caso grazie tantissimo dell'aiuto

    Private Sub Command1_Click()
    nm = Text1
    st$ = ""
    For i = 40 To 0 Step -1
    ' potenze di 2
    potenza2 = 2 ^ i
    If nm >= potenza2 Then
    nm = nm - potenza2
    st$ = st$ + "2^" + Format$(i) + "+"
    End If
    Next i
    ' toglie l'ultimo segno più in eccesso
    st$ = Left$(st$, Len(st$) - 1)
    Print st$

    End Sub

  4. #4
    Metti una val nella prima istruzione

    nm = Val(Text1.Text)
    st$ = ""
    For i = 40 To 0 Step -1
    ' potenze di 2
    potenza2 = 2 ^ i
    If nm >= potenza2 Then
    nm = nm - potenza2
    If nm = 0 Then Exit For
    st$ = st$ + "2^" + Format$(i) + "+"
    End If
    Next i
    ' toglie l'ultimo segno più in eccesso
    st$ = Left$(st$, Len(st$) - 1)
    Print st$

    In compenso io avevo dimenticato un'istruzione la

    if nm = 0 Then Exit For

    che inseriva in fondo alla stringa sempre e comunque 2^0 anche per
    i numeri pari, adesso dovrebbe funzionare.

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    115
    Ora funziona, però ho tolto

    if nm = 0 Then Exit For

    perchè altrimenti non mi metteva mai il 2^0, senza me lo mette solo per i numeri dispari.

    Grazie tantissimo del tuoi aiuto.

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.