Newsgroup: it.comp.lang.visual-basic
Titolo: aiuto programmino stupidissimo

Salve NG,,,
devo fare sto programma
input------------->   LLINNONNL
OUTPUT--------> L=3 , I=1,N=4,O=1
il dato e' di tipo string...non posso usare gli array....
premetto che l'ho fatto in C dove faccio due cicli for annidati ...
ma in VB come  si fa????
(ci sono gli array in vb?? perche' si fa sempre rif a matrici?!?!)
ps: Il mio prof mi ha detto che non posso usare gli array comunque per
questo esercizio..ne' funzioni particolari.
aloha
Lino
ps:scusate ma sono nuovo.......

...

E perchè mai non potresti usare gli array dato che è string?
basta che fai
Dim CharArray As Byte
CharArray() = StrConv(MyString, vbFromUnicode)
Comunque dato che il tuo prof ti ha detto che non puoi usarli comunque
lascia che ti dica una cosa:
il tuo prof è un deficente.
Perchè mai ad un programmatore si dovrebbero eliminare delle possibilità?
L'importante non è come si arriva alla soluzione, ma arrivarci.
Piuttosto dovrebbe impegnarsi di più lui a trovare problemi risolvibili in
altro modo.
Non vedo proprio perchè alla gente piace rendere le cose più difficili di
quello che sono.
D'altra parte senza array io farei così (ma perchè aiuto qualcuno a fare i
compiti? In cinque anni di superiori non li ho mai fatti una volta, e solo
quando avevo voglia li copiavo...):
For L = Asc("A") to Asc("Z")
    Count = 0
    For i=1 to Len(MyString)
        if Asc(Mid$(MyString,L,1) = L then
            Count = Count +1
        End if
    Next i
    Debug.Print Count
Next L
Comu puoi vedere però, senza array non puoi metterti via i vari valori per
un uso futuro.
Ciao.
(Chissà se funziona? L'ho fatto di fretta)

sembra un compito , e sembra che hai gia' esperienza su altro linguaggio ,
quindi :
sull'help cerca MID & CHR
per CHR(65) = A CHR(66) = B ...
se non basta riposta
by


Ciao, se utilizzi la funzione MID, puoi elaborare la variabile stringa
come se fosse un vettore. Come presumo tu abbia fatto in C.
MID(Variabile, Posizione  ,Numeri di Caratteri)
Posizione lo incrementi da 1 a LEN(Variabile)
Numeri di Caratteri nel tuo caso è = 1
Ciao Massimo

quello che sono.
magari cerca di sviluppare il modo di ragionare.. serve a far prevedere una
serie di possibilità per poi optare sulla migliore.
nell'esempio manca una cosa..... indicare la Lettera .... Debug.Print
Mid$(mystring,l,1)+": "+count
ciao Davide

Mid$(mystring,l,1)+": "+count
Vero.
Ciao.

...

VERO, MEA CULPA (ma l'ho scritto in 30 sec...).
Ciao.

necessario passare da Roma.
però se ti fermi a Roma non è poi così male :-))
ciao Davide

evitabile e soprattuto risulta molto comodo
Sono proprio curioso!


ok...
non ricordo chi ha chiesto per l'ennesima volta come si sviluppa un sistema
per il super enalotto....
siamo nell'ipotesi di più cicli nidificati...
per evitare noiose perdite di tempo quando si può invece saltare uno o più
cicli conviene utilizzare GoTo...ovviamente ci sono anche una serie
parecchio complessa di If Then Else con inclusi ExitFor
il punto però è che servono quasi come il pane 4 salti di Riga con GOTO
l'esempio è abbastanza chiaro... comunque lo spiego meglio per chi non ha
mai provato a sviluppare un sistema
per l'enalotto le garanzie di vincite vanno dai 3 ai 6 punti...tuttavia si
considera anche l'ipotesi della garanzia di 2 punti per chi preferisce uno
sviluppo bi-ridotto
ammettiamo l'ipotesi di sviluppare sistemi che contengano al massimo 10
numeri per bolletta,
ebbene
se vogliamo sviluppare il nostro sistema in decine la prima colonna sarà
1 2 3 4 5 6 7 8 9 10
di seguito ti elenco le possibili seconde colonne dello sviluppo in base
alla garanzia richiesta dall'utente
Garanzia 2---- seconda colonna 01 11 12 13 14 15 16 17 18 19
Garanzia 3---- seconda colonna 01 02 11 12 13 14 15 16 17 18
Garanzia 4---- seconda colonna 01 02 03 11 12 13 14 15 16 17
Garanzia 5---- seconda colonna 01 02 03 04 11 12 13 14 15 16
Garanzia 6---- seconda colonna 01 02 03 04 05 11 12 13 14 15
per cui come ben vedi quando il ciclo si trova in A10 o in A9 o in A8 o in
A7 se non salti direttamente due,tre,quattro o cinque cicli ti devi sorbire
un mare di colonne che nello sviluppo non rientreranno mai !!!
infatti se il ciclo prende in considerazione come prima colonna la 1 2 3 4 5
6 7 8 9 10 , la seconda colonna che verrà presa in considerazione sarà la 1
2 3 4 5 6 7 8 9 11 ... e così via fino a che il programmatore non si accorge
che sono passate due ore e siamo ancora allo 0.0000001 %   :-)))
adesso dimmi....
che tu sappia è possibile evitare quello spreco di colonne con una
istruzione del tipo ExitFor^3 (al cubo) che salta 3,4 cicli tutti insieme
???
mi sembra invece abbastanza evidente che in questo caso la Goto è di una
praticità che non c'è l'eguale !!!
ciao
Davide Greco
---------------------------------------------------------
For A1=1 to N-9
For A2=A1+1 to N-8
        controlla se la Garanzia sia già rispettata nello sviluppo (x
garanzia 2)
For A3=A2+1 to N-7
        controlla se la Garanzia sia già rispettata nello sviluppo (x
garanzia 3)
For A4=A3+1 to N-6
        controlla se la Garanzia sia già rispettata nello sviluppo (x
garanzia 4)
For A5=A4+1 to N-5
        controlla se la Garanzia sia già rispettata nello sviluppo (x
garanzia 5)
For A6=A5+1 to N-4
        salta Ciclo se loSviluppo chiede fino a 6 numeri
        controlla se la Garanzia sia già rispettata nello sviluppo (x
garanzia n)
        se lo sviluppo chiede 6 numeri Controlla Condizioni Sistema
        se tutto è Ok aggiungi Colonna allo Sviluppo
For A7=A5+1 to N-3
        salta Ciclo se loSviluppo chiede fino a 7 numeri
        controlla se la Garanzia sia già rispettata nello sviluppo  (x
garanzia n)
        se lo sviluppo chiede 7 numeri Controlla Condizioni Sistema
        se tutto è Ok aggiungi Colonna allo Sviluppo
                - a qualunque livello di garanzia qui serve una GoTo-
For A8=A5+1 to N-2
        salta Ciclo se loSviluppo chiede fino a 8 numeri
        controlla se la Garanzia sia già rispettata nello sviluppo  (x
garanzia n)
        se lo sviluppo chiede 8 numeri Controlla Condizioni Sistema
        se tutto è Ok aggiungi Colonna allo Sviluppo
                - a qualunque livello di garanzia qui serve una GoTo-
For A9=A5+1 to N-1
        salta Ciclo se loSviluppo chiede fino a 9 numeri
        controlla se la Garanzia sia già rispettata nello sviluppo  (x
garanzia n)
        se lo sviluppo chiede 9 numeri Controlla Condizioni Sistema
        se tutto è Ok aggiungi Colonna allo Sviluppo
                - a qualunque livello di garanzia qui serve una GoTo-
For A0=A5+1 to N
        controlla se la Garanzia sia già rispettata nello sviluppo  (x
garanzia n)
        se lo sviluppo chiede 10 numeri Controlla Condizioni Sistema
        se tutto è Ok aggiungi Colonna allo Sviluppo
                - a qualunque livello di garanzia qui serve una GoTo-
NEXT A0
NEXT A9
NEXT A8
NEXT A7
NEXT A6
 prevede Salto Riga
NEXT A5
 prevede Salto Riga
NEXT A4
 prevede Salto Riga
NEXT A3
 prevede Salto Riga
NEXT A2
NEXT A1