Quadrato Magico. Fondamenti di Programmazione

Documenti analoghi
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

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

Titoli azionari. Fondamenti di Programmazione

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

strutture e file di testo/binari Esercizio - lettura/filtro/scrittura PEOPLE.TXT PARTNERS.DAT Due persone sono compatibili

Codici a barre. Fondamenti di Informatica B

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

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

Fondamenti di Informatica T-1 Modulo 2

Dalla tabella alla funzione canonica

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

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Una successione numerica è una funzione : che associa ad ogni numero naturale un numero reale :. In simboli:

Linguaggio C++ 8. Matrici

Strutture dati e loro organizzazione. Gabriella Trucco

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

se d=0 Dimostrazione In una progressione aritmetica la differenza tra ogni termine e quello predente è uguale a d:

Esercizi 2. Marco Anisetti

ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND

Matrici. Prof. Walter Pugliese

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Gli Array. Dichiarazione di un array

Esercizio 1: calcolo insieme intersezione

Gestore di Stringhe 1

I quadrati magici. Ivana Sacchi -

Anno 4 Matrice inversa

Rappresentazione dell Informazione

QUADRATO MAGICO DI ORDINE PARI (n=4)

Laboratorio di Algoritmi e Strutture Dati

Appunti di Excel per risolvere alcuni problemi di matematica (I parte) a.a

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

Definizione di classi

SOLUZIONI. u u In un quadrato magico sommando gli elementi di una riga, di una

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

Gara Matematica. Dipartimento di Matematica Ulisse Dini. Viale Morgagni 67/a Firenze. Soluzioni edizione 2011

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

Insiemi: Rappresentazione

Rappresentazione dell Informazione

Laboratorio di programmazione

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

Laboratorio di Python

Fondamenti di Informatica

ESERCIZIO 1 (STRINGHE)

Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice

ESERCIZIO 1 (FILE DI TESTO)

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Matematica per Analisi dei Dati,

Introduzione ai grafi. Introduzione ai grafi p. 1/2

Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici

Fondamenti di Informatica T-1 Modulo 2

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Modificare il tipo di grafico Spostare, ridimensionare, cancellare un grafico

Esercizi su strutture dati

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

PROVA SCRITTA 23 MARZO 2010

Fondamenti di Informatica T-1

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Elementi di Informatica A. A. 2016/2017

Informatica B

Fondamenti di Informatica T-1. Classi & vettori

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

Esercizi di Algoritmi e Strutture Dati

Fondamenti di Informatica T-1. Classi e array

Dati aggregati. Violetta Lonati

STRUTTURE DI CONTROLLO DEL C++

Rappresentazione in complemento a 2: caratteristiche generali

Cicli annidati ed Array multidimensionali

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

MATRICI E SISTEMI LINEARI

Esercizi svolti. delle matrici

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3).

Introduzione alla programmazione

Lezione 6 programmazione in Java

Un secondo problema : Quadrato Magico

Fondamenti di Informatica

Indice. Prefazione. 3 Oggetti e Java 53

Prova d Esame Compito A

Fogli Elettronici. Idoneità Informatica Prof. Mauro Gaspari

GESTIONE DEGLI ERRORI

>= 0 gravemente insufficiente. sufficiente 1. >= 15 quasi sufficiente >= 18 sufficiente >= 22 discreto >= 25 buono >= 28 molto buono

La codifica. dell informazione

Programmazione II Compitino (Vers. A)

Creare l array presentato nei lucidi ([pippo, pluto, etc])

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

La classe java.lang.object

9In questa sezione. Ordinare e filtrare i dati. Dopo aver aggiunto dati ai fogli di lavoro, potresti voler

Problema. Vettori e matrici. Vettori. Vettori

Linguaggio C - Array. Array: tipo nome_array[num_elementi]

Programmazione II Compitino (Vers. B)

4 GLI ARRAY E LE STRINGHE

Programmazione Procedurale in Linguaggio C++

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Esercizi Programmazione I

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Esercitazione 3. Espressioni booleane I comandi if-else e while

Laboratorio di algoritmi e strutture dati

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

Transcript:

Quadrato Magico Si richiede lo sviluppo di un programma che permette all utente l inserimento di una matrice quadrata di numeri interi positivi e verifica se si tratta di un quadrato magico Una matrice quadrata di numeri interi è un quadrato magico se sommando i numeri posti lungo qualsiasi colonna, qualsiasi riga o una qualunque delle due diagonali si ottiene comunque lo stesso numero (detto costante magica del quadrato) Un quadrato magico è interessante solo se composto da numeri tutti diversi tra loro e ancor più se contiene numeri consecutivi a partire da 1

Esempio di quadrato magico 4 3 8 9 5 1 2 7 6

Esempio di quadrato magico 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

Quadrato magico (versione 0.0) Il programma, dopo aver presentato un saluto iniziale: - richiede all utente la lunghezza del lato del quadrato, controllando che sia maggiore di 2 e minore di un valore massimo prefissato (p.e. 10) - richiede all utente i numeri necessari al riempimento del quadrato - verifica se il quadrato è un quadrato magico - se lo è, presenta a video la sua costante magica

Suggerimenti progetto (primo passo) Il primo passo consiste nell identificazione delle classi necessarie E possibile individuare: una classe (istanziabile( istanziabile) ) per rappresentare ciascuna matrice quadrata una classe (tutta static) ) per il main e per altri metodi di utilità specifici del problema (p.e. il saluto, la creazione di una matrice) una classe (tutta static,, che potremmo riusare da programmi precedenti) per i metodi di utilità generale, quali le letture dei dati in input

Suggerimenti progetto (secondo passo) Progettare un programma non significa solo pensare a come sarà fatto ma anche a come sarà testato E opportuno definire un piccolo piano di test: una prova in cui si inserisce un quadrato banalmente magico (p.e. perche contiene tutti 1) una prova in cui si inserisce un quadrato banalmente non magico (p.e. perche contiene tutti 1 tranne un solo 2) una prova in cui si inserisce il quadrato magico di dimensione 3 visto in precedenza una prova in cui si inserisce lo stesso quadrato modificando uno dei valori in modo che non sia più magico

Suggerimenti progetto (terzo passo) Una possibile realizzazione della classe che rappresenta una MatriceQuadrata comprende: un attributo che rappresenta la matrice quadrata un costruttore per inizializzare tale attributo un metodo che restituisce un valore boolean corrispondente al fatto che la matrice sia un quadrato magico o meno un metodo che restituisce un intero corrispondente alla costante magica se la matrice è un quadrato magico, oppure un valore negativo (p.e. 1) se non lo è un metodo che restituisce la rappresentazione della matrice come String (disposta su piu righe) o che la stampa a video

Suggerimenti progetto (quarto passo) Una prima possibile realizzazione del metodo main prevede che esso: presenti un saluto effettui la richiesta della dimensione della matrice crei un array bidimensionale di interi di tale dimensione richieda all utente uno per uno i valori da inserire e li inserisca nelle corrispondenti caselle della matrice crei un istanza di MatriceQuadrata passando l array al suo costruttore stampi a video il contenuto della matrice Queste operazioni possono essere contenute in un metodo a sé stante

Suggerimenti progetto (quinto passo) Dopo aver verificato il buon funzionamento dell inserimento dati scrivere il metodo che verifica se la matrice è un quadrato magico e collaudarne il funzionamento Dopo aver collaudato il funzionamento di tale metodo, scrivere e collaudare il metodo che calcola la costante magica se la matrice è un quadrato magico

Quadrato magico (versione 0.1) Se la versione 0.0 è stata completata con successo, possiamo pensare a modificarne il ciclo di funzionamento: anziché far inserire una sola matrice, elaborarla e poi uscire, realizzare un ciclo che chiede all utente se vuole uscire o proseguire e se vuole proseguire permette l inserimento di una nuova matrice, la elabora, ripresenta l alternativa tra uscire e proseguire e così via...

Quadrato magico (versione 0.2) Se la versione 0.1 è stata completata con successo, possiamo pensare ad aumentarne le funzionalità: Aggiungere un metodo che verifica se i numeri contenuti nella matrice sono tutti diversi o ci sono numeri ripetuti Aggiungere un metodo che verifica se i numeri contenuti nella matrice sono consecutivi a partire da 1

Quadrato magico (versione 0.3) Eulero scoprì un ulteriore categoria di quadrati magici, detti panmagici (o anche diabolici) Essi sono quadrati magici nei quali è uguale alla costante magica anche la somma dei numeri situati in ogni coppia di linee complementari. Due linee sono complementari se sono parallele ad una diagonale, una è di k elementi (k=1,2,,n-1) 1) e l altra di n-k n k elementi, dove n è la dimensione della matrice Scrivere un metodo che verifica se la matrice è un quadrato panmagico

Esempio di quadrato panmagico 1 12 7 14 8 13 2 11 10 3 16 5 15 6 9 4

Linee complementari 1 12 7 14 8 13 2 11 10 3 16 5 15 6 9 4