Oppure

Loading
20/03/14 21:47
yaroze61
Ciao a tutti,
dai ragazzi una piccola idea...da solo non riesco... grazieeeeeeeeeeeeeeeeeeee:d:d:k:
aaa
22/03/14 9:24
gibra
Scusa la sincerità, ma non hai commentato nemmeno una riga di codice!!!

Non puoi pretendere che le persone 'perdano' il loro tempo per studiarsi la tua funzione solo perchè tu non hai commentato il codice (come invece suggerito da tutti i libri di programmazione).


A parte questo, ci provo:

A mio avviso,l'obiettivo di uscita che hai indicato:


Ingresso: sNota = 0001C0001D0001A0001B0001A0001B0001A0001B0001A0001B
Uscita: CompattaStringa = 1C1D
4(1A1B)



non è 'logicamente' corretto in quanto disomogeneo riferendoci ad un algoritmo.
La tua funzione dovrebbe utilizzare un algoritmo atto ad indicare sempre il numero di occorrenze, cioè:

1(1C)
1(1D)
4(1A)
4(1B)

Se la guardi sotto quest'ottica, la funzione si semplifica moltissimo diventando quasi banale.

Ora, invece, tu stai 'mescolando' due variabili completamente diverse come 'struttura', e questo complica di molto l'algoritmo perchè prima di conoscere il numero di occorrenze, devi analizzare la stringa dall'inizio alla fine ogni volta, e questo lo devi fare continuamente .

In base a quanto espresso, il diagramma di flusso dell'algoritmo dovrebbe essere questo:

- inizio a scorrere la stringa
- alla prima occorrenza creo un nuovo vettore della stessa
- alle successive occorrenze, incremento il vettore esistente

Come vedi, è davvero semplice! ;)

alla fine dell'analisi della stringa avrai ottenuto <x> vettori, ognuno dei quali ti darà il numero di occorrenze da cui potrai comporre il risultato finale come meglio ti aggrada.

aaa
31/03/14 15:55
yaroze61
Ciao,
davvero mi scuso hai ragione, normalmente metto sempre i commenti, soprattutto in queste occasioni.

Allora prova a vedere questa versione dei fatti, ho una situazione come segue

1A1B1C1A1B1C
2(2A2B)
5D5E
1A1B1C1A1B1C
2(2A2B)
5D5E

Come vedi dalla prima riga 1A1B1C è ripetuto due volte, quindi:

2(1A1B1C)
2(2A2B)
5D5E

2(1A1B1C)
2(2A2B)
5D5E

e fino a questo punto ci siamo adesso mi viene difficile fare:

2(2(1A1B1C)2(2A2B)5D5E)

cioè fare la doppia parentesi

Il mio obbiettivo è questo...

Grazie ancora e scusa per i commenti


Yaroze61






aaa
31/03/14 19:01
gibra
A parte il fatto che non hai aggiunto nulla a quanto 'non detto' in precedenza, il mio suggerimento resta tale e quale, come logica.
Ultima modifica effettuata da gibra 31/03/14 19:01
aaa
01/04/14 6:38
yaroze61
Ciao,
si la spiegazione è quasi la stessa perché forse non hai capito una cosa, va benissimo l'idea del raggruppamento scorrendo la stringa, ma facendo:

1(1C)
1(1D)
4(1A)
4(1B)

perdo la ripetizione 4(1A1B) e deve essere così...

Scusa sarò 'de coccio' ma come recupereresti la ripetizione...

Saluti

Yaroze61
aaa
01/04/14 20:02
gibra
Scusa, ma è chiaro che solo il processo di analisi della stringa può fornirti le ripetizioni.
Io ti ho solo suggerito di 'registrarle' utilizzando un sistema omogeneo.
aaa