Esercizio n 15



  • Esercizio n. 15
    di scossa data: 18/08/2015 10:38:37

    Come anticipato, l'esercizio che propongo è abbastanza semplice (ma è propedeutico per un eventuale problema "tosto").
    La seguente immagine riporta una parte di un intervallo di celle che inizia dalla cella A1 e - per questo esercizio - termina alla riga 53:




    Come potete intuire, rappresenta una tabella di marcia di un viaggio, la cui lunghezza in chilometri (min. 10 e max. 50) deve essere inserita in B2:




    In D2 inseriremo il valore 1 che rappresenta l'accelerazione iniziale da imprimere alla macchina:




    Come si può vedere, in automatico viene compilata la riga successiva con, in B3, i chilometri ancora da percorrere all'inizio della tratta e, in C3, la velocità a cui quella tratta verrà percorsa.

    Ora in D3 possiamo inserire la nuova accelerazione, che può essere solo -1 0 o 1, con il vincolo che la differenza in valore assoluto con l'accelerazione precedente deve essere o 0 o 1; quindi se l'accelerazione precedente era 1 la nuova non potrà essere -1 e, ovviamente, se l'accelerazione precedente era -1 la nuova non potrà essere 1.
    Lo scopo è quello di percorrere tutti i chilometri iniziali in meno tratte possibili arrivando però sani e salvi, cioè arrivare a km 0 (in D) con velocità 0 (in C), quindi dosando opportunamente freno (-1) ed acceleratore (0 o 1):




    Se andremo troppo veloci potrebbe succedere un disastro!:



    N.B.: notate che il computer di bordo ci segnala subito che a quella velocità non arriveremo mai a fermarci in tempo!

    Bene, l'esercizio consiste, per chi lo vuole affrontare con formule, nello scrivere, in B3 e C3, le formule che, copiate fino a riga 53, valutino l'accelerazione inserita e mostrino il risultato del calcolo in modo coerente con le immagini mostrate (la formattazione condizionale per il rosso ed il verde nonché un controllo sulla regolarità dell'accelerazione inserita sono facoltativi ma potrebbero avvantaggiare in fase di giudizio).

    Chi preferisce una soluzione VBA dovrà scrivere la routine di evento Change() del Foglio1, tale da ricreare il comportamento esposto, con l'obbligo di gestire anche il controllo sulla regolarità del valore di accelerazione digitato.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di Luca73 data: 18/08/2015 11:04:11

    Aiuto.... non vedo le immagini ma solo delle icone....






  • di scossa data: 18/08/2015 11:24:35

    cit.: "Aiuto.... non vedo le immagini ma solo delle icone...."

    strano, comunque qui (Esercizio15) trovi il testo dell'esercizio.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Textomb data: 18/08/2015 11:26:35

    Meno male che questo era l'esercizio semplice
    Complimenti per la fantasia. Molto interessante.
    Purtroppo al momento non posso cimentarmi.
    Seguirò con interesse gli interventi dei ns amici.



  • di Luca73 data: 18/08/2015 11:33:37

    Ho capito .... il tuo sito è bloccato dalla rete aziendale.....







  • di Vecchio Frac data: 18/08/2015 12:09:53

    Allego il file "esercizio15.docx" a beneficio di chi non vede il file di scossa.





  • di Vecchio Frac data: 18/08/2015 13:28:19

    Ho letto l'esercizio... carino carino!!
    Questo problema lo avevo già svolto per me tempo fa. A casa ho il file, devo recuperarlo e proporre il codice (adattandolo ovviamente).
    Non chiudetemi l'esercizio troppo presto però ^_^





  • di Luca73 data: 18/08/2015 14:08:05

    Grazie VF per il File....

    @ scossa
    mi confermi che
    1) la velocità a fine tratta è pari alla velocità a fine tratta precedente più l'accelerazione del tratto precedente
    2) la distanza residua è la distanza residua del tratto precedente meno la velocità del tratto precedente?
    Ciao Luca





  • di scossa data: 18/08/2015 14:25:07

    cit.: "Questo problema lo avevo già svolto per me tempo fa"

    Probabilmente hai preso spunto dallo stesso articolo che ha ispirato me, apparso su un vecchio numero di "Le Scienze" (ti parlo di oltre 20 anni or sono), nella rubrica "Giochi matematici".
    L'articolo illustrava un simulatore di gare automobilistiche (da giocare su un foglio a quadretti dopo aver disegnato un circuito a piacere) in cui la velocità e la direzione degli spostamenti lungo il tracciato seguiva le stesse regole:



    ..... ah, bei tempi!

    P.S.: spero di recuperare quel vecchio numero della rivista!

    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di scossa data: 18/08/2015 14:28:15

    cit.: "mi confermi che ....."

    Sì, confermo.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di ninai data: 18/08/2015 14:42:28

    ciao
    si, ma troppo lungo da leggere..........

    sono molto perplesso, comincio a fare qualche proposta "terra terra"

    QUESTO POST E' STATO MINACCIATO!!!



  • di Vecchio Frac data: 18/08/2015 15:11:50

    cit. "spero di recuperare quel vecchio numero della rivista! "
    ---> Sarebbe davvero simpatico! Però no purtroppo, devo deluderti... io avevo il pallino dei simulatori di calcio ^_^ Quell'esercizio lo avevo fatto per sviluppare un modello di moto accelerato in python poi portato in Excel (c'è la mia discussione di un paio di anni fa su questo forum... era un embrione di "esercizi" e aveva indovinato Textomb allora).

    Comunque ho concluso il mio modellino e sono pronto a postare il file col codice.





  • di scossa data: 18/08/2015 15:17:28

    cit. ninai: "Lo so, lo so che c'è qualche trabocchetto "

    Perché sei un "malfidente", e poiché non hai rispettato la (tacita) consegna che gli esperti devono aspettare almeno un giorno prima di rispondere, hai tempo 5 minuti per modificare il tuo intervento eliminando le soluzioni proposte


    cit. Vecchio Frac: "Comunque ho concluso il mio modellino e sono pronto a postare il file col codice"
    come ricordato a ninai, meglio che gli "esperti" aspettino almeno un giorno per pubblicare le loro proposte.

    AUGH!


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di scossa data: 18/08/2015 15:21:30

    cit. scossa: " apparso su un vecchio numero di "Le Scienze" (ti parlo di oltre 20 anni or sono), "

    Ehm ... mi sono tolto 10 anni, intendevo oltre 30 anni or sono


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Vecchio Frac data: 18/08/2015 15:23:18

    cit. "meglio che gli "esperti" aspettino almeno un giorno per pubblicare le loro proposte. "
    ---> Lo so, per questo ho solo comunicato di essere pronto :)

    cit. "mi sono tolto 10 anni, intendevo oltre 30 anni or sono"
    ---> Uno deve sempre sentirsi giovane dentro ^_^





  • di Raffaele_53 data: 18/08/2015 15:30:59

    Ciao a tutti

    @ninai
    mi puoi spiegare in colonna D la convalida dati, io non riesco con "personalizzato/formule"



  • di ninai data: 18/08/2015 15:36:58

    Ciao Raffaele

    per oggi non ti posso rispondere, sono stato minacciato
    Come vedi ho tolto le formule ed il file allegato,

    ma non ho fatto altro che mettere sotto operatore E() tutte le caratteristiche che deve avere il valore accelerazione:
    >=-1, <=1 ed il valore assoluto della differenza con l'accelerazione precedente deve essere <=1
    edit
    in effetti si dovrebbe aggiungere un'altra condizione, che il numero sia intero



  • di Raffaele_53 data: 18/08/2015 16:09:34

    @ninai
    Intendevo dire che nelle convalide dati uso sempre "Elenco"
    La richiesta era dovuta al fatto che mettendo "personalizzato/formule"
    La mia non funziona =SE(K2=-1;0;SE(K2=1;0;SE(K2=0;-1;1)))

    NB. Allegare file con Password ed alla fine farle presenti. Almeno io farei in questo modo.
    Ps K2 sono mie prove, in teoria = D2



  • di Luca73 data: 18/08/2015 16:18:46

    Ciao a tutti ho concluso anche io ....
    fatemi sapere quando poi postare la soluzione
    Caio
    Luca





  • di ninai data: 18/08/2015 16:32:04

    Raffaele
    questa è la mia formula in convalida, da D3:
    =E(D3>=-1;D3<=1;ASS(D3-D2)<=1;RESTO(D3;1)=0)


  • per i risolutori VBA esperti
    di scossa data: 18/08/2015 19:23:19

    cit. scossa: "Chi preferisce una soluzione VBA dovrà scrivere la routine di evento Change()"

    Voglio sottolineare, per chi opta per la soluzione VBA, che il codice deve essere esclusivamente nella routine dell'evento Change() del foglio.
    La valutazione terrà conto sia di eventuali Sub esterne a questa routine (in negativo), che (in positivo) del livello di controllo, da parte del codice, sulle azioni illecite del utente (valori di accelerazione non validi, tentativi di modificare le celle dei km o della velocità ...).

    Quindi rivedete i vostri codici


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Vecchio Frac data: 18/08/2015 20:25:45

    Ma che pignolo ^_^ Non l'hai detto stamattina!
    E da quando delle procedure esterne devono essere valutate in negativo? e se a me piace fattorizzare e modulare? :P
    Vabbè... domattina rivedremo il codicillo ^_^





  • di scossa data: 18/08/2015 20:33:43

    cit.: "Ma che pignolo ^_^ Non l'hai detto stamattina!"

    Era sottinteso in quel "dovrà scrivere la routine di evento Change()", comunque posso concedere di ricorrere a eventuali Function "di servizio" esterne richiamate dalla detta routine di evento, ma nient'altro.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Vecchio Frac data: 18/08/2015 20:39:42

    Se fossi un mio cliente mi faresti impazzire lo sento ^_^
    Comunque purtroppo domattina sono a un corso di formazione quindi non potrò dedicarmi... abbiate pazienza :)





  • di Marius44 data: 19/08/2015 07:31:22

    Un giorno è passato (anche se non 24h, ma poi devo uscire con la moglie). Ecco il mio lavoro che tiene conto delle restrizioni imposte e di quelle facoltative. Ovviamente in VBA!
    Ho provato anche con le formule e, sebbene fossi riuscito a controllare immissioni, accelerazioni, ecc, mi veniva fuori una sequela di "SE" che era veramente brutta a vedersi.
    Ciao,
    Mario



  • di Vecchio Frac data: 19/08/2015 08:00:11

    Prima di scappare posto la mia soluzione... spero che risponda ai requisiti richiesti ^_^
    Allegato file: "esercizio15 by VF.xlsm"





  • di Luca73 data: 19/08/2015 08:32:54

    Ciao a tutti allego anche il mio file
    giusto poche note
    è tutto in formule e formattazione condizionale tranne la fase di reset (cancellazione dati) che ho collegato ad un pulsante.
    Il controllo accelerazioni l'ho eseguito inibendo la riga successiva e facendo comparire un messaggio di Accelerazione sbagliata.
    Ho inoltre inserito una colonna NOTE in cui compaiono delle note ma non è utilizzata per calcoli o altro.
    L'unica informazione che si trova solo nella colonna "Note" è la mia interpretazione della richiesta cit "notate che il computer di bordo ci segnala subito che a quella velocità non arriveremo mai a fermarci in tempo!"
    Pertanto in particolari condizioni di distanza, velocità e accelerazioni l'informazione sarà "Impatto inevitabile" anche se all'arrivo mancassero diverse tratte.

    Certe formule si sono un po' incasinate nei SE in quanto mentre lavoravo ho previsto di modificare le accelerazioni delle tratte precedenti e a volte i messaggi non erano coerenti (quindi, per esempio, c'è un controllo sulla riga superiore che non sia vuota)

    Ciao
    Luca






  • di ninai data: 19/08/2015 09:10:56

    bene Luca, a questo punto è inutile che pubblico la mia, la tua è più o meno sullo stesso ragionamento, con in più elementi aggiuntivi molto interessanti



  • di Marius44 data: 19/08/2015 10:30:01

    @ninai
    cit.: "è inutile che pubblico la mia"

    ninai che abbandona!!!!
    Non ci posso creeeedereeee! Aspettiamoci un tornado o qualcosa di peggio.



  • di ninai data: 19/08/2015 11:58:44

    Marius
    Largo ai giovani.....

    Mi risparmio l'energia per la parte "tosta"

    scherzi a parte, allego ugualmente la mia iniziale proposta anche se, a questo punto, pleonastica



  • di Luca73 data: 19/08/2015 12:18:57

    @ ninai
    la prima parte sarà pleonastica,..ma l'uso della "convalida" dati è strepitoso per me.

    @ tutti
    Visto anche le domande di Raffaele_53 suggerirei di aprire una discussione riguardo alle convalide dati a parte....Cosa ne pensate?






  • di cromagno data: 19/08/2015 13:25:59

    Buongiorno, ho visto cha avete allegato (quindi posso scaricare il file di ninai senza censura??)...
    aggiungo anche il mio al carrello e mi scarico i vostri



  • di Luca73 data: 19/08/2015 13:45:35

    @ cromagno
    la bandiera a scacchi è un tocco da artista
    baco: accetta accelerazioni che non siano numeri interi...

    Ciao
    Luca





  • di cromagno data: 19/08/2015 13:57:04

    Pensavo di aver messo le limitazioni anche li... le ho messe praticamente ovunque....
    Comunque grazie, controllerò dopo.
    Buon pranzo



  • di Textomb data: 19/08/2015 16:37:33

    Purtroppo non posso guardare i vs file perchè sono senza pc.
    Però qualcosa ho fatto anche io.
    Ho cercato l'algoritmo che restituisce il traguardo in km in meno tratte possibili arrivando sempre sani e.salvi.
    Si tratta.di una quadrica di questo tipo
    a(a+n)+k1 in cui:
    a = numero accelerazioni impresse (1)
    n = rilascio acceleratore senza freno (0)
    k1 = durante la frenata (-1) eventuale provvisorio rilascio del freno (0). Nel caso vale sempre una tratta.
    Al momento non posso fare dei test ma dovrebbe funzionare.
    In questo modo si potrebbe costruire un cruscotto che suggerisce al pilota quali manovre adottare...
    Spero di essere stato abbastanza incasinato



  • di Luca73 (utente non iscritto) data: 20/08/2015 10:27:01

    Ciao a tutti
    il messaggio di Textomb di ieri mi ha molto stuzzicato e pertanto ho pensato a come far scrivere il percorso migliore ovvero quello in meno tratte.
    Ora sicuramente il percorso migliore (non avendo limiti di velocità) è quello che prevede di raggiungere la velocità massima. Come ha notato Textomb esiste una quadratica che delimita la velocità massima o meglio il numero massimo di accelerazioni fattibili. tale formula è
    K^2+K-S= 0
    dove
    S= numero di km da percorrere
    K= (T-1)/2 dove T è il numero di tratte minime
    la soluzione (unica in quanto la seconda è negativa) è=
    T = sqr(1+4*S)
    Come si intuisce per alcuni valori di S (calcolabili come S= (T^2-1)/4) S e T sono interi e T dispari.
    In questi casi il percorso prevede un numero equivalenti di accelerazioni e decelerazioni ed uno ed un solo tratto (di raccordo tra accelerazione e frenata necessario come input di progetto) ad accelerazione 0.
    Negli altri casi saranno necessari tanti tratti ad accelerazione 0 corrispondenti ad una somma di velocità corrispondente a quel tratto a coprire la differenza tra il numero di km effettivamente da percorrere e il la massima soluzione S dell'equazione precedente con T intero e dispari. Faccio notare che la soluzione dell'equazione corrisponde esattamente al numero di km che percorro durante i tratti in cui accelero e decelero assumendo di avere una sola alternanza tra accelerazione e decelerazione)
    Ora per minimizzare i numeri di tratte ad accelerazione 0 i km eccedenti vanno suddivisi il più possibili nel tratto a velocità massima più uno ed un solo tratto nella velocità corrispondente ai km che rimangono ulteriormente.

    Il programmino sotto riportato cancella i dati presenti nella colonna accelerazioni e inserisce quelli del percorso ideale.

    Per la precisione i percorsi ideali nelle ipotesi sopra descritte sono due nel caso in cui debba percorrere un tratto a velocità non massima ad accelerazione 0. Le due soluzioni corrispondono a percorrere il tratto in mezzo alla fase di accelerazione oppure in mezzo alla fase di decelerazione.
    Per comodità di programma ho optato per inserirlo nella fase di accelerazione.

    Ciao
    Luca



     
    Option Explicit
    
    Sub Reset()
    ' La macro Cancella i Dati presenti nel Foglio
    ' Reset Macro
        Range("D3:D53").ClearContents
        Range("B2").ClearContents
    End Sub
    
    Sub PercorsoIdeale()
    'La macro cancella i dati nel foglio eccetto i Km totali e calcola il percorso ideale
    
    Dim KmTot
    Dim NumTratte
    Dim NumMinTratte
    Dim NumZeri
    Dim kmMancanti
    Dim kmMancantiEsist
    Dim VelMax
    Dim Soluzione()
    Dim Index
    
    KmTot = Range("B2").Value2
    Reset
    Range("B2").Value2 = KmTot
    NumMinTratte = Sqr(1 + 4 * KmTot)
    VelMax = Int((Int(NumMinTratte) - 1) / 2)
    
    If Int(NumMinTratte) = NumMinTratte Then
        NumTratte = NumMinTratte
        NumZeri = 0
        kmMancanti = 0
        kmMancantiEsist = 0
    Else
        If Int(NumMinTratte) Mod 2 = 0 Then
            NumMinTratte = Int(NumMinTratte) - 1
        Else
            NumMinTratte = Int(NumMinTratte)
        End If
        NumZeri = Int((KmTot - (NumMinTratte ^ 2 - 1) / 4) / VelMax)
        
        kmMancanti = KmTot - ((NumMinTratte ^ 2 - 1) / 4) - (NumZeri * VelMax)
        If kmMancanti = 0 Then
            kmMancantiEsist = 0
        Else
            kmMancantiEsist = 1
        End If
        NumTratte = NumMinTratte + NumZeri + kmMancantiEsist
    End If
        ReDim Soluzione(0 To NumTratte)
        For Index = 0 To Int(NumMinTratte / 2) - 1 + kmMancantiEsist
            Soluzione(Index) = 1
        Next
        For Index = Int(NumMinTratte / 2) + kmMancantiEsist To NumTratte - 1
            Soluzione(Index) = 0
        Next
        Soluzione(NumTratte) = ""
        If kmMancanti <> 0 Then Soluzione(kmMancanti) = 0
        For Index = NumTratte - 1 To NumTratte - Int(NumMinTratte / 2) Step -1
            Soluzione(Index) = -1
        Next
        For Index = 0 To NumTratte
        Range("D2").Offset(Index, 0) = Soluzione(Index)
        Next
        
    End Sub
    



  • di scossa data: 20/08/2015 11:15:21

    @Textomb e @Luca73: IO VI SQUALIFICO A VITA!!!!! mi avete "bruciato" l'esercizio tosto!

    scherzi a parte, l'esercizio tosto era quello di farlo solo con le formule (niente VBA); cioè scrivere anche in D3 la formula, che trascinata fino a D53, permetta di costruire l'intera tabella con la migliore condotta di guida.
    Vabbbbbuono, chi avesse voglia di cimentarcisi ......

    P.S.: domani chiuderò l'esercizio 15 pubblicando l'esito ed il file riassuntivo.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di Vecchio Frac data: 20/08/2015 11:23:03

    Era un'ottima idea ^^
    ma scossa ne troverà altre :P






  • di Marius44 data: 20/08/2015 11:28:10

    @Luca73
    Veramente una geniale trovata (dividi l'onore con Alberto, se no chi lo sente!).
    Vedo se è possibile costruire un "cruscotto" con le indicazioni "vai più piano" oppure "accelera" per dare informazioni utili al pilota.

    Bravo.
    Mario



  • di Vecchio Frac data: 20/08/2015 11:47:58

    Potreste anche realizzare una proposta per il prossimo "Gioco del mese", magari costruita collettivamente... pensateci ^_^





  • di Luca73 data: 20/08/2015 12:04:26

    Titolo: SCUSE (non lo metto nel titolo vero senno' inganna)

    @ scossa
    sono dispiaciuto non pensavo di crearti problemi e dispiaceri. scusami,....

    @Marius44
    come vedi il mio programma riempie un vettore con il percorso prima di scriverlo.
    Se vuoi dare consigli al guidatore allora dovresti prevedere che nel momento in cui lui non segue il tuo suggerimento, ricalcoli la rotta a partire dal punto presente e quindi dai km mancanti in quel momento.
    sarebbe bello vedere sullo schermo modello navigatore: "ricalcolo...."





  • di Textomb data: 20/08/2015 12:38:07

    Senza saperlo, ho ultimato l'esercizio tosto di scossa. Tutto formule niente vba.
    E niente colonne di appoggio.
    Bello, pulito e lineare.
    Datemi però il tempo di tornare in possesso del mio pc...
    @Luca73
    bravo. Ma c'è una cosa che non mi convince molto. Ovvero come si comporta il codice in caso di km da percorrere che hanno un resto... es km. 52
    Purtroppo io non posso fare prove...



  • di Luca73 data: 20/08/2015 13:12:19

    @ textomb
    per 52 km (anche se sopra il massimale che era 50) la soluzione data è
    1 1 1 1 0 1 1 0 0 -1 -1 -1 -1 -1 -1
    Come ho cercato di spiegare in pratica il programma mette tutte le accelerazioni all'inizio, tutte le decelerazioni alla fine, il maggior numero di zeri in mezzo (alla massima velocità) e poi aggiunge uno zero in corrispondenza della velocità corrispondente ai i km che mancano.
    In questo caso la distanza più vicina sulla curva ideale è 42 con 13 mosse e una velocità massima di 6 pertanto per arrivare a 52 viene aggiunto un tratto a velocità massima 6 (e quindi arrivo a 42+6= 48) e poi uno 0 ai km mancanti ovvero (52-48=4)
    Ciao
    Luca





  • di scossa data: 20/08/2015 13:50:29

    cit.: Luca73"sono dispiaciuto non pensavo di crearti problemi e dispiaceri. scusami,...."
    Luca, stavo scherzando! Mi fa piacere vedere che l'esercizio proposto sia stato così stimilante.

    cit.: Textomb"Senza saperlo, ho ultimato l'esercizio tosto di scossa. Tutto formule niente vba."
    Bene, siamo ansiosi di vedere cosa hai partorito!


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Textomb data: 20/08/2015 14:29:52

    @Luca
    Perfetto. Scusami ma, come già detto, non posso fare prove al momento.

    @scossa.
    Grazie intanto per l'esercizio molto stimolante.
    Per vedere la mia proposta avrò bisogno di una settimana circa...



  • di cromagno data: 20/08/2015 16:00:40

    @Luca73 & Textomb
    beh, mi sembra il giusto constesto per dire che avete una marcia in più

    @scossa
    ma quindi vuoi già mettere il file "soluzioni"?
    Magari risponde qualche altro utente...
    Forse il "maxi-code" potrebbe scoraggiare a postare altro, ma credo che oltre a quelli che hanno risposto, in tanti altri abbiano creato il proprio file (e quindi sono invitati ad allegarlo ).



  • di scossa data: 20/08/2015 16:38:46

    cit. cromagno: "Magari risponde qualche altro utente..."

    posso anche aspettare, un paio di giorni, ma le novità credo potranno riguardare solo l'aspetto estetico (che non rientra nella valutazione), ma riguardo alle formule restano pur sempre quelle.

    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Textomb data: 20/08/2015 17:10:53

    Non potete aspettare anche il mio file...?



  • di cromagno data: 20/08/2015 17:31:20

    @scossa
    si, hai ragione...
    è solo che nei forum, quando si fanno quiz/esercizi rispondono sempre gli stessi, mentre (utopicamente) sarebbe bello vedere proposte da 30 utenti.

    [EDIT]
    Intendevo dire che sembra quasi che gli esercizi siano proposti solo per gli utenti esperti...
    Però a questo punto sta all'utente se postare o meno la sua soluzione, solo per uno spirito di gioco.

    Ok, me la son fatta e me la son risposta
    Come non detto ...



  • di scossa data: 20/08/2015 18:21:55

    cit.: "Non potete aspettare anche il mio file...?"

    Ma, se non ho capito male, il tuo riguarda la versione "tosta" cioè quella che "risolve" la colonna D, che non è l'obiettivo di questo esercizio, quindi è "fuori concorso" e puoi postarla liberamente appena in grado.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Textomb data: 20/08/2015 19:41:28

    @ scossa
    Si è proprio così. L'esercizio che ho sviluppato, sulla carta, riguarda la versione solo formule che risolve trascinando in basso la formula in colonna D.
    Però vorrei avere anche copia del file con le soluzioni di questo esercizio che potrò scaricare tra una settimana circa.

    @Marius
    Hai pensato come costruire un cruscotto che fornisce indicazioni al pilota in tempo reale?



  • di Marius44 data: 20/08/2015 22:04:55

    @Textomb
    Vai in Area51. Sto seguendo il consiglio di VF:
    "Potreste anche realizzare una proposta per il prossimo "Gioco del mese", magari costruita collettivamente... pensateci"

    Ovviamente vale per chi vuole starci.
    Ciao,
    Mario



  • di Vecchio Frac data: 20/08/2015 22:22:52

    Ogni tanto qualcuno mi ascolta





  • di scossa data: 21/08/2015 11:17:49

    Per prima cosa ringrazio tutti i partecipanti, considerato il periodo "vacanziero" non è andata male

    Ho raccolto le varie proposte nel file Es_15_Raccolta.xlsm.

    Per quel che riguarda le soluzioni VBA riporto di seguito le mie considerazioni, alcune oggettive altre soggettive.

    codice di Marius44:
    la gestione delle azioni illecite implementa un controllo parziale sull'accelerazione (se la precedente è 1 accetta 2, se 2 accetta 3 etc ...);
    la costruzione del codice ricorre all'uso, per me assolutamente da evitare, di etichette (1, 2, 3) e relativi salti ad esse.

    codice di Vecchio Frac:
    la gestione delle azioni illecite non prevede alcun controllo/correzione sulle eventuali modifiche a celle precedenti; ne consegue che la solidità del codice è piuttosto debole: a gioco finito (Game Over) se si digita qualcosa nelle celle di accelerazione la sub entra in loop ricorsivo (con continuo msgbox), a causa di Application.Undo senza la preventiva disabilitazione degli eventi; inoltre, sempre compiendo qualche azione poco ortodossa sulle celle D ho ottenuto un errore di "spazio stack esaurito" con conseguente crash di Excel (non ricordo quale azione e, visto le conseguenze, non ho cercato di replicarla).


    Per quanto riguarda le soluzioni lato formule, devo complimentarmi con ninai, Luca73 e cromagno per aver implemantato anche la convalida sul valore di accelerazione immesso; la mia soluzione (scossa_celle) non la prevede e, come formule sono praticamente le stesse utilizzate da ninai nella sua proposta.
    Alcune osservazioni.
    @ninai: in D2 la convalida (facoltativa) andrebbe rivista (deve accettare solo 1);
    @cromagno: la formula in C3 non può essere diversa da quelle successive (cit. vincoli: " .... scrivere, in B3 e C3, le formule che, copiate fino a riga 53 ..."); la convalida (facoltativa) nelle celle D3:D53 consente numeri decimali;
    @Luca73: se la cella B2 è vuota (a seguito click su RESET o per aver premuto canc) sarebbe più carino non vedere la riga sotto compilata.

    Visto che le soluzioni VBA hanno presentato alcune pecche sul controllo delle azioni e/o sulla verifica dell'input (vincolo obbligatorio per la soluzione VBA), sono molto indeciso nella scelta tra la proposta di Luca e quella di cromagno .... mumble ... mumble .... ok, la proposta di Luca ha un quid in più nella completezza delle informazioni fornite "durante il viaggio".

    Quindi l'onore e l'onere di proporre il prossimo esercizio spetta a: Luca73


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Vecchio Frac data: 21/08/2015 11:49:10

    Grazie scossa e complimenti a Luca73 ^_^





  • di Luca73 data: 21/08/2015 11:57:15

    Nooooooooo.......
    e adesso cosa vi propongo?

    Mumble mumble fatemici pensare un attimo.
    Ciao
    Luca





  • di Marius44 data: 21/08/2015 12:49:18

    Complimenti vivissimi a Luca73

    @scossa - esaustivo.

    Ciao a tutti,
    Mario



  • di cromagno data: 21/08/2015 14:37:18

    @scossa
    Ottimo epilogo

    @Luca
    Complimenti e... Auguri per il nuovo esercizio



  • di Textomb data: 28/08/2015 10:39:10

    Come anticipato, sono rientrato da poco in possesso del mio pc e quindi ho potuto trasferire i miei appunti sull'esercizio in questione.
    Allego il file relativo che prevede la compilazione dell'unico elemento e cioè i km iniziali del percorso previsto. Tutto il resto è automatico solo formule e niente VBA.
    Per testimoniare la bontà dell'elaborazione sviluppata dal pilota automatico, viene affiancato il grafico con le due linee (percorso e velocità) in modo da visualizzare immediatamente come le due linee convergono a fine tratta sullo zero.
    Resto in ogni caso disponibile alle critiche e/o insulti



  • di scossa data: 28/08/2015 10:48:27

    @Textomb:
    complimenti, bellissimo lavoro!
    Ottima l'idea di usare i nomi per le formule (è una soluzione che amo usare anch'io).

    Solo un appunto: mi pare che il grafico termini sempre un tratto dopo il tratto 0 - 0 (se 0 - 0 è raggiunto al tratto 12 il grafico converge sul 13)


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di Textomb data: 28/08/2015 11:08:34

    ciao scossa. grazie per il tuo gradimento.
    cit. ...il grafico converge sul 13
    Sull'asse delle ascisse ho voluto rappresentare le tratte in progressione. La tratta tuttavia è indicata al centro del medesimo segmento.
    Quindi la prima tratta parte in corrispondenza dell'asse del primo segmento così come l'ultima tratta viene indicata al centro dell'ultimo segmento (proprio in corrispondenza del suo rispettivo valore numerico)



  • di scossa data: 28/08/2015 11:36:55

    cit.: "così come l'ultima tratta viene indicata al centro dell'ultimo segmento (proprio in corrispondenza del suo rispettivo valore numerico) "

    A me risulta così (tratte 15 grafico converge su 16):




    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw)



  • di Luca73 data: 28/08/2015 11:55:13

    @ Textomb
    grazie
    non avevo mai pensato (e non sapevo nemmeno si potesse, o meglio avrei dovuto saperlo perchè qualcuno lo aveva suggerito n qualche risposta via VBA) di usare i nomi per calcolare formule.
    In effetti io ho usato celle di appoggio che poi è molto simile ma molto meno elegante.
    Ciao
    Luca





  • di Textomb data: 28/08/2015 12:08:35

    @scossa
    ho capito cosa intendevi.
    Perfettamente ragione c'hai!!
    ho sostituito il file in allegato inserendo il grafico con la modifica dovuta... Adesso dovrebbe rispondere bene.