Laboratorio di programmazione

Documenti analoghi
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Lab 04 Programmazione Strutturata"

Esercitazione 4. Comandi iterativi for, while, do-while

Fondamenti di Informatica T-1 Modulo 2

Parte 1: tipi primitivi e istruzioni C

1 Massimo pari e dispari di una sequenza

Laboratorio di informatica Ingegneria meccanica

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Schemi ricorrenti nei cicli. Contatori Accumulatori Flag Esistenza e universalità

Fondamenti di Informatica T-1 Modulo 2

Esempio: quanto mi piace questo corso! qufuafantofo mifi pifiafacefe qufuefestofo coforsofo!

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly

Lezione 6 programmazione in Java

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

Fondamenti di Informatica T-1 Modulo 2

laboratorio di python

LEZIONE 3: SELEZIONE

Esercitazione. Esercizio 1 Scrivere un programma che calcoli e visualizzi la somma degli interi pari da 2 a 1000 (estremi compresi)

PROGRAMMAZIONE: Le strutture di controllo

Laboratorio di Programmazione Laurea in Bioinformatica

PROGRAMMAZIONE: La selezione

L ELABORATORE ELETTRONICO

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Equazioni di 2 grado

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Esercizi. Filtraggio

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 -

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

a.a Codice corso: 21012, HOMEWORKS

10 Funzioni MATLAB. dove: output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

Elaborazione dell informazione

I.T.I.S L. Da Vinci G. Galilei Progetto: Diritti a Scuola - Matematica - Anno 2016

Esercizi 2. Marco Anisetti

Prof. Pagani Corrado ALGORITMI ESERCITAZIONI CICLI

0 Insiemi, funzioni, numeri

Primo modulo: Aritmetica

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice

Moltiplicazione. Divisione. Multipli e divisori

R. Cusani, F. Cuomo: Telecomunicazioni - DataLinkLayer: Gestione degli errori, Aprile 2010

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

#include <iostream> using namespace std; // int main ( ) { // --- Dichiarazione delle variabili int N ; float A, Pot;

L ELABORATORE ELETTRONICO!

Soluzioni dei quesiti di matematica (3)

Problemi, algoritmi e oggetti

Transcript:

Laboratorio di programmazione 9 novembre 2016 Sequenze di Collatz Considerate la seguente regola: dato un numero intero positivo n, se n è pari lo si divide per 2, se è dispari lo si moltiplica per 3 e si aggiunge 1 al risultato. Quando n è 1 ci si ferma. Questa semplice regola permette di costruire delle sequenze: la sequenza che si costruisce a partire dal numero n è detta sequenza di Collatz di n. Ad esempio, la sequenza di Collatz di 7 è: 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 È un noto problema aperto stabilire se ogni sequenza di Collatz termina (cioè, se arriva a 1). Scrivete un programma che chiede all utente un numero e mostra la sequenza di Collatz del numero (con tanto di lunghezza). Esempio di funzionamento Numero: 7 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Lunghezza: 17 Numero: 9 9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Lunghezza: 20 Medie Data una sequenza di numeri reali x1, x2,..., xn, sono dette rispettivamente: 1

Scrivete un programma che legga una sequenza di numeri reali in input. L inserimento va terminato appena l utente inserisce il valore -1. Per ogni valore inserito (xi) il programma controlla che esso sia STRETTAMENTE positivo, ovvero xi > 0; se ciò non accade il valore non viene considerato. Altrimenti il programma utilizza anche xi per il calcolo delle 4 medie. Per svolgere l esercizio usate Math.sqrt(double), Math.exp(double) e Math.log(double), che calcolano, rispettivamente, la radice quadrata, l esponenziale e il logaritmo naturale del loro argomento. Suggerimento. Naturalmente, per leggere la sequenza di numeri reali dovete usare un ciclo. Durante questo stesso ciclo potete: - Controllare che l input sia strettamente positivo - aggiornare i valori che vi servono per calcolare le varie medie utilizzando il nuovo valore letto (solo se esso è maggiore di zero). Per esempio, per poter calcolare la media aritmetica vi servirà una variabile (che indicheremo con n in questo suggerimento) in cui tenere il numero di valori letti fino a quel momento e una variabile (detta accumulatore, e indicata con tot in questo suggerimento) contenente la somma dei valori letti fino a quel momento (di che tipo devono essere queste due variabili?). Ogni volta che viene letto un nuovo valore si incrementa di uno la variabile n e si incrementa la variabile accumulatrice tot del valore letto (entrambe le variabili devono essere inizializzate a 0 prima del ciclo). State attenti a non incrementare né n né tot quando leggete un valore nullo o negativo o, nello specifico, il valore -1, che ha come unico scopo quello di terminare la sequenza degli input. Esempio di input senza valori da scartare 2 4 5-1 Esempio di output Media aritmetica: 3.666667 Media geometrica: 3.419952 Media quadratica: 3.872983 2

Media armonica: 3.157895 Notate che avrei ottenuto lo stesso output se i valori inseriti fossero stati: -3-7 4 2-600 -1000-3000 5-1 Numeri perfetti A) Un numero è perfetto se è uguale alla somma dei suoi divisori propri. Per esempio, 6 = 1 + 2 + 3 è perfetto. Scrivete un programma che, dato un intero in input scriva se esso è perfetto. : numero: 30 30 non è perfetto numero: 6 6 è perfetto B) Estendete il programma in modo che esso legga un numero limite e scriva quindi i numeri perfetti minori dell intero dato. Suggerimento: per fare ciò potete inserire il programma precedente in un ciclo che per ogni intero minore del limite controlla se esso è perfetto e in tal caso lo stampa. Limite? 1000 6 28 496 3

Numeri amichevoli A) Due numeri interi (x, y) sono detti amichevoli se la somma dei divisori di ciascuno è uguale all altro (fra i divisori è compreso l 1 escluso il numero stesso). Ad esempio (220,284) è una coppia di amichevoli, essendo 284 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 (che sono i divisori di 220) 220 = 1 + 2 + 4 + 71 + 142 (che sono i divisori di 284). Gli antichi greci ritenevano che le coppie di numeri amichevoli avessero certe proprietà mistiche. Scrivete un programma che, chieda in ingresso all utente due numeri interi, che chiameremo n1 e n2; il programma deve quindi controllare e comunicare all utente se n1 e n2 sono amichevoli. SUGGERIMENTO: dovete cercare i divisori di n1 (con un ciclo.), sommarli man mano che li trovate (con un accumulatore ) e controllare se la somma totale dei divisori di n1 è uguale a n2. SE la risposta è negativa, allora n1 e n2 non sono amichevoli (fine programma), ALTRIMENTI procedete controllando se anche la somma dei divisori di n2 è uguale a n1. Esempio di funzionamento richiesto: Inserire primo intero: 220 Inserire secondo intero: 228 Divisori di 220: 1 2 4 5 10 11 20 22 44 55 110. Somma = 284 Divisori di 284: 1 2 4 71 142 Somma = 220 220 e 284 sono numeri amichevoli Inserire primo intero 3 Inserire secondo intero: 7 Divisori di 3: 1 2 Somma 3 3 e 7 non sono numeri amichevoli B) Estendete il programma in modo che, letto un intero limite, stampi le coppie di numeri amichevoli minori del limite. 4

Primi gemelli A) Due primi p e q sono gemelli se p = q + 2. Scrivete un programma che calcola se due numeri sono primi gemelli. ( A tal fine dovete controllare che: p e q siano primi e che p=q+2 se p è il maggiore tra q e p) Numeri? 3 5 Sono primi gemelli Numeri? 7 11 Non sono primi gemelli B) Estendete il programma precedente in modo da sviluppare un programma che stampi primi gemelli minori di un intero limite fornito dall utente. (Suggerimento: usate un ciclo che scorra i numeri da 1 al limite e, per ogni numero primo q minore del numero dato, controlli se anche q+2 è primo ed è minore del numero dato come limite: in tal caso i due primi trovati sono gemelli. Alternativamente il ciclo può partire da limite-1 e decrementare fino a 1: per ogni primo p trovato, può controllare se anche q = p-2 è primo. INSOMMA CI SONO TANTE STRADE DIVERSE ma BUONE e GIUSTE per la risoluzione del problema!) Numero? 20 3 5 5 7 11 13 17 19 Stampa sequenza di numeri al contrario Scrivere un programma che prenda in ingresso una sequenza di numeri interi strettamente positivi x1, x2,..., xn (l inserimento termina al primo numero negativo inserito e scarta eventuali zeri inseriti dall utente). Letta la sequenza, il programma la stampa in ordine invertito e ne calcola quindi il valore xn-xn-1+x n-2-x n-3+ x n-4- x1. Inserisci i numeri: 3 5 0 7 5

9-6 Termine inserimento. Sequenza in ordine inverso: 9 7 5 3 Valore da calcolare=4 6