Esercizio di programmazione

Meditando sul recente post fantastico e sulle possibilità di dimostrarlo, mi è venuto in mente che si potrebbe avere un aiuto sviluppando prima un programmino:

Si tratta di scrivere un programma che dato un qualsiasi numero – in forma di numero – applica la procedura descritta nel post e quindi verifica che la successione termina necessariamente con 3.

Il programma potrebbe poi essere usato per verificare che, dato un numero, per tutti i numeri minori od uguali la sequenza termina. Il programma potrebbe anche calcolare il numero di termini intermedi di ciascuna sequenza, determinando, quindi, per quale numero la sequenza è minima.

Mi sembra abbastanza (anche per un credito)

P.S.

l’esercizio è adatto ad un pubblico adulto, cioè a chi sa già programmare ma non è determinante la classe cui appartiene

Annunci
Questa voce è stata pubblicata in Algoritmi, Esercizi, Informatica, M3, M3.1112, M5, Matematica.curiosa, Programmazione, Successioni e contrassegnata con , , , , . Contrassegna il permalink.

25 risposte a Esercizio di programmazione

  1. bobcarr ha detto:

    ok, direi che è stato fatto un buon lavoro per poter illustrare il concetto di : “come l’informatica può essere di aiuto per questioni matematiche o simili”

    adesso è ora di pensare a qualche problemino più interessante

    state in ascolto

  2. Filippo Bisconcin ha detto:

    Prof ho iniziato a fare quella analisi sui numeri dei giri per ogni numero, sono arrivato fino a 1020 ma non ho ancora trovato nessun “picco” sul numero di giri

  3. bobcarr ha detto:

    Dimenticavo: i sorgenti dei due programmi sono disponibili nella sezione download; per chi volesse darci un’occhiata.

  4. bobcarr ha detto:

    Alla scadenza fissata al 30 settembre 2011 due studenti hanno consegnato il programma richiesto: Bisconcin 3A e Bastianetto 4A.
    Entrambi risolvono il problema di conversione. Il programma più corto è quello di Bastianetto però, in considerazione della sua appartenenza a classe superiore concludo che i due sono a pari merito. Decido qundi di assegnare 1/2 credito a ciascuno.

    Resto deluso per la mancanza riconsiderazioni teoriche sul problema di una dimostrazione formale del problema posto.

  5. Filippo Bisconcin ha detto:

    Prof io l’ho finito,
    sono esattamente 280 righe di codice, sicuramente gli altri lo faranno più corto poichè ho fatto ogni singola eccezione (del tipo ventotto e non ventiotto, oppure ventuno non ventiuno)

    • Filippo Bisconcin ha detto:

      il problema di terminare da un loop l’avevo risolto così:

      (Visual Basic)

      numero = da input
      Do While numero numero2testo(numero).ToString.Length
      numero = numero2testo(numero).ToString.Length
      Loop

      Ps: numero2testo è la funzione che ho creato che si richiama inserendo tra parentesi il paramentro numerico che restituisce sottoforma di testo

    • Filippo Bisconcin ha detto:

      c’era un errore, ecco la correzione

      numero = da input
      Do While numero = numero2testo(numero).ToString.Length
      numero = numero2testo(numero).ToString.Length
      Loop

  6. Edoardo Bastianetto ha detto:

    Ne ho fatto uno che accetta numeri fino a un miliardo, stampa colonne con: numero del passaggio, numero corrente, numero corrente in forma letterale.
    Prof ho usato una ricorsione in questo modo non do per certo che deve terminare con 3 dato che non è stato ancora dimostrato, credo.

    • bobcarr ha detto:

      bene e si può vedere questo programma?

      non capisco bene cosa vuoi dire che non sai se termina

      • Edoardo Bastianetto ha detto:

        Si esce dalla ricorsione non quando il numero è uguale a 3 ma quando la lunghezza del numero trasformato in lettere è uguale al numero in ingresso per evitare loop infiniti nel caso esistano altri numeri con la stessa proprietà del 3. Adesso lo invio

        • bobcarr ha detto:

          e se ci fossero loop di due (o più) termini? tipo n -> “m” -> k ->”y”->n ?

        • Edoardo Bastianetto ha detto:

          allora bisognerebbe fare un vettore che tiene conto di tutti i numeri raggiunti finora e ogni volta che ne prendiamo uno nuovo controlliamo se è già stato raggiunto precedentemente, in questo caso vuol dire che siamo caduti in loop a più termini, è richiesto?

        • bobcarr ha detto:

          no, però per una dimostrazione generale bisogna tenerne conto

  7. bobcarr ha detto:

    Il Filippo ha risolto il problema (parziale) di convertire un numero in parole però, visto come vanno le cose modifichiamo il problema come segue:

    ricchi premi per chi produce un programma – il più corto possibile – che converte un numero in parole e che accetti numeri fino a 1.000.000.

    tempo massimo 30 settembre

  8. Filippo Bisconcin ha detto:

    Prof potrebbe darmi il suo indirizzo mail?

  9. Filippo Bisconcin ha detto:

    Le mando il codice via mail poichè sono 101 righe di codice

  10. Filippo Bisconcin ha detto:

    Prof ci sono riuscito, da sempre 3 come risultato!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...