Novità

sfida 1

genios

Advanced Member >PLATINUM<
Aiuto per stampare la tavola pitagorica naturalmente come vincolo vi deve essere l' uso dell' istruzione if then elself .

Ciao Eugenio

La tavola pitagorica
  1. è costituita da 10 righe e 10 colonne
  2. ogni elemento è il prodotto della riga e della colonna corrispondente
  3. uno spazio fisso separa gli elementi…
Per allineare in colonna è necessario adattare gli spazi al valore…
  1. r = 100
  2. r = 1099
  3. r = 19
Codice:
Option[/B] [B]Explicit[/B]
[B]Sub[/B] [B]Main[/B]
[B]Dim[/B] [B]riga[/B], [B]colonna[/B], [B]r[/B] 
      [B]For[/B] [B]riga[/B][B]=[/B]1 [B]To[/B] 10
   [B]For[/B] [B]colonna[/B][B]=[/B]1 [B]To[/B] 10
      [B]r[/B][B]=[/B][B]riga[/B][B]*[/B][B]colonna[/B]    
      [B]If[/B] [B]r[/B] [B]<[/B] 10  [B]Then[/B]
         [B]Scrivi[/B] ("   " [B]+[/B] [B]r[/B]) ' 3 spazi
      [B]ElseIf[/B] [B]r[/B] [B]<[/B] 100  [B]Then[/B]
         [B]Scrivi[/B] ("  "  [B]+[/B] [B]r[/B]) ' 2 spazi
      [B]Else[/B]
         [B]Scrivi[/B] (" "   [B]+[/B] [B]r[/B]) ' 1 spazio
      [B]End[/B] [B]If[/B]
   [B]Next[/B]
   [B]Scrivi[/B] ("")
[B]Next[/B]

[B]
 
Comincia con il correggere il + ( che funziona da congiunzione su stringa con lottoced, non su spaziometria).

Option Explicit
Sub Main
Dim riga,colonna,r
For riga = 1 To 10
For colonna = 1 To 10
r = riga * colonna
If r < 10 Then
Scrivi " " & r ' 3 spazi
ElseIf r < 100 Then
Scrivi" " & r ' 2 spazi
Else
Scrivi" " & r ' 1 spazio
End If
Next
Scrivi("")
Next
End Sub
 
Ultima modifica:
Grazie claudio8 . Quindi in spaziometria per congiungere le stringhe si usa & . Ora vorrei che lo script stampasse la tabella in orizzontale anziche in verticale.

Ciao Eugenio
 
Ciao Eugenio ... Help ?!?!?!

Sono cose .... non solo semplici !

Sono, molto-molto-molto semplici.

Devi solo saperle leggere e scrivere ... con semplicità.

Codice:
Option Explicit
 Sub Main
 Dim riga,colonna,r
 For riga = 1 To 10
 For colonna = 1 To 10
 r = riga * colonna
 If r < 10 Then
 Scrivi Space(3) & r ,,False ' 3 spazi
 ElseIf r < 100 Then
 Scrivi Space(2) & r ,,False ' 2 spazi
 Else
 Scrivi Space(1) & r ,,False  ' 1 spazio
 End If
 Next
 Scrivi("")
 Next
 End Sub

E ... le hai già scritte molto-molto più complicate del necessario.

:)
 
"Scrivi" ... opponendoti all' "opzione" di andare "aCapo" ... sinchè non è finita la linea.

Eugenio.jpg
 
Come dicevo ...

un pò impreciso potrebbe essere così:

Codice:
Option Explicit
Sub Main
Dim Riga,Colonna,R,L,Spazi
Spazi = 10
For Riga = 1 To 10
For Colonna = 1 To 10
R = Riga * Colonna
L = Len(R)
Scrivi Space(Spazi - L) & R,,False
Next
Scrivi("")
Next
End Sub

Perchè esistono istruzioni apposite di livello più alto ... come "FormatSpace"

che sermplificano la stesura dello script.
 
Ultima modifica:
Space è una funzione di VB .

Codice:
Scrivi Space(3) & r ,,False ' 3 spazi

Joe91 interpreto cosi la riga

Space (3) scrive 3 spazi vuoti e quindi scrive la variabile r quando r<10 .

Non riesco a capire ,, False cosa fa?

Ciao Eugenio
 
No ... ripeto, è molto più semplice.

Tu contavi quanti caratteri è "lungo" un numero ...

Questa è la stessa cosa fa "Len" che peraltro corrisponde all'inizio del lemma inglese "Lenght"

Quindi, con l'imprecisione di cui accennavo prima ... Len si calcolerebbe da sè :

1 per i numeretti

2 per le decine

3 per le centinaia ... ecc.. ecc..

(Dunque funziona, a differenza del tuo script, anche se ci fosse un risultato ... di 4/5/67/8/9 ... cifre).

10 meno (-) la "Lunghezza del numero" è ..."quanti" sono gli spazi da anteporre e ...

... necessari per incolonnare ... per benino.

+/- Largo quanto si vuole. (Diciamo, circa 10)

Questo ... per l'ultima parte della tua domanda. Passando all'inizio ...

Cosa fa il secondo parametro opzionale di "Scrivi" lo vedi da te:

permette di trasformare in "una riga" ciò che era "una colonna".

Permette cioè di costruire, pezzo pe rpezzo, una riga ... di una tabella.

(Il primo parametro opzionale di "Scrivi", l'ho omesso. (Tra le prime "due virgole" ... non c'è nulla))

Come è spiegato con tanto di immagine frecce e descrizione nel messaggio #6 ...

"False, aCapo" si antepone al parametro di opzionale di default "True, aCapo"... impedendo appunto di andare a capo.

E ... in sintesi è come ti consigliavo, devi solo leggere le cose scritte, con la loro semplicità.

Il segno di maggiore ... per esempio ... non c'è.

Inutile "introdurlo" per azzardare interpretazioni, che saranno probabilmente errate.

In ultimo ... ci sono anche altri modi per ottenere risultati simili ... ma non volevo sconvolgere, subito, tutto lo script,

permettendoti di vedere (per confronto e per gradi) quali ottimizzazioni avevo introdotto.
 
Avendo compreso come sia possibile una costruzione/soluzione ... "fai da te" ...

.. ci si può semplificare i compiti utilizzando le istruzioni basic ... di livello superiore.

Esse predispongono degli spazi-ordinati in cui scrivere,

analgogamente fossero, le celle di un foglio di calcolo. Ad esempio:

Codice:
Option Explicit
Sub Main
Dim Riga,Colonna,R
For Riga = 1 To 10
For Colonna = 1 To 10
R = Riga * Colonna
Scrivi FormatSpace(R,4,True),,False
Next
Scrivi("")
Next
End Sub

Ove, se lo scopo, fosse limitato solo a questo, si potrebbe ancora "risparmiare" la

Variabile "R" utilizzata per contenere il risultato.

:) Buona giornata a tutte/i.


PS: Tornerò alla proposta di "soluzione iniziale" ... sottolineando le differenze, nell'approccio.
 
Ultima modifica:
Eccomi in un minuto ...


Codice:
Option Explicit
Sub Main
Dim Riga,Colonna,R,L,Spazi,Testo
Spazi = 10
For Riga = 1 To 10
Testo = "" 'Prepara un contenitore vuoto per il testo in output
For Colonna = 1 To 10
R = Riga * Colonna
L = Len(R)
Testo =  Testo & Space(Spazi - L) & R
Next
Scrivi(Testo)
Next
End Sub

Lo script è lo stesso del messaggio #7

La riga in questo caso viene assemblata TUTTA e poi mandata in output, solo quando è completa.

Ci sono vantaggi e svantaggi.

Premettendo che quanto è mandato in output ... poi non si può cancellare,

si ha come vantaggio che si potrà "ancora" decidere se scrivere o meno questo "Testo".

Mentre nell'altro metodo/aprroccio di soluzione .. questa decisione non è possibile.

Ciò che è scritto ... come dicevano i latini, rimane.

Per contro in questo caso i dati di una stessa linea saranno "uniformi" ...

per esempio saranno tutti nello stesso colore / carattere / stile.

Mentre nell'approccio dello script precedente si possono anche colorare / evidenziare ...

comporre con diversi stili ed originalità ... "singolarmente".

:)
 
Ultima modifica:
In sintesi ed in conlusione ...

Stile ed efficienza dipendono anche dal risultato che vogliamo ottenere,

combinando scelte differenti, in un mix di velocità di redazione, quantità di codice,

complessità e/o velocità dello script, tipologia del risultato desiderato.

Per esempio volessimo evidenziare "pari e dispari" sarà preferibile

come ho scritto nel messaggio precedente ...

scegliere l'approccio, che v'ho proposto in prima istanza.

Ho ridotto ai minimi termini il codice presente al messaggio #7 ...

per evidenziare che, Spaziometria, a livello, ancora superiore,

permette di inserire ANCHE parametri condizionali nell'istruzione "Scrivi"

Pertanto lo script permette di creare una tabella selettivamente colorata

quasi, "con una sola istruzione" molto potente:

Codice:
Option Explicit
Sub Main
Dim R,C,RC
For R = 1 To 10
For C = 1 To 10
RC = R*C
Scrivi FormatSpace(RC,4,True),,False,,Iif (pari (RC),2,0)
Next
Scrivi
Next
End Sub

:)
 
Ultima modifica:
Joe91 sotto uno dei tanti modi di script per leggere l' archivio.Cosa devo aggiungere per il numero di estrazione ?

Inoltre nella tabella piu' in basso ho ipotizzato che l' archivio sia fatto in quel modo puo' andar bene ? .

Ciao Eugenio


Codice:
Option Explicit


Sub Main

Dim n(5)
Dim es,r1,p
Dim ruote(1)

For es = EstrazioneFin - 100 To EstrazioneFin ' sostituisci il 100 se vuoi cambiare le lestrazioni da valutare
r1 = 1
For p = 1 To 5
n(p) =(Estratto(es,r1,p))


Next
Scrivi DataEstrazione(es) & " " & FormatSpace(NomeRuota(r1),5) & Format2(n(1)) & "." & Format2(n(2)) & "." & Format2(n(3)) & "." & Format2(n(4)) & "." & Format2(n(5)),1

Next

End Sub
[QUOTE]
[CODE]
  [TABLE="border: 1, cellpadding: 0, cellspacing: 0"]
 	 		[TR]
 			[TD][B]Data [/B][/TD]
 			[TD][B]Ruota[/B][/TD]
 			[TD][B]ID[/B][/TD]
 			[TD][B]P1[/B][/TD]
 			[TD][B]P2[/B][/TD]
 			[TD][B]P3[/B][/TD]
 			[TD][B]P4[/B][/TD]
 			[TD][B]P5[/B][/TD]
 		[/TR]
 		[TR]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 		[/TR]
 		[TR]
 			[TD][B]03.02.2015[/B][/TD]
 			[TD][B]Bari[/B][/TD]
 			[TD] [/TD]
 			[TD][B]52[/B][/TD]
 			[TD][B]68[/B][/TD]
 			[TD][B]39[/B][/TD]
 			[TD][B]05[/B][/TD]
 			[TD][B]85[/B][/TD]
 		[/TR]
 		[TR]
 			[TD][B]05.02.2015[/B][/TD]
 			[TD][B]Bari[/B][/TD]
 			[TD] [/TD]
 			[TD][B]51[/B][/TD]
 			[TD][B]25[/B][/TD]
 			[TD][B]50[/B][/TD]
 			[TD][B]86[/B][/TD]
 			[TD][B]53[/B][/TD]
 		[/TR]
 		[TR]
 			[TD][B]07.02.2015[/B][/TD]
 			[TD][B]Bari[/B][/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 		[/TR]
 		[TR]
 			[TD][B]10.02.2015[/B][/TD]
 			[TD][B]Bari[/B][/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 			[TD] [/TD]
 		[/TR]
 	 [/TABLE]
 
Ciao Eugenio,

Nel tuo script ... hai usato ... "Es"

"DataEstrazione(Es)" è la data dell'estrazione ... dove

(Es) è l' "Id" dell'estrazione. .

Dunque, se vuoi visualizzare .

Data / Ruota / Id / Estratti ... Si. Va bene.

:)
 
Ultima modifica:
Ciao Eugenio,

anche qui ... se intendi visualizzare tutto l'archivio di Bari ... si ... da "1 a EstrazioniArchivio" ...

Considerando che ... ci potrebbero e ci saranno "dei buchi" ... pieni di "Zeri" che non sono errori.

(se ricordo bene Ba inizia con 173 estrazioni di ritardo).

Ma se lo scopo ... è visualizzare tutto ... si va bene.

:)
 
Ultima modifica:
Ok allora devo stampare la variabile es per avere il numero dell' estrazione .
Un altra cosa in ambiente script di spaziometria si possono usare tutte le istruzioni e funzioni del VB SCRIPT ?

Ciao Eugenio

Codice:
Sub Main

Dim n(5)
Dim es,r1,p
Dim ruote(1)

For es = EstrazioneFin - 100 To EstrazioneFin ' sostituisci il 100 se vuoi cambiare le lestrazioni da valutare
r1 = 1
For p = 1 To 5
n(p) =(Estratto(es,r1,p))


Next
Scrivi DataEstrazione(es) & " " & ( es) & " " & FormatSpace(NomeRuota(r1),5) & Format2(n(1)) & "." & Format2(n(2)) & "." & Format2(n(3)) & "." & Format2(n(4)) & "." & Format2(n(5)),1

Next

End Sub
 
Genios, ti lascio un giochetto x la tabellina "tavola pitagorica"

Codice:
Sub Main()

Dim tavolapitagorica(9,9) ' dimensiniamo la tabellina da creare 9x9 che in pratica è di dimensioni effettive di 10x10
'la matrici denominata in questo nostro caso "tavolapitagorica", comprendono sempre una 1a riga orizzontale ed una 1a colonna  verticale che normalmente hanno insito il valore "0" ..quini si avranno 1+9 righe e 1+9 colonne.

Con questo truccheto noi forziamo il normale costrutto utilizzando anche la riga e colonna "0"

For i = 0 To 9       '   (10 valori da 0 a 9 entrambi compresi)
    For y = 0 To 9   ' (10 valori da 0 a 9 entrambi compresi)
        tavolapitagorica(i,y) = (i+1)*(y+1)  ' in questa riga del calcolo, sommiamo +1ai valri di i ed y iniziali
    Next
Next

ScriviMatrice tavolapitagorica ' comando che scrive la matrice denominata "tabella" sopra costruita

End Sub

PS: la formattazione è già impostata nei parametri insiti in "ScriviMatrice"

Un saluto.
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    giovedì 23 gennaio 2025
    Bari
    86
    50
    83
    38
    78
    Cagliari
    11
    36
    52
    31
    74
    Firenze
    56
    59
    86
    27
    84
    Genova
    03
    61
    53
    11
    38
    Milano
    13
    14
    79
    87
    47
    Napoli
    21
    90
    48
    55
    37
    Palermo
    56
    46
    59
    02
    53
    Roma
    74
    13
    07
    38
    77
    Torino
    27
    54
    62
    36
    81
    Venezia
    09
    14
    69
    28
    62
    Nazionale
    32
    73
    27
    11
    51
    Estrazione Simbolotto
    Bari
    36
    27
    19
    08
    24

Ultimi Messaggi

Indietro
Alto