Tags:
create new tag
view all tags

Homework (compito per casa) 1

3x+1 problem

Vedi anche: DomandeHomework104, SoluzioneHomework104, RisultatiHomework104



Descrizione

Preso un qualsiasi numero naturale strettamente positivo n, definiamo il successivo di n come segue:

  • se n è 1 non ci sono successivi;
  • se n è pari il successivo è n/2;
  • se n è dipari diverso da 1 il successivo è 3n---+1

Nessuno ha mai dimostrato che partendo da un qualsiasi numero naturale la sequenza generate con le regole sopradescritte è finita, raggiungendo il numero 1, tuttavia, c'è una forte congettura che questo sia questo il caso, anche perché ciò è stato sperimentalmente dimostrato per numeri anche molto grandi. Chi fosse curioso di conoscere lo stato dell'arte di questa congettura e i problemi collegati può consultare il sito: http://personal.computrain.nl/eric/wondrous/

Voi dovrete semplicemente scrivere un programma che prende in input un numero intero e scrive in output il numero di passi necessari affinchè la sequenza che comincia con quel numero raggiunga il numero 1.

Ad esempio, la sequenza che comincia con 3, prosegue con 10, 5, 16, 8, 4, 2, 1: quindi ricevendo in input 3, il programma deve stampare 7. Se l'input fosse 1, il programma deve stampare 0. Ecco una tabella che potrebbe esservi utile per testare il programma:

 
     1     0
     2     1
     3     7
     4     2
     5     5
     6     8
     7    16
     8     3
     9    19
    10     6
    11    14
    12     9
    13     9
    14    17
    15    17
    16     4
    17    12
    18    20
    19    20
    20     7

Input

Il vostro programma riceve in input semplicemente un numero intero;

Output

Il vostro programma deve stampare un numero intero che rappresenta il numero di passi in cui la successione si ferma su 1, usando un'istruzione del tipo:
   printf("%d\n",passi);

Attenzione NON producete nessuna altra scritta oltre i numeri, altrimenti il test automatico del vostro programma fallirà miseramente! frown

Come compilare ed eseguire il programma

  • usate un editor per scrivere il testo del programma e salvatelo in formato testo semplice in un file con l'estensione .c (ad esempio di nome trexpuno.c)
    • NON usate Word, Openoffice, Kword, Abiword che introducono caratteri strani
  • compilate (e contemporaneamente linkate) il programma con il comando
gcc -g -o trexpuno trexpuno.c
  • eseguite il programma scrivendo
./trexpuno

Come consegnare il programma

  • Avete tempo fino a Martedì 16 Novembre alle ore 24.00 (ora sono le 13:31 del 05).
  • Consegnate il testo del programma sorgente C da voi scritto. Io lo compilerò e testerò.
  • Usate esclusivamente la pagina di consegna. Non verranno accettate spedizioni via email.

-- IvanoSalvo - 05 Nov 2004

Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r4 - 2004-11-10 - IvanoSalvo






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback