Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente bannato
    Registrato dal
    Feb 2000
    Messaggi
    2,006

    numeri consecutivi nel vettore

    ho un array ORDINATO che contiene i numeri 1 2 3 4 5 6


    come faccio a sapere se sono sequenziali??? (un po come se dovessi verificare se ho fatto scala nel poker

  2. #2
    codice:
    Function controlaCons(arr() As Integer) As Boolean
       For i = LBound(arr) + 1 To UBound(arr)
          If arr(i) - arr(i - 1) > 1 Then
             controlaCons = False
             Exit Function
          Else
             controlaCons = True
          End If
       Next i
    End Function
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    Io farei così(spero non sia una c@##@ta!)

    codice:
    valore = vettore(0)
    For i = Lbound(vettore) to Ubound(vettore)
        If valore <> vettore(i) Then Exit For
        valore = valore + 1
    Next i
    If i < Ubound(vettore)+1 then 'non erano consecutivi!

  4. #4
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    no..
    al primo non consecutivo finisce si verifica la condizione dell'If ed esce dal ciclo con l'exit for..


  5. #5
    Originariamente inviato da Gigi84
    no..
    al primo non consecutivo finisce si verifica la condizione dell'If ed esce dal ciclo con l'exit for..

    si avevo sbagliato a leggere cmq ci impiega lo stesso tempo
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  6. #6
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    si ..infatti + o - è la stesa cosa..!

    ..non mi ero accorto che qlcuno aveva già postato!!:gren:



  7. #7
    giusto perchè così sa quale scegliere

    codice:
    Private Declare Function GetTickCount Lib "kernel32" () As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Private Sub Form_Load()
       Dim arr() As Integer
       ReDim arr(30000) As Integer
       For l = 0 To 30000
          If l = 20000 Then
             arr(l) = l + 4
          Else
             arr(l) = l
          End If
       Next
       Debug.Print controlaCons1(arr)
       Sleep 2000
       Debug.Print controlaCons(arr)
    End Sub
    
    Function controlaCons(arr() As Integer) As Boolean
       time1 = GetTickCount
       For i = LBound(arr) + 1 To UBound(arr)
          If arr(i) - arr(i - 1) > 1 Then
             controlaCons = False
             Exit For
          Else
             controlaCons = True
          End If
       Next i
       time2 = GetTickCount
       MsgBox (time2 - time1) / 1000
    End Function
    Function controlaCons1(vettore() As Integer) As Boolean
       time1 = GetTickCount
       valore = vettore(0)
       For i = LBound(vettore) To UBound(vettore)
           If valore <> vettore(i) Then Exit For
           valore = valore + 1
       Next i
       If i < UBound(vettore) + 1 Then
          controlaCons1 = False
       Else
          controlaCons1 = True
       End If
       time2 = GetTickCount
       MsgBox (time2 - time1) / 1000
    End Function
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  8. #8
    Utente bannato
    Registrato dal
    Feb 2000
    Messaggi
    2,006
    io ho risolto così....(per un vettore di lunghezza 5)

    codice:
    For i = 2 To 5
                    app1 = i - 1
                    app = vett4(app1) + 1
                    If app = vett4(i) Then 
                                          cons = true
                                      else
                                          cons = false
                                          exit sub
                    end if
    Next i
    if cons = true then msgbox("consecutivi")
    sembra funzionare.....

  9. #9
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    vedi che alla fine te ne sei creato uno tu!:gren:

    per xegallo:
    ( ) i due metodi sembrano uguali (mi veniva a tutti e due 0,05) allora ho provato a dimensionare il vettore a 30000000 (trenta mille mila.. ah.. numeri che fanno girare la testa.!) e il tuo è più veloce di cirva un decimo di secondo 6,3 contro 6,4!! chissa perchè poi!(sarà perche io incremento anche una variabile??)


    ciao!!

  10. #10
    Originariamente inviato da Gigi84
    vedi che alla fine te ne sei creato uno tu!:gren:

    per xegallo:
    ( ) i due metodi sembrano uguali (mi veniva a tutti e due 0,05) allora ho provato a dimensionare il vettore a 30000000 (trenta mille mila.. ah.. numeri che fanno girare la testa.!) e il tuo è più veloce di cirva un decimo di secondo 6,3 contro 6,4!! chissa perchè poi!(sarà perche io incremento anche una variabile??)


    ciao!!
    è già :mavieni: :mavieni:
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

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.