Polinomio di secondo grado: Calcolo delle soluzioni di una equazione di secondo grado: import GraphicIO.*; public class Polinomio2 {



Documenti analoghi
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Algoritmi di Ricerca. Esempi di programmi Java

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Fondamenti di Informatica I. Esercitazione 1

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

3. La sintassi di Java

Vettori Algoritmi elementari di ordinamento

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

ARRAY E STRINGHE. G. Frosini Slide 1

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Esercizi di programmazione in C

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Lezione 8. La macchina universale

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

RICHIAMI SULLE MATRICI. Una matrice di m righe e n colonne è rappresentata come

La selezione binaria

Introduzione al MATLAB c Parte 2

Programmazione 1 A.A. 2015/2016

Esercitazioni del Corso di Fondamenti di Informatica ARRAY. Prof. Giuseppe Manco. A cura di Ing. Andrea Tagarelli

Lab 04 Istruzioni, cicli e array"

Esempi di esercizi d esame

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Unità B3 Strutture di controllo

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

COGNOME E NOME (IN STAMPATELLO) MATRICOLA

Parte 2. Determinante e matrice inversa

Esercitazione Informatica I AA Nicola Paoletti

10 - Programmare con gli Array

Le variabili. Olga Scotti

Complessità computazionale

Definizione di classi con array di oggetti

SOLUZIONE ESERCIZIO 1

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Prova di Laboratorio di Programmazione

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

esercizi Esercizi / problemi

INFORMATICA - I puntatori Roberta Gerboni

Esercitazione 7. Procedure e Funzioni

AREA RETTANGOLO LIRE IN EURO

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione

Concetto di Funzione e Procedura METODI in Java

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

Esercizi della lezione 5 di Java

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

RICERCA DI UN ELEMENTO

Esercizi di programmazione

Array. Definizione e utilizzo di vettori

x 1 + x 2 3x 4 = 0 x1 + x 2 + x 3 = 0 x 1 + x 2 3x 4 = 0.

RETTE, PIANI, SFERE, CIRCONFERENZE

MATRICI E DETERMINANTI

Ottava Esercitazione. introduzione ai thread java mutua esclusione

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Fasi di creazione di un programma

Esercizi Capitolo 6 - Alberi binari di ricerca

ESAME DI STATO DI LICEO SCIENTIFICO CORSO SPERIMENTALE P.N.I. 2004

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Caricare un numero n float, calcolare e stampare il quadrato e il cubo di n. Diagramma di flusso

Programmazione dinamica

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Struttura di un programma Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

GESTIONE INFORMATICA DEI DATI AZIENDALI

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Corso di Informatica Medica Esercitazione 1I ! Alessandro A. Nacci - alessandronacci.com

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Laboratorio di programmazione

STRUTTURE ALGEBRICHE

Pre Test Matematica

Prova Scritta del 19/07/10

Testi di Esercizi e Quesiti 1

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Corso sul linguaggio Java

Funzioni. Il modello console. Interfaccia in modalità console

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Java: Compilatore e Interprete

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

ELEMENTI DI GEOMETRIA ANALITICA: LA RETTA.

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

MATEMATICA p = 4/6 = 2/3; q = 1-2/3 = 1/3. La risposta corretta è quindi la E).

Rilevazione degli apprendimenti. Anno Scolastico PROVA DI MATEMATICA. Scuola Secondaria di II grado. Classe Terza Tipo A. Codici. Scuola:...

Transcript:

Polinomio di secondo grado: public class Polinomio2 GraphicConsole.println ("Inserisci i coefficienti interi del polinomio di secondo grado"); int a = GraphicConsole.readInt("a ="); int b = GraphicConsole.readInt("b ="); int c = GraphicConsole.readInt("c ="); GraphicConsole.println (); GraphicConsole.println ("p(x) = "+a+"x^2 + "+b+"x + "+c); GraphicConsole.println (); double x = GraphicConsole.readDouble("x ="); double valore = a*x*x + b*x + c; GraphicConsole.println ("p("+x+") = "+valore); Calcolo delle soluzioni di una equazione di secondo grado: class Equazione int a=graphicconsole.readint("inserire il valore di a"); int b=graphicconsole.readint("inserire il valore di b"); int c=graphicconsole.readint("inserire il valore di c"); int delta=b*b-a*a*c; GraphicConsole.println("Soluzioni dell'equazione "+a+"x²"+b+"x"+c+"=0"); if (delta<0) GraphicConsole.println("Non esistono soluzioni reali."); else if (delta==0) double x=-b/(2.0*a); GraphicConsole.println("Soluzioni coincidenti x1=x2="+x); else double x1=(-b+math.sqrt(delta))/(2*a); double x1=(-b-math.sqrt(delta))/(2*a); GraphicConsole.println("Soluzioni reali e distinte x1="+x1+" "x2="+x2);

Classificazione di un triangolo date le misure dei suoi lati (1): /** * Legge tre numeri interi * che rappresentano i lati di un triangolo * e stampa un messaggio che dice se il triangolo è * equilatero, isoscele oppure scaleno. * * Versione con if innestati. */ class TriangoloA public static void main(string[] args) //finestra principale dell'i/o grafico // legge il valore dei tre lati System.out.println("Scrivi la lunghezza dei lati di un triangolo "); int a = GraphicConsole.readInt("a="); int b = GraphicConsole.readInt("b="); int c = GraphicConsole.readInt("c="); GraphicConsole.println(); GraphicConsole.print("Il triangolo è "); // confronta i lati e stampa il messaggio if (a==b) // equilatero oppure isoscele if (b==c) // equilatero GraphicConsole.println("equilatero"); else // isoscele GraphicConsole.println("isoscele"); else // isoscele oppure scaleno if (b==c) // isoscele GraphicConsole.println("isoscele"); else // isoscele oppure scaleno if (a==c) // isoscele GraphicConsole.println("isoscele"); else // scaleno GraphicConsole.println("scaleno"); Classificazione di un triangolo date le misure dei suoi lati (2): /** * Legge tre numeri interi * che rappresentano i lati di un triangolo * e stampa un messaggio che dice se il triangolo è * equilatero, isoscele oppure scaleno. * * Versione con contatore dei lati uguali. */ class TriangoloB public static void main(string[] args)

int uguali; // numero di coppie di lati uguali // legge il valore dei tre lati GraphicConsole.println("Scrivi la lunghezza dei lati di un triangolo "); int a = GraphicConsole.readInt("a="); int b = GraphicConsole.readInt("b="); int c = GraphicConsole.readInt("b="); GraphicConsole.print("Il triangolo è "); // calcola il numero di coppie di lati uguali uguali = 0; // confronta i lati if (a==b) uguali++; if (a==c) uguali++; if (b==c) uguali++; // stampa il messaggio if (uguali==0) GraphicConsole.println("scaleno"); else if (uguali==1) GraphicConsole.println("isoscele"); else // uguali vale sicuramente 3 GraphicConsole.println("equilatero"); Classificazione di un triangolo date le misure dei suoi lati (3): /** * Legge tre numeri interi * che rappresentano i lati di un triangolo * e stampa un messaggio che dice se il triangolo è * equilatero, isoscele oppure scaleno. * * Versione con condizioni composte. */ class TriangoloC public static void main(string[] args) /* legge il valore dei tre lati */ GraphicConsole.println("Scrivi la lunghezza dei lati di un triangolo "); int a = GraphicConsole.readInt("a="); int b = GraphicConsole.readInt("b="); int c = GraphicConsole.readInt("c="); GraphicConsole.print("Il triangolo è "); /* calcola il tipo di triangolo, * confrontando i lati, e stampa il messaggio */ if (a==b && a==c) GraphicConsole.println("equilatero"); else if (a==b a==c b==c) GraphicConsole.println("isoscele"); else

GraphicConsole.println("scaleno"); Calcolo del fattoriale (con verifica dell overflow): public class Fattoriale int n = GraphicConsole.readInt("n="); if (n < 0) GraphicConsole.println ("Impossibile calcolare il fattoriale di un numero negativo"); else int fattoriale = 1; boolean ok = true; for (int i = 2; i <= n && ok; i++) if (Integer.MAX_VALUE/fattoriale < i) GraphicConsole.println ("Il fattoriale è troppo grande"); ok = false; fattoriale *= i; // fattoriale = fattoriale * i if (ok) GraphicConsole.println (n+"! = "+fattoriale); Giorni trascorsi dall inizio dell anno: public class GiorniTrascorsi int giorno = GraphicConsole.readInt ("giorno: "); int mese = GraphicConsole.readInt ("mese: "); int anno = GraphicConsole.readInt ("anno: "); int giornitrascorsi = 0; for (int m = 1; m < mese; m++) switch (m) case 4: case 6: case 9:

case 11: giornitrascorsi += 30; break; case 2: if ( (anno % 4) == 0) giornitrascorsi += 29; else giornitrascorsi += 28; break; default: giornitrascorsi += 31; giornitrascorsi += giorno; GraphicConsole.println("Il "+giorno+"/"+mese+"/"+anno+" è il "+ giornitrascorsi+" giorno dell'anno "+anno); Calcolo della media dei voti (1): public class MediaEsami int numeroesami = GraphicConsole.readInt ("Numero esami: "); int totale = 0; for (int i = 1; i <= numeroesami; i++) totale += GraphicConsole.readInt ("Voto esame n. "+i+": "); float media = (float)totale/numeroesami; GraphicConsole.println ("media = "+media); Calcolo della media dei voti (2): /* fa uso di un vettore in cui memorizza i voti */ public class MediaEsami2 int numeroesami = GraphicConsole.readInt ("Numero esami: "); int esami[] = new int[numeroesami]; for (int i = 0; i < esami.length; i++)

esami[i] = GraphicConsole.readInt ("Voto esame n. "+(i+1)+": "); int totale = 0; for (int i = 0; i < esami.length; i++) totale += esami[i]; float media = (float)totale/numeroesami; GraphicConsole.println ("media = "+media); Calcolo del massimo, del sub-massimo e del minimo di un vettore: class MassimiMinimi public static void main(string args[]) //dichiarazione del vettore int v[]; int n=graphicconsole.readint("numero di elementi del vettore:"); //allocazione del vettore di n elementi v=new int[n]; //ciclo di lettura da input del vettore for(int i=0;i<n;i++) v[i]=graphicconsole.readint("inserire elemento "+i); //calcolo di massimi e minimi int massimo=v[0]; int s_massimo=integer.min_value; int minimo=v[0]; for(int i=1;i<n;i++) if (v[i]>massimo)//occorre aggiornare massimo e sub-massimo s_massimo=massimo; massimo=v[i]; else if (v[i]>s_massimo && v[i]<massimo)//occorre aggiornare solo il submassimo s_massimo=v[i]; if (v[i]<minimo) minimo=v[i]; //for GraphicConsole.println("Il massimo è: "+massimo); if(s_massimo==integer.min_value) GraphicConsole.println("Il sub-massimo non è definito per questo vettore"); else GraphicConsole.println("Il sub-massimo è: "+s_massimo); GraphicConsole.println("Il minimo è: "+minimo); //main //class

Verifica della simmetria ed inversione di un vettore: class Vettori public static void main(string args[]) //dichiarazione del vettore int v[]; int n=graphicconsole.readint("numero di elementi del vettore:"); //allocazione del vettore di n elementi v=new int[n]; //ciclo di lettura da input del vettore for(int i=0;i<n;i++) v[i]=graphicconsole.readint("inserire elemento "+i); boolean simmetrico=true; for (int k=0;k<v.length/2 && simmetrico;k++) if(v[k]!=v[v.length-k-1]) simmetrico=false; if (simmetrico) GraphicConsole.println("Il vettore è simmetrico e non ha bisogno di essere invertito."); else //inversione del vettore GraphicConsole.println("Il vettore non è simmetrico."); GraphicConsole.print("Il vettore invertito è: "); int i=0; while(i<n/2) int temp; temp=v[i]; v[i]=v[v.length-i-1]; v[v.length-i-1]=temp; i++; i=0; do GraphicConsole.print(v[i]+" "); i++; while(i<n); //else //main //class Calcolo della somma e del prodotto scalare di due vettori: class OperazioniVettori

public static void main(string args[]) //dichiarazione dei vettori int v1[],v2[],somma[]; int n=graphicconsole.readint("numero di elementi di entrambi i vettori:"); //allocazione dei vettori di n elementi ciascuno v1=new int[n]; v2=new int[n]; somma=new int[n]; //ciclo di lettura da input del 1 vettore for(int i=0;i<n;i++) v1[i]=graphicconsole.readint("inserire elemento "+i+" di V1"); //ciclo di lettura da input del 2 vettore for(int i=0;i<n;i++) v2[i]=graphicconsole.readint("inserire elemento "+i+" di V2"); //calcolo della somma GraphicConsole.print("Il vettore somma V1+V2 è:"); for(int i=0;i<n;i++) somma[i]=v1[i]+v2[i]; GraphicConsole.print(somma[i]+" "); //for GraphicConsole.println(""); //calcolo del prodotto scalare int ps=0; for(int i=0;i<n;i++) ps+=v1[i]*v2[i]; GraphicConsole.println("Il prodotto scalare di V1 e V2 è: "+ps); //main //class Operazioni di base su matrici: class Matrici /* lettura di una matrice r x c*/ public static int[][] letturamatrice(int r, int c) int [][] matrice=new int [r][c]; for (int i=0;i<r;i++) for(int j=0;j<c;j++) matrice[i][j]=graphicconsole.readint("elemento ("+i+","+j+") "); return matrice; /* stampa di una matrice di quaqlsiasi dimensioni*/ public static void stampamatrice(int [][] matrice) for (int i=0;i<matrice.length;i++) for(int j=0;j<matrice[0].length;j++) GraphicConsole.print(matrice[i][j]+" "); GraphicConsole.println("");

/* Calcola la somma degli elementi dell'array di array a. */ public static int sommadiretta(int[][] a) int s=0; // somma degli elementi di a for (int i=0; i<a.length; i++) for (int j=0; j<a[0].length; j++) s += a[i][j]; return s; /* Calcola la somma degli elementi dell'array a. */ public static int somma(int[] a) int s=0; // somma degli elementi di a for (int i=0; i<a.length; i++) s += a[i]; return s; /* Calcola la somma degli elementi dell'array di array a. */ public static int somma(int[][] a) int s=0; // somma degli elementi di a for (int i=0; i<a.length; i++) s += somma(a[i]); return s; /* Calcola la somma di due matrici di dimensioni identiche*/ public static int[][] sommamatrici(int[][] matrice1,int[][] matrice2) int n=matrice1.length; int m=matrice1[0].length; int[][] risultato=new int[n][m]; for (int i=0;i<n;i++) for (int j=0;j<m;j++) risultato[i][j]=matrice1[i][j]+matrice2[i][j]; return risultato; public static void main(string[] args) int [][] m1=letturamatrice(2,2); GraphicConsole.println("Somma diretta degli elementi della prima matrice "+sommadiretta(m1)); GraphicConsole.println("Somma per righe degli elementi della prima matrice "+somma(m1)); GraphicConsole.println(""); int [][] m2=letturamatrice(2,2); GraphicConsole.println("Matrice 1"); stampamatrice(m1); GraphicConsole.println("Matrice 2"); stampamatrice(m2); int [][] somma=sommamatrici(m1,m2); GraphicConsole.println("Matrice Somma"); stampamatrice(somma); //main //class

Esempio di risoluzione di una traccia d esame: Esercizio 1 Si consideri il seguente metodo: public static int esercizio(int[] v) for( int i=1; i<v.length; i++ ) if (v[i] < 0) return -1; for( int i=1; i<v.length; i++ ) int x=1; for(int j=i-1; j>=0; j-- ) x *= v[j]; if (x == v[i]) return 1; return 0; Si descriva sinteticamente l algoritmo che esso implementa e, in particolare, si specifichi il valore restituito dal metodo nel caso il parametro v valga: [1, 2, 1, 7, 14, 26, 48]. Esercizio 2 Si progetti una classe Esercizio2 per elaborare matrici di interi. In particolare bisogna estrarre da una matrice rettangolare M di dimensione 4 x 12 tre sottomatrici quadrate S, T, V di dimensione 4 x 4: M = S T V e calcolare la matrice R = V * S t + T, in cui S t è la matrice trasposta di S. Si implementino quindi (almeno) i seguenti metodi: 1. leggi che effettua la lettura da input degli elementi di una matrice m ricevuta parametricamente; 2. scrivi che scrive su output il contenuto di una matrice m passata come parametro 3. moltiplica che riceve due matrici quadrate m1 ed m2, supposte della stessa dimensione, e restituisce la matrice prodotto; 4. addiziona che riceve due matrici quadrate m1 ed m2, supposte della stessa dimensione, e restituisce la matrice somma; 5. trasponi che riceve una matrice m e restituisce la sua trasposta; 6. estrai che riceve la matrice rettangolare m ed un intero i e restituisce una delle matrici quadrate S, T, V a seconda del valore assunto da i (per esempio per i = 0 la matrice estratta sarà la S, per i = 1 la matrice estratta sarà la T e per i = 2 la matrice estratta sarà la V). 7. main che, utilizzando i metodi precedenti, provvede a effettuare l estrazione di S, T e V, il calcolo di R e, Esercizio 3 infine, la visualizzazione del suo contenuto. Scrivere un metodo calcolasommasucc che riceve in input due array V1 e V2 di n e k interi positivi rispettivamente e ritorna un vettore V3 di dimensione n i cui elementi sono calcolati nel seguente modo: ogni elemento V3[i] di V3, per i=0, n-1, è uguale alla somma degli elementi di V2 dalla posizione V1[i] alla posizione k -1. Ad esempio, se V1 = [5,3,2,6] e V2 = [4,5,2,6,7,1,10] allora V3[0] = V2[5] + V2[6] e così via, quindi V3 = [11,24,26,10].

Soluzione Esercizio 1: All invocazione del metodo public static int esercizio (int [] v): Viene effettuata una prima scansione del vettore (dal secondo all ultimo elemento) alla ricerca di eventuali valori negativi. Il primo elemento negativo incontrato causa la terminazione del metodo con valore di uscita pari a -1. Qualora la ricerca precedente non abbia successo, viene eseguita una seconda scansione del vettore (sempre dal secondo all ultimo elemento); durante questa scansione, per ogni i compreso tra 1 e v.length-1, viene calcolato il prodotto di tutti gli elementi compresi tra la posizione 0 e la posizione i-1. Se trova un elemento il cui valore è uguale al prodotto degli elementi alla sua sinistra, restituisce 1. Se neppure questa circostanza è verificata, il metodo restituisce 0. Nel caso in esempio, il metodo restituisce 1, in quanto v[4] = 14 è pari a v[0]*v[1]*v[2]*v[3]. Soluzione Esercizio 2: import corejava.*; public class Esercizio2 int M[][] = new int[4][12]; leggi (M); int S[][] = estrai (M,0); int T[][] = estrai (M,1); int V[][] = estrai (M,2); int St[][] = trasponi (S); int P[][] = moltiplica (V,St); int R[][] = addiziona (P,T); scrivi (R); public static void leggi (int m[][]) for (int i = 0; i < m.length; i++) for (int j = 0; j < m[0].length; j++) m[i][j] = Console.readInt ("m["+i+"]["+j+"]="); public static void scrivi (int m[][]) for (int i = 0; i < m.length; i++) for (int j = 0; j < m[0].length; j++) System.out.print (m[i][j]+" "); System.out.println (); public static int[][] moltiplica (int m1[][], int m2[][])

int dim = m1.length; int p[][] = new int[dim][dim]; for (int i = 0; i < dim; i++) for (int j = 0; j < dim; j++) int somma = 0; for (int k = 0; k < dim; k++) somma += m1[i][k] * m2[k][j]; p[i][j] = somma; return p; public static int[][] addiziona (int m1[][], int m2[][]) int dim = m1.length; int s[][] = new int[dim][dim]; for (int i = 0; i < dim; i++) for (int j = 0; j < dim; j++) s[i][j] = m1[i][j] + m2[i][j]; return s; public static int[][] trasponi(int m[][]) int t[][] = new int[m[0].length][m.length]; for (int i = 0; i < t.length; i++) for (int j = 0; j < t[0].length; j++) t[i][j] = m[j][i]; return t; public static int[][] estrai(int m[][], int i) int nrighe = m.length; int ncolonne = m[0].length/3; int e[][] = new int[nrighe][ncolonne]; for (int k = 0; k < nrighe; k++) for (int h = 0; h < ncolonne; h++) e[k][h] = m[k][h+ncolonne*i]; return e; Soluzione Esercizio 3: public static int[] calcolasommasucc (int[] v1, int[] v2) int n=v1.length, k=v2.length; int[] v3=new int[n]; for (int i=0;i<n;i++) v3[i]=0;

for (int j=v1[i]; j<k; j++) v3[i]+=v2[j]; return v3; Altri esercizi d esame: Esercizio 1 Si progetti una classe Matrice che implementi i seguenti metodi: 8. un metodo che effettui la lettura da input degli elementi della matrice; 9. un metodo che verifichi se la matrice A è a strisce orizzontali considerando la definizione sotto riportata; 10. il metodo main che utilizzi i metodi precedenti. Definizione: Sia A una matrice quadrata di interi di dimensione d; A è detta a strisce orizzontali se le righe di indice dispari presentano valori tutti nulli, mentre le altre righe presentano valori tutti non nulli (per maggiore chiarezza si veda l esempio seguente). Esempio: la seguente matrice (d = 5) è a strisce orizzontali 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 Esercizio 2 Dato un vettore V di interi di lunghezza n, scrivere una funzione che restituisca true se ogni elemento di V è maggiore del precedente (cioè V[i] >V[i-1] con i>0), false altrimenti. Ad esempio, se V=[5, 6, 8, 11, 15, 20, 26], la funzione restituirà true. Soluzione Esercizio 1: import corejava.*; class Esercizio1 private static void leggi (int mat[][]) for (int i = 0; i < mat.length; i++) for (int j = 0; j < mat[0].length; j++) mat[i][j] = Console.readInt ("M["+i+"]["+j+"]="); private static boolean astrisce (int mat[][]) boolean verificato = true; // righe di indice pari for (int i = 0; i < mat.length && verificato; i+=2)

for (int j = 0; j < mat[0].length && verificato; j++) if (mat[i][j] == 0) verificato = false; // righe di indice dispari for (int i = 1; i < mat.length && verificato; i+=2) for (int j = 0; j < mat[0].length && verificato; j++) if (mat[i][j]!= 0) verificato = false; return verificato; int numerorighe = 3; int numerocolonne = 3; int m[][] = new int [numerorighe][numerocolonne]; Matrice.leggi (m); if (Matrice.aStrisce(m)) System.out.println ("La matrice e' a strisce orizzontali"); else System.out.println ("La matrice non e' a strisce orizzontali"); Soluzione Esercizio 2: import corejava.*; public class Esercizio2 int V[] = 5, 6, 8, 11, 15, 20, 26; if (ordinato(v)) System.out.print ("ordinato"); else System.out.print ("non ordinato"); static boolean ordinato (int V[]) boolean ordinato = true; for (int i = 1; i < V.length && ordinato; i++) if (V[i] <= V[i-1]) ordinato = false; return ordinato;