Differenze tra le versioni di "Verificare se un numero è una potenza di 2"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
Per verificare se un numero è una potenza di 2, si può utilizzare il seguente codice:
+
Per verificare se un numero è una potenza di 2, si possono utilizzare almeno le seguenti due modalità.
  '''Public''' Sub Main()
+
 
 +
 
 +
====Prima modalità====
 +
  Public Sub Main()
 
    
 
    
  Dim numero, m, c As Integer
+
  Dim numero, m, c As Integer
  Dim s1, s2 As String
+
  Dim s1, s2 As String
 
    
 
    
    m = 1
+
  m = 1
    numero = 16
+
  numero = 16
 
   
 
   
    While m > 0
+
  While m > 0
      If (numero And m) > 0 Then
+
    If (numero And m) > 0 Then
        Inc c
+
        Inc c
      Endif
+
    Endif
        m = m * CInt(2 * 1)
+
      m = m * CInt(2 * 1)
    Wend
+
  Wend
 
    
 
    
    s1 = "Il numero " & numero
+
  s1 = "Il numero " & numero
    s2 = " è una potenza di 2"
+
  s2 = " è una potenza di 2"
 
    
 
    
    If c = 1 Then
+
  If c = 1 Then
      Print s1; s2
+
    Print s1; s2
    Else
+
  Else
      Print s1; " non"; s2
+
    Print s1; " non"; s2
    Endif
+
  Endif
 
    
 
    
  '''End'''
+
  End
 +
 
 +
 
 +
 
 +
====Seconda modalità====
 +
Public Sub Main()
 +
 
 +
  Dim numero As Integer
 +
  Dim s As String
 +
 
 +
  s = " è una potenza di 2"
 +
 
 +
  numero = 16
 +
 
 +
  Print IIf(Frac(Log2(numero)) = 0, numero & s, numero & " non" & s)
 +
   
 +
End

Versione attuale delle 17:02, 1 lug 2024

Per verificare se un numero è una potenza di 2, si possono utilizzare almeno le seguenti due modalità.


Prima modalità

Public Sub Main()
 
  Dim numero, m, c As Integer
  Dim s1, s2 As String
 
  m = 1
  numero = 16

  While m > 0
    If (numero And m) > 0 Then
       Inc c
    Endif
      m = m * CInt(2 * 1)
  Wend
 
  s1 = "Il numero " & numero
  s2 = " è una potenza di 2"
 
  If c = 1 Then
    Print s1; s2
  Else
    Print s1; " non"; s2
  Endif
  
End


Seconda modalità

Public Sub Main()
 
  Dim numero As Integer
  Dim s As String
 
  s = " è una potenza di 2"
 
  numero = 16
  
  Print IIf(Frac(Log2(numero)) = 0, numero & s, numero & " non" & s)
   
End