Newsgroup: it.comp.lang.visual-basic
Titolo: tombola!

Tombola.
Purtroppo ancora non con il punto esclamativo come da oggetto.
 
90 numeri casuali sono posti in una matrice Estraendi(1 to 90)
devo stamparli tutti, ma 5 per riga  su 3 righe per cartella.
Le cartelle sono 6, tre a sinistra e tre a destra in un foglio A4 
(Printer.Orientation = vbPRORLandscape). Totale righe 18, colonne 18.
Nelle colonne devo rispettare la posizione delle unitï¿œ, prima decina, 
seconda decina ecc.
Ho fatto cosï¿œ:
 
dim Casa(17,8)as boolean  'individua tutte le caselle disponibili
dim rg(17) As Integer ' per contare max 5 numeri per riga
 
For i = 1 To 90
   Estratto = Estraendi(i)
         For r = 0 To 17	'cicla le righe
           If rg(r) = 5 Then GoTo prosegui
           RSCol = TrovaCol(Estratto) 'per posizione matrice
           sd = "sx"
           If r > 8 Then sd = "dx"
           Colonna = TrovaCol(Estratto, sd)'per stampa sx-dx
           If Casa(r, RSCol) = False Then  'se non occupata
                 FindXY r, Colonna
                 Printer.CurrentX = theX
                 Printer.CurrentY = theY
                 Printer.Print Estratto
                 Casa(r, RSCol) = True    'occupa la casella
                 rg(r) = rg(r) + 1        'conta i numeri per riga
                 totStampati = totStampati + 1
                 Exit For
           End If
prosegui:
         Next r
Next i
 
Printer.EndDoc
 
TrovaCol individua una delle 9 colonne della matrice, quando presenta 
l'opzione sd, aumenta di 9 il numero di colonna, determinando il 
CurrentX per la stampa sulle cartelle a sinistra.
FindXY determina le coordinate di stampa.
 
Il codice non stampa tutti 90 i numeri,ma 89, oppure 88: evidentemente 
in fondo al ciclo si ritrova con numeri che non trovano collocazione su 
casella libera.
 
Qualche suggerimento?
Grazie in anticipo.
 
P.S. Normalmente non sarebbe corretto postare codice, ma un problema del 
genere ï¿œ difficilmente spiegabile altrimenti. Mi scuso.
 
-- 
Gulpï¿œ

Ciao,
onestamente non mi sono messo ad analizzare tutto il codice, ma mi viene in 
mente una cosa...
la tua matrice di estraendi, contiene tutti i numeri da 1 a 90?
O si tratta di una matrice di numeri casuali da 1 a 90? Cioe', potrebbe 
capitare che hai 2 volte il 4, 3 volte il 15 e via di seguito?
Immagino che la mia prima ipotesi sia quella corretta.
Ad occhio mi viene in mente che potrebbe non esserci "spazio" per un numero 
 >= 80, questo perche' nella colonna dell'80, ci va anche il 90, quindi 
quella colonna deve ospitare 11 numeri, a differenza delle altre colonne che 
ne devono ospitare 10 e addirittura la prima che ne ospita solo 9 (da 1 a 
9).
Hai modo di sapere, di volta in volta, quali numeri non vengono stampati?
 
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 7895 (20130115) __________
 
Il messaggio ï¿œ stato controllato da ESET NOD32 Antivirus.
 
www.nod32.it
 
 
 
 

 Hai modo di sapere, di volta in volta, quali numeri non vengono stampati?
 
posso inserirli in una list1 e vedere.
Effettivamente sulla prima colonna a fronte di diciotto caselle vi sono 
9 numeri da inserire e sull'ultima, come dici tu invece, uno in piï¿œ 
rispetto alle altre colonne... mumble..mumble....
 
 
-- 
Gulpï¿œ

 Il 15/01/13 14.43, vbMizio ha scritto:
 
mi scuso per l'intromissione ... è in C++, ci sono sorgenti e binario
http://www.ennepisoft.it/tombola/tombola.php
 
magari può essere utile come spunto
 

Il 15/01/13 15.19, logicmind ha scritto:

Non conosco il signor C, comunque, da bazzicatore di codice, darò 
un'occhiata.
 
Ma se l'hai scritto tu, visto che oggi è il mio compleanno, lo spunto 
per stampare un tabellone di sei cartelle con i famigerati 90 numeri in 
modo casuale, me lo potresti dare?
 
Ciao
-- 
Gulp®


:-) auguri
 
se ti serve una cosa veloce ... la via più immediata è usare il mio 
eseguibile e poi prendere il suo risultato (*) e usarlo nel tuo codice.
 
Se invece vuoi fartelo tutto da solo ... comincia a spezzare la logica.
Inizia con la generazione di una cartella (dal bussolotto di 90 numeri), 
una cartella è fatta da tre righe, ogni riga (di nove colonne) usa 
cinque numeri. Questi cinque numeri non possono essere troppo 
'appiccicati', quindi magari uno o più di essi possono essere scambiati 
con le altre due righe, es. tra due righe:
1,12,23,34,45,  ,  ,  , |
  ,15,  ,  ,48,55,66,77, |
 
dopo lo scambio
1,12,23,  ,45,  ,66,  , |
  ,15,  ,34,48,55,  ,77, |
 
Nel mio codice uso una classe per contenere i (9)-10-(11) numeri per 
ciascuna colonna e le estrazioni le faccio da lì, ordino le colonne in 
modo da avere in testa quelle con più numeri ancora da estrarre, poi ne 
prendo casualmente cinque tra le prime sei. In questo modo si escludono 
da sole le colonne terminate.
 
poi ... varie ed eventuali :-)
Considera che il codice è vecchio di almeno 10 anni, anzi di più, e non 
è che me lo ricordi poi tanto.
 
Ciao
 
(*) puoi scegliere di creare il file in formato 'tabbed', cioè una 
cartella per riga separata da tab, quindi 27 colonne in ciascuna riga
 

 Se invece vuoi fartelo tutto da solo ... comincia a spezzare la logica.
 
Nella stampa di cartelle, abbastanza grandi, tre su un foglio A4, sono 
già riuscito... qui si tratta di stampare invece l'intero tabellone, 
cioè 6 cartelle che contengano tutti 90 numeri distribuiti in modo casuale.
 
Comunque grazie per i consigli, possono tornarmi utili per rivedere il 
mio codice... in fin dei conti non si finisce mai di imparare...
 
Ciao
 
Ah, grazie, fanno 57 ahia, iahi !
-- 
Gulp®

 Ah, grazie, fanno 57 ahia, iahi !
 
... siamo quasi coetanei :-(

 ma il tuo problema è la generazione dei numeri o la stampa?
 
La stampa!
 
In una matrice ho i 90 numeri già mescolati, ma il mio problema è 
stamparli posizionandoli in modo casuale dentro a 162 caselle 
disponibili (sei cartelle di tre righe) mantenendone solo 5 per riga 
come richiede il gioco.
 
Complimenti per esserti preoccupato anche dell'"estetica" della 
cartella... con lo scambio di numero-riga... non saprei proprio da che 
parte iniziare...ma non sono mai stato un programmatore, ma solo una 
persona che in modo del tutto autodidatta si è cimentata con VB6, a 
volte con qualche buon risultato: il gestionale del mio studio me lo 
sono fatto io... ed è la cosa più bella perchè quando vuoglio e quando 
serve lo posso modificare.
 
-- 
Gulp®


 
L'estetica proviene dal filemaker, un programma 'tipo access', in cui ho 
creato un db (nel file tombola.fp5 presente nello zip) con i 27 campi e 
sistemati 'esteticamente' al loro posto. Poi ho importato il file 
'tabbed' ed è tutto ... (la stessa cosa è fattibile anche da access)
 
Ciao

Il 15/01/13 17.51, logicmind ha scritto: ... (la stessa cosa è fattibile 
anche da access)
 >
 > Ciao
 
Proverò.
 
Grazie molte
Ciao
 
-- 
Gulp®
 
 
-- 
Gulp®

 Gulp�
 
Ci ho messo 2 giorni pieni a capire il problema che avevamo in comune 
sull'invio dei messaggi.
Devi inserire un Chr(10) tra la la fine dell'sms e il comando ctrlZ
Penso che tu stia utilizzando un nokia perch� � solo questo che da quei 
problemi.
Ciao e auguri. 
 
 

 Ci ho messo 2 giorni pieni a capire il problema ...
 
Io a suo tempo dopo un pomeriggio vi rinunciai e optai per un "comodo" 
uscita e rientro.
Buono a sapersi. Grazie.
Ciao