Oppure

Loading
04/03 15:24
maurizio74
Ciao a tutti,

ho visto un programmino in excel che si chiama calcolo enigmatico ed ho cercato di portarlo in vb6.

vorrei far permutare i textbox a destra quelli in verticale
text12.text
text13.text
text14.text
text15.text
fino ad ottenere il giusto risultato ho provato in diversi modi ma non sono riuscito
mi manca qualche riga che fa si che tutto gira.

se qualcuno puo' aiutarmi????


qui di seguito allego il progetto zippato.
Ultima modifica effettuata da maurizio74 14/03 9:55
aaa
04/03 20:21
nessuno
Spiegaci cosa è un calcolo enigmatico perchè non l'ho mai sentito.

Ma non fare come hai fatto in

forumexcel.it/forum/threads/nuovo-calcolo-enigmatico.74649/
Ultima modifica effettuata da nessuno 04/03 20:28
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
05/03 8:52
Thejuster
Esponi il problema, dove hai il problema con la relativa parte di codice.
Nessuno scaricherà l'intero progetto e cercherà per te l'errore....
mire.forumfree.it/ - Mire Engine
C# UI Designer
05/03 10:06
maurizio74
Ciao Nessuno,

visto che hai citato il forum di excel, vorrei spiegare un po' cosa e' successo, avevo un problema che non so per quale mistero dei computer ho risolto alla fine da solo, facendo solamente un copia ed incolla di tutto il codice in un altro foglio excel e' quindi quei beati valori A e B che citavo li ha scambiati come doveva. Cmq per quanto riguarda il forum di excel se vedi tutti i post, si evince che alla fine ho sbottato sicuramente "sbagliando" anche se avevo solo fatto la battuta della birra, ma se vedi in tutti i post dall'inizio alla fine vedi che ho cercato di esporre il problema, ho postato il codice ho ricercato di esporre nuovamente il problema e via dicendo, e mi hanno sospeso per un battuta, non ho certamente offeso nessuno e non è mai stato nelle mie intenzioni.

cmq ritornando a questo post rispondendo alla tua domanda, Il calcolo enigmatico è un semplice gioco enigmistico spesso si trova nella settimana enigmistica per il quale ti si chiede di sostituire i numeri ai simboli o alle lettere per trovare la soluzione.

quindi per capirci il programma dovrebbe effettuare un serie di permutazioni e scambi di valori nei text fino a permettere di trovare la soluzione corretta.

ho cercato di essere più chiaro possibile e non so, se ci sono riuscito.


intanto ringrazio anticipatamente te e coloro che avranno il piacere di rispondere e cercare un eventuale soluzione.
Ultima modifica effettuata da maurizio74 05/03 11:33
aaa
05/03 11:04
maurizio74
Postato originariamente da Thejuster:

Esponi il problema, dove hai il problema con la relativa parte di codice.
Nessuno scaricherà l'intero progetto e cercherà per te l'errore....


Private Sub Command1_Click()
command1.SetFocus
Dim i As Long
Dim arr(1 To 4) As Variant

For i = 1 To 4
arr(i) = i

Text12.Text = i - 3
Text13.Text = i - 2
Text14.Text = i - 1
Text15.Text = i
Next



Call numeri_Permutabili(arr, 4, 4)


Text1 = Text12
Text2 = Text13
Text3 = Text14
Text4 = Text15
Text5 = Text12

Text17 = Text1 & Text2
Text18 = Text3
Text19 = Text4 & Text5

Text42 = Text17 / Text18

If Text42 = Text19 Then
Text26 = 1
Else
Text26 = 0
End If
Text41 = Text26
End Sub
Sub numeri_Permutabili(vettore() As Variant, dimensione As Long, n As Long)

Dim i As Long

If dimensione = 1 Then
If risultato(vettore) = True Then End
Exit Sub
End If

For i = 1 To dimensione
Call numeri_Permutabili(vettore(), dimensione - 1, n)
If dimensione Mod 2 = 1 Then
Call scambio(vettore(), 1, dimensione)
Else
Call scambio(vettore(), i, dimensione)

End If
Next


End Sub


Sub scambio(arr() As Variant, indice1 As Long, indice2 As Long)

Dim temp_var As Variant

temp_var = arr(indice1)
arr(indice1) = arr(indice2)
arr(indice2) = temp_var

End Sub


Function risultato(vettore()) As Boolean

Dim trasposto() As Variant
..........................................

if text41.text=1 then
risultato = True
else
risultato = False
end if

End Function

questo è tutto il codice ma la parte che non riesco a far elaborare e la function?????
aaa
05/03 19:36
Carlo
Capirai che non si può cercare di capire cosa non va senza sapere cosa dovrebbe succedere.
Una volta lanciato il programma cosa dovrebbe succedere?
Cosa funziona e cosa non funziona?
in programmazione tutto è permesso
05/03 20:03
maurizio74
Ciao Carlo,

praticamente una volta lanciato il programma se tutto funzionasse a dovere, dovrebbe dare questo risultato:

42 / 3 = 14
PER L'ESATTEZZA il
4=A
2=B
3=C
1=D
per far si' che cio' si verifichi il programma dovrebbe permutare i valori nei text a-b-c-d quelli posizionati in verticale a destra fino
a quando si troveranno nella posizione giusta e daranno il risultato corretto.

ora a quanto ne capisco io ed è sicuramente poco sembra che la parte di codice che non sta fungendo sia:

Function risultato(vettore()) As Boolean

Dim trasposto() As Variant

trasposto = Application.Form1.Transpose(vettore)

Form1("text12:text15";).Value = trasposto

If Text1.Text = 1 Then

risultato = True
Else
risultato = False

End If

ho provato in diversi modi ma non riesco a far si che scambi i valori immessi nei text che vanno da text12 a text15.

non riesco a spiegarlo meglio....

vedete un po'.... grazie a tutti....
aaa
05/03 20:33
Carlo
Non ho capito ma ti posso dare gli strumenti per sapere se il programma si comporta riga riga come vorresti.
Clicca a sinistra della prima riga: Sub numeri_Permutabili(vettore() As Variant, dimensione As Long, n As Long)
Appare un pallino rosso. Lancia il programma con F5 e poi premi il tasto solve, il codice sotto a: Private Sub Command1_Click() viene eseguito, prima ci sono le dichiarazioni poi c'è il ciclo for:
command1.SetFocus
Dim i As Long
Dim arr(1 To 4) As Variant

For i = 1 To 4
    arr(i) = i
 
    Text12.Text = i - 3
    Text13.Text = i - 2
    Text14.Text = i - 1
    Text15.Text = i
Next

che scrive 1, 2, 3, 4 dentro alla matrice arr() agli indici 1,2,3,4
dentro al ciclo for scrivi per 4 volte dentro alle text, ma solo gli ultimi valori saranno visualizzati, per la precisione quando i=4, dentro alle text scrivi 4-3 = 1, 4-2 = 2, 4-1 = 3 e 4.
ora il codice salta alla sub con: Call numeri_Permutabili(arr, 4, 4)
nella sub hai inserito il pallino rosso (breakpoint) e il programma si ferma li. Se premi F8 il programma avanza di una riga e se vai sopra alle variabili vedi tutti i valori, continua con F8 e controlla se il programma procede come voluto e i valori cambiano come voluto.
Se metti VB6 in modo che non copra il form vedi anche cosa succede nel form quando sei sul codice che scrive nel form.
Di più per ora non ti so dire.

Perchè non alleghi l'excel?? (lo devi zippare)
Ultima modifica effettuata da Carlo 05/03 20:56
in programmazione tutto è permesso