Novità

Funzione FOR - NEXT - Quadrato Intellettuale

LuigiB;n2049877 ha scritto:
ciao , per fare uscire i numeretti senza lo 0 basta passare False al posto di True alla funzione stringanumeri.
Altra cosa Redim Preserve si fa qunado uno ha un array gia dimensionato ma non della dimensione sufficiente.
Se uno gia sa che vuole avere 3 posizioni nel array basta fare redim aNum(3)

ciao

hai perfettamente raggione .:D:D:D.... provato e funzionante
 
Rompo ancora :)

C'è qualche funzione che permette di fare una addizione di questo tipo
esempio: 67 + 46 = 14 cioè addizionare sia le decine che le unità col fuori 9
 
sicuramente adesso a salvo ( e per me.. non si sa mai) servirà come controllare quando è lunga la stringanumeri

es: 15652 sono 5 115652 sono 6 .....ecc quale fuonzione si puo usare?
 
avio;n2049873 ha scritto:
ciao

ho scaricato Pico della Mirandola. IL QUADRATO ITELLETTUALE

secondo me (mi posso sbagliare) se usi questa funzione g1p1 = StringaNumeri(Num,"",True) per controllare l'esempio che riporta pico della mirandola non ti troverai i numeri uguali ..... perche la funzione tratta i numeretti con "05" o "06" ecc
quando farai la prova fammi sapere se ho raggione o sbaglio

Non l'avevo visto, quando finirò tutto lo posterò, per non fare troppi passaggi adesso mi servirebbe sapere di quella addizione che ho fatto sopra come esempio, 67+46=14
 
Controllare se funziona tutto correttamente
fra tutti i partecipanti sono quello piu inesperto pertanto prendete tutto cosi com è
la funzione somma è quella che ti serviva ? altrimenti si puo riscrivere...
Codice:
Option  Explicit
'Salvo Errori ed Omissis
'Script di esempio per Metodo di Salvo50
 Sub Main

    Dim sNum
    Dim i
    Dim aIns
    Dim aNum(3)
     aNum(1) = 6
    aNum(3) = 45
    aIns = Array(0,35,57,79,92,24,46,68,81,13)
    sNum = GetSnum(aIns,aNum)
     Scrivi "sA:" & sNum
    For i = Len(sNum)-1 To 1 Step - 1
        Scrivi "P" & i & ":" & Piramide(sNum,,i)
    Next
    Scrivi SommaD_U(46,67)' esempio proposto da Salvo
End Sub

Function GetSnum(aIns,aNum)
    aNum(2) = aIns(FuoriX(aNum(1) + aNum(3) + 9,9))
    GetSnum = StringaNumeri(aNum,"")
End Function
Function SommaD_U(N1,N2)
    Dim a,b
    a = FuoriX(Decina(N1) + Decina(N2),9)
    b = FuoriX(Cadenza(N1) + Cadenza(N2),9)
     SommaD_U = Fuori90(a & b)
End Function
 
Ciao se la funzione somma ti è necessaria per sommare anum (1) con aNum (3) dovresti sostituire il fuori 90 con il fuori x ( .....)
se hai dubbi chiedi pure :)
 
Ciao!
mi interessa per il momento solo l'ultima parte questa, ok con pochi passaggi lo faccio, certo i passaggi sarebbero di meno se potessi sfruttare la funzione - Function, ma sinceramente ancora non sono riuscito a capire come funziona, anche se comprendo a cosa serve.
Grazie!
Codice:
 Dim a,b     a = FuoriX(Decina(N1) + Decina(N2),9)     b = FuoriX(Cadenza(N1) + Cadenza(N2),9)
 
Ciao Salvo
Non ho capito bene cosa devi fare la funzione basta chiamrla nel momento che ti occorre
questo è uno script semplificato
Salvo errori ed omissis
per favore contralla se le stringhe e i risultati sono quelli che cercavi
a me è abbastanza veloce ma non so i tempi su un pc vecchiotto
fatemi sapere
Codice:
Option Explicit
'Salvo Errori ed Omissis
'Script di esempio per Metodo di Salvo50
Sub Main
    Dim sNum
    Dim i,k
    Dim aIns:aIns = Array(0,35,57,79,92,24,46,68,81,13)
    Dim aNum(3)
    Dim N1,N2
    For N1 = 1 To 89
        For N2 = N1 + 1 To 90
            aNum(1) = N1
            aNum(3) = N2
            sNum = GetSnum(aIns,aNum)
            Scrivi "sA:" & sNum&"->",1,0,,vbRed
            For i = Len(sNum) - 1 To 1 Step - 1
                Scrivi "P" & i & ":" & Piramide(sNum,,i) & "|",0,0,,vbBlue
            Next
            Scrivi
            k=k+1
            Call AvanzamentoElab(1,4005,k)

        Next

    Next
End Sub
Function GetSnum(aIns,aNum)
    aNum(2) = aIns(SommaD_U(aNum(1),aNum(3))) ' qui utilizzo la funzione
    GetSnum = StringaNumeri(aNum,"")
End Function
Function SommaD_U(N1,N2)
    Dim a,b
    a = FuoriX(Decina(N1) + Decina(N2),9)
    b = FuoriX(Cadenza(N1) + Cadenza(N2),9)
    SommaD_U = FuoriX(a & b,9)
End Function
 
Stò facendo uno script del - Quadrato Intellettuale - di Pico Della Mirandola e stò facendo visualizzare anche le piramidi, adesso sono arrivato a visualizzare anche la seconda piramide, però sono convinto che per esempio, nello script ho inserito 2 volte (per ora due volte poi saranno di più) come assegnare la figura ad una data variabile, penso che con la funzione, function si potrebbe scrivere solo una volta, ti posto lo script con le due piramidi, vedi se riesci a renderlo più snello, adesso sono solo due piramidi ma ne devo fare altre 19, quindi come lo faccio io, alla fine sarà un polpettone mostruoso, può darsi che vedendo come modifichi uno script che faccio io, riesco a capire come fare le function, il secondo script che hai postato, lanciandolo appaiono una lunga serie di numeri che non ho capito cosa sono, ecco il codice
Codice:
Option Explicit
Sub Main
    Dim g1p1,g2p1,fig(2),decnum(3),cadnum(3)
    Dim p1(5),pp1(5),a,fisso1,fisso2,ag2num,bg2num,aag2num,bbg2num
    ReDim g1Num(3)
    ReDim g2Num(3)
    Scrivi
    g1Num(1) = 46
    g1Num(3) = 14
    fig(1) = FuoriX(((g1Num(1) + g1Num(3)) + 9),9)
    If fig(1) = 1 Then g1Num(2) = 35
    If fig(1) = 2 Then g1Num(2) = 57
    If fig(1) = 3 Then g1Num(2) = 79
    If fig(1) = 4 Then g1Num(2) = 92
    If fig(1) = 5 Then g1Num(2) = 24
    If fig(1) = 6 Then g1Num(2) = 46
    If fig(1) = 7 Then g1Num(2) = 68
    If fig(1) = 8 Then g1Num(2) = 81
    If fig(1) = 9 Then g1Num(2) = 13
    g1p1 = StringaNumeri(g1Num,"",True)
    p1(1) = Piramide(g1p1,1)
    p1(2) = Piramide(g1p1,2)
    p1(3) = Piramide(g1p1,3)
    p1(4) = Piramide(g1p1,4)
    'calcoli gruppo 2 prima piramide
    fisso1 = 33
    ag2num = FuoriX(Decina(g1Num(1)) + Decina(fisso1),9)
    bg2num = FuoriX(Cadenza(g1Num(1)) + Cadenza(fisso1),9)
    g2Num(1) = ag2num & bg2num
    aag2num = FuoriX(Decina(g1Num(3)) + Decina(fisso1),9)
    bbg2num = FuoriX(Cadenza(g1Num(3)) + Cadenza(fisso1),9)
    g2Num(3) = aag2num & bbg2num
    fig(2) = FuoriX(((g2Num(1) + g2Num(3)) + 9),9)
    If fig(2) = 1 Then g2Num(2) = 35
    If fig(2) = 2 Then g2Num(2) = 57
    If fig(2) = 3 Then g2Num(2) = 79
    If fig(2) = 4 Then g2Num(2) = 92
    If fig(2) = 5 Then g2Num(2) = 24
    If fig(2) = 6 Then g2Num(2) = 46
    If fig(2) = 7 Then g2Num(2) = 68
    If fig(2) = 8 Then g2Num(2) = 81
    If fig(2) = 9 Then g2Num(2) = 13
    g2p1 = StringaNumeri(g2Num,"",True)
    pp1(1) = Piramide(g2p1,1)
    pp1(2) = Piramide(g2p1,2)
    pp1(3) = Piramide(g2p1,3)
    pp1(4) = Piramide(g2p1,4)
    ColoreTesto 1
    Scrivi "  Gruppo:1                  Gruppo:2  ",1
    Scrivi " Piramide:1                Piramide:1 ",1
    ColoreTesto 0
    Scrivi
    Scrivi "   " & g1p1 & "                   " & g2p1
    Scrivi "   " & p1(1) & "                    " & pp1(1)
    Scrivi "   " & p1(2) & "                     " & pp1(2)
    Scrivi "   " & p1(3) & "                      " & pp1(3)
    Scrivi "   " & p1(4) & "                       " & pp1(4)

End Sub
 
Ciao Salvo nel secondo script ho cistruito i 4005 ambi in mezzo ho inserito il numero da te indicato ( rosso)
la scritta in blue sono le stringhe della piramide.
esempio l ambo 1-2
da stringa 1792 ossia 1-79-2 (rosso)
di fianco le piramidi
Purtroppo non capisco cosa devi iterare per 21 volte.
La piramide a che livello ti serve ? 1 o 2
potresti fare un esempio anche con valori fittizi. ?
oppure un esempio di output che vuoi ottenere.
adesso hai inserito ad esempio fisso 33 che è un parametro nuovo.
io quando scrivo un listato per me

prima costruisco uno schema con tutti i parametri che conosco poi quelli che devo trovare in sequenza logica. E devi pensare che è già nella mia mente.

ora vado a riposare. Domani sveglia con le galline :)Leggo tutto domani e se sono in grado ti posto un nuovo script.
Buona serata.
 
Ciao Salvo ...

un saluto a tutte/i.

Mi sono permesso di modificare lo script di Avio,

e purtoppo anche di retrocedere un pò dalla soluzione

propsta da i legend.

Giustamente le operazioni di routine, è meglio scriverle

una sola volta e richiamarle fornendo i parametri loro necessari,

affinchè svolgano i calcoli desiderati.

In rosso ... questo script produce le -Enne- (2) piramidi ...

in funzione della "a" fornita.

Codice:
Sub Main
a = 15652
'
Test_Piramide A
'
Scrivi a
b = Piramide(a)
Scrivi b
b = Piramide(a,1)
Scrivi b
b = Piramide(a,2)
Scrivi b
b = Piramide(a,3)
Scrivi b
b = Piramide(a,4)
Scrivi b
Scrivi

a = 225652
'
Test_Piramide A
'
b = Piramide(a)
Scrivi b
b = Piramide(a,1)
Scrivi b
b = Piramide(a,2)
Scrivi b
b = Piramide(a,3)
Scrivi b
b = Piramide(a,4)
Scrivi b
b = Piramide(a,5)'come vedi qui i numeri sono 6 e ci vuole un passagio in + devi decidere tu quale risultato ti va bene se fermarti all' 1 o 2 ecc
Scrivi b
Scrivi
End Sub

Sub Test_Piramide(A)
ColoreTesto 2
Scrivi A,True
For X = 1 To Len(A) - 1
Scrivi Piramide(A,X),True
Next
ColoreTesto 0
Scrivi
End Sub

:)
 
Ciao!
Benissimo, volevo proprio uno schemino piccolo, la base per capirlo, adesso me lo studio, io penso che Avio sia in grado di fare le function, mi ha risposto in quel modo per semplificare come le facevo io, avendo capito che non ero in grado di fare le function.

Per I Legend sono partito con questo post chiedendo aiuto sulla funzione FOR-NEXT e poi siamo andati a finire nel - Quadrato Intellettuale - probabilmente te hai letto i primi post e gli ultimi, adesso io sto facendo uno script per visualizzare tutte e le 21 piramidi che riporta Pico Della Mirandola, faccio un altro post, perche il titolo del post è forviante.
 
Ciao a tutti
Ciao Joe :)
ciao Salvo
il problema è l algoritmo con cui calcoli le piramidi il primo e diverso dal secondo
il terzo resta uguale cambia solo il valore del fisso?
P.S: ho letto il post dall inizio alla fine ;)
 
Mi permetto di aggiungere, una seconda semplificazione.

Codice:
Sub Main
Dim A,N

A  = Array (0,464614,791347)

For N = 1 To UBound (A)
Scrivi A(N),True
Pico (A(N))
Scrivi
Next

End Sub

Sub  Pico (A)
Dim X
ColoreTesto 2
For X = 1 To Len(A) - 2
Scrivi Piramide(A,X)
Next
ColoreTesto 0
End Sub



Quando è chiaro ed evidente ... cosa fa lo script

cioè cosa fa la "Sub Main" e la "Sub Pico"

Sostituendo semplicemente "Sub" con "Function"

E ... End Sub (sempre ... di Pico) con End Function,

si nota che lo script funziona allo stesso identico modo.

Tuttavia lo scopo di una "Function" (secondo me)

è quella di restituire "un risultato" di alcuni calcoli

"un pò meno" quello di "disegnare piramidi".

Ma (volendo) ... s'è detto ... lo fa.

:)
 
Grazie!

Solo una domanda qual'è il comando che fa fermare la visualizzazione della piramide con due cifre invece di una?
 
Ciao Salvo :)
Ciao Joe :) (come sempre hai ragione e sono d accordo con te)
In Base a quello che ho capito provo a postare lo script.
se ti serve solo la parte finale della piramide bisogna raccoglirle in un array
Salvo errori ed omissis
Codice:
Option Explicit
'Salvo Errori ed Omissis
'Script per Metodo di salvo50 lottoced
Sub Main
    Dim aIns:aIns = Array(0,35,57,79,92,24,46,68,81,13)
    Dim i,j,k
    Dim N1:N1 = 46
    Dim N2:N2 = 14
    Dim Fisso:Fisso = 3
    ReDim aNum(6)
    ReDim aPir(0)
    Dim Id
    Call GetArray(N1,N2,Fisso,aNum)
    For i = 1 To UBound(aNum) - 1 Step 2
        j = i + 1
        k = k + 1
        Id = FuoriX(Decina(aNum(i)) + Cadenza(aNum(i)) + Decina(aNum(j)) + Cadenza(aNum(j)),9)
        ReDim Preserve aTro(k)
        aTro(k) = aNum(i) & aIns(Id) & aNum(j)
    Next
    i = 0
    For i = 1 To UBound(aTro)
        Scrivi "Piramide: " & i
        Scrivi aTro(i)
        Call PiramidaS(aTro(i))
        ReDim Preserve aPir(i)
        aPir(i)=Piramide(aTro(i),,2)
    Next
    Scrivi"------------------"
    k=0
    For k=1 To UBound(aPir)
    Scrivi aPir(k)
    Next
End Sub
Sub PiramidaS(sNum)
    'questa sub piramida la Stringa inserita
    Dim i
    For i = Len(sNum) - 1 To 2 Step - 1
        Scrivi "P" & i & ":" & Piramide(sNum,,i),0,1,,vbBlue
    Next
End Sub
Sub GetArray(N1,N2,Fisso,aNum)
' questa sub calcola i numeri laterali della piramide
    Dim i
    aNum(1) = N1
    aNum(2) = N2
    For i = 3 To UBound(aNum)
        aNum(i) = FuoriX(Decina(aNum(i - 2)) + Fisso,9) & FuoriX(Cadenza(aNum(i - 2)) + Fisso,9)
    Next
End Sub
 
Per joe, come non detto, quel 2 l'ho cambiato in 1

Per Avio, io clicco nel cancellino appaiono due scritte
Codice:
 e poi lo inserisco in mezzo

Per I Leggend, si va bene, grazie
 
Volevo piramidare da 1 a 90 ma sicuramete da qualche parte c'è un errore (qualcosa da accordare)
lo script che metto e quello dei numeri 46 14 del QUADRATO ITELLETTUALE non completo

'Option Explicit
Sub Main
Dim g(9),num(3),k(9),fi(3),num2(2),rr(6),dd(6),yy(3),n um3(6)
g(1) = 35
g(2) = 57
g(3) = 79
g(4) = 92
g(5) = 24
g(6) = 46
g(7) = 68
g(8) = 81
g(9) = 13
For N1 = 46 To 46
For N2 = 14 To 14
z3 = n1
z6 = n2
Call SOMDECA(z3,z6,num,g,c)
k(1) = c
s1 = n1
s2 = n2
B1 = 1
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
S1 = Z3
S2 = Z6
Call SOMDECA(z3,z6,num,g,c)
k(2) = c
s1 = z3
s2 = z6
B1 = 1
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
Call SOMDECA(z3,z6,num,g,c)
k(3) = c
s1 = n1
s2 = n2
B1 = 3
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
Call SOMDECA(z3,z6,num,g,c)
k(4) = c
s1 = z3
s2 = z6
B1 = 3
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
'Scrivi Z3 & " rr4 " & Z6
Call SOMDECA(z3,z6,num,g,c)
k(5) = c
s1 = z3
s2 = z6
B1 = 7
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
Call SOMDECA(z3,z6,num,g,c)
k(6) = c
s1 = z3
s2 = z6
B1 = 3
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
Call SOMDECA(z3,z6,num,g,c)
k(7) = c
s1 = z3
s2 = z6
B1 = 7
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
Call SOMDECA(z3,z6,num,g,c)
k(8) = c
s1 = z3
s2 = z6
B1 = 3
Call DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
Call SOMDECA(z3,z6,num,g,c)
k(9) = c
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''
fi(1) = Figura(k(1))
fi(2) = Figura(k(4))
fi(3) = Figura(k(5))
'Scrivi fi(1) & " " & fi(2) & " " & fi(3)
num2(1) = fi(1)
num2(2) = n1
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
rr(1) = c
num2(1) = fi(1)
num2(2) = n2
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
rr(2) = c
num2(1) = fi(2)
num2(2) = n1
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
rr(3) = c
num2(1) = fi(2)
num2(2) = n2
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
rr(4) = c
num2(1) = fi(3)
num2(2) = n1
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
rr(5) = c
num2(1) = fi(3)
num2(2) = n2
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
rr(6) = c
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''
num2(1) = k(1)
num2(2) = rr(1)
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
dd(1) = c
num2(1) = k(1)
num2(2) = rr(2)
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
dd(2) = c
num2(1) = k(4)
num2(2) = rr(3)
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
dd(3) = c
num2(1) = k(4)
num2(2) = rr(4)
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
dd(4) = c
num2(1) = k(5)
num2(2) = rr(5)
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
dd(5) = c
num2(1) = k(5)
num2(2) = rr(6)
a = StringaNumeri(num2,"",False)
Call Test_Piramide(A,c)
dd(6) = c
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''
num(1) = dd(1)
num(2) = g(7)
num(3) = dd(2)
a = StringaNumeri(num,"",False)
Call Test_Piramide(A,c)
yy(1) = c
num(1) = dd(3)
num(2) = g(1)
num(3) = dd(4)
a = StringaNumeri(num,"",False)
Call Test_Piramide(A,c)
yy(2) = c
num(1) = dd(5)
num(2) = g(4)
num(3) = dd(6)
a = StringaNumeri(num,"",False)
Call Test_Piramide(A,c)
yy(3) = c
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''
Scrivi" oooooooooooooooooooooooooooooooooooooo "
num3(1) = yy(1)
num3(2) = k(1)
num3(3) = yy(2)
num3(4) = k(1)
num3(5) = yy(3)
a = StringaNumeri(num3,"",False)
Call Test_Piramide(A,c)
Scrivi c
num3(1) = yy(1)
num3(2) = k(4)
num3(3) = yy(2)
num3(4) = k(4)
num3(5) = yy(3)
a = StringaNumeri(num3,"",False)
Call Test_Piramide(A,c)
Scrivi c
num3(1) = yy(1)
num3(2) = k(5)
num3(3) = yy(2)
num3(4) = k(5)
num3(5) = yy(3)
a = StringaNumeri(num3,"",False)
Call Test_Piramide(A,c)
Scrivi c
Next'n2
Next'n1
End Sub
Sub Test_Piramide(A,c)
For X = 1 To Len(A) - 1
Scrivi Piramide(A,x)
If Piramide(A,x) < 100 Then c = Piramide(A,X):x = 11:Scrivi
Next
End Sub
Function DECA(z1,z2,z3,z4,z5,z6,s1,s2,B1)
z1 =(Decina(s1) + B1)
If z1 > 9 Then z1 = z1 Mod 9
z2 =(Cadenza(s1) + B1)
If z2 > 9 Then z2 = z2 Mod 9
z3 =(z1*10) + z2
z4 =(Decina(s2) + B1)
If z4 > 9 Then z4 = z4 Mod 9
z5 =(Cadenza(s2) + B1)
If z5 > 9 Then z5 = z5 Mod 9
z6 =(z4*10) + z5
End Function
Function SOMDECA(z3,z6,num,g,c)
x1 =(Decina(z3) + Decina(z6) + Cadenza(z3) + Cadenza(z6)) Mod 9
If x1 = 0 Then x1 = 9
num(1) = z3
num(2) = g(x1)
num(3) = z6
a = StringaNumeri(num,"",False)
Call Test_Piramide(a,c)
End Function
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 18 gennaio 2025
    Bari
    24
    76
    02
    72
    12
    Cagliari
    21
    08
    77
    04
    17
    Firenze
    74
    84
    07
    12
    72
    Genova
    13
    07
    33
    47
    18
    Milano
    01
    34
    09
    55
    48
    Napoli
    46
    23
    25
    03
    06
    Palermo
    44
    07
    01
    46
    84
    Roma
    88
    78
    64
    74
    04
    Torino
    07
    87
    67
    38
    53
    Venezia
    31
    25
    04
    18
    02
    Nazionale
    49
    82
    59
    65
    67
    Estrazione Simbolotto
    Bari
    03
    13
    31
    23
    35

Ultimi Messaggi

Indietro
Alto