Attachment '20091216-Esercitazione-LAB-Matrici-SOLUZIONI.txt'
Download 1 // Esercizio 1
2 // ===========
3 // Realizzare una piccola applicazione Java con un metodo
4 // main che invochi i metodi elencati di seguito, dopo aver effettuato da input le
5 // letture di quanto necessario (matrici e array).
6 //
7 // medodo 1 : dati una matrice ed un array, calcoli un nuovo array risultante dal
8 // prodotto della matrice per l'array dato.
9 //
10 // metodo 2 : date due matrici calcoli una nuova matrice risultante dalla somma
11 // delle due matrici date.
12 //
13 // metodo 3 : data una matrice, un array ed un numero intero k, sostituisca la
14 // k-esima riga della matrice data con l'array dato.
15 //
16 // metodo 4 : data una matrice, un array ed un numero intero k, sostituisca la
17 // k-esima colonna della matrice data con l'array dato.
18 //
19 // metodo 5 : data una matrice, restituisca "true" se la matrice è triangolare
20 // superiore, "false" in caso contrario.
21 //
22 // metodo 6 : data una matrice, calcoli una nuova matrice come trasposta della
23 // matrice data.
24 //
25 // metodo 7 : data una matrice, restituisca "true" se almeno un elemento della
26 // matrice è pari, "false" in caso contrario.
27 //
28 // metodo 8 : data una matrice, restituisca "true" se tutti gli elementi della
29 // matrice sono pari, "false" in caso contrario.
30 //
31 // metodo 9 : data una matrice, stampi la cornice più esterna.
32 //
33 // metodo 10 : data una matrice, calcoli la somma degli elementi della cornice più
34 // esterna.
35 //
36 // metodo 11 : data una matrice, restituisca "true" se la somma degli elementi
37 // sulla croce (diag. principale e diag. secontaria) è pari, "false" altrimenti.
38 //
39 // metodo 12 : dati due array, restituisca "true" se i due array sono identici,
40 // "false" altrimenti.
41 //
42 // metodo 13 : data una matrice ed un array, restituisca "true" se la matrice
43 // contiene ALMENO una riga identica all'array dato.
44
45
46
47 import java.util.*;
48
49 public class EsercitazioneLABmatrici01 {
50
51 public static Scanner input = new Scanner(System.in);
52
53 public static void leggiMatrice( int m[][] ) {
54 System.out.println("Inserire gli elementi della matrice - " + m.length + " righe, " );
55
56 for (int i = 0; i < m.length; i++) {
57 System.out.println(m[i].length + " elementi per la riga " + i);
58 for ( int j = 0; j < m[i].length; j++ )
59 m[i][j] = input.nextInt();
60 System.out.println();
61 }
62 }
63
64 public static void scriviMatrice( int m[][] ) {
65 for (int i = 0; i < m.length; i++) {
66 for ( int j = 0; j < m[i].length; j++ )
67 System.out.print( m[i][j] + " ");
68 System.out.println();
69 }
70 }
71
72
73 public static void matricePerVettore( int m[][], int v[], int ris[] ) {
74 for (int i = 0; i < m.length; i++){
75 int s = 0;
76 for ( int j = 0; j < v.length; j++ )
77 s = s + m[i][j] * v[j];
78 ris[i] = s;
79 }
80 }
81
82 public static void sommaMatrici( int m1[][], int m2[][], int ris[][] ) {
83 for (int i = 0; i < m1.length; i++)
84 for ( int j = 0; j < m1[i].length; j++ )
85 ris[i][j] = m1[i][j] + m2[i][j];
86 }
87
88 public static void sostituisciRiga( int m[][], int v[], int r ) {
89 for (int i = 0; i < v.length; i++)
90 m[r][i] = v[i];
91 }
92
93 public static void sostituisciColonna( int m[][], int v[], int c ) {
94 for (int i = 0; i < v.length; i++)
95 m[i][c] = v[i];
96 }
97
98 public static boolean triangolareSup( int m[][]) {
99 for (int i = 1; i < m.length; i++)
100 for ( int j = 0; j < i; j++ )
101 if (m[i][j] != 0)
102 return false;
103 return true;
104 }
105
106 public static void matriceTrasposta (int m[][], int t[][]) {
107 for (int i = 0; i < m.length; i++)
108 for (int j = 0; j < m[i].length; j++)
109 t[i][j] = m[j][i];
110 }
111
112 public static boolean almenoUnPari (int m[][]) {
113 for (int i = 0; i < m.length; i++)
114 for (int j = 0; j < m[i].length; j++)
115 if (m[i][j] % 2 == 0)
116 return true;
117 return false;
118 }
119
120 public static boolean tuttiPari (int m[][]) {
121 for (int i = 0; i < m.length; i++)
122 for (int j = 0; j < m[i].length; j++)
123 if (m[i][j] % 2 != 0)
124 return false;
125 return true;
126 }
127
128 public static void stampaCorniceEsterna (int m[][]) {
129 for (int i = 0; i < m.length; i++) {
130 for (int j = 0; j < m[i].length; j++)
131 if ( i == 0 || i == m.length-1 || j == 0 || j == m[0].length-1 )
132 System.out.print(m[i][j] + " ");
133 else
134 System.out.print(" ");
135 System.out.println();
136 }
137 }
138
139 public static int sommaCorniceEsterna (int m[][]) {
140 int somma = 0;
141 for (int i = 0; i < m.length; i++)
142 for (int j = 0; j < m[i].length; j++)
143 if ( i == 0 || i == m.length-1 || j == 0 || j == m[0].length-1 )
144 somma += m[i][j];
145 return somma;
146 }
147
148 public static boolean sommaCrocePari (int m[][]) {
149 int somma = 0;
150 for (int i = 0; i < m.length; i++)
151 for (int j = 0; j < m[i].length; j++)
152 if ( i == j || j == m.length - 1 - i )
153 somma += m[i][j];
154 return (somma % 2 == 0);
155 }
156
157 public static boolean arrayUguali(int a[], int b[]) {
158 if (a.length == b.length) {
159 for (int i = 0; i < a.length && i < b.length; i++)
160 if (a[i] != b[i])
161 return false;
162 return true;
163 }
164 return false;
165 }
166
167 public static boolean arrayInMatriceRiga( int m[][], int v[]) {
168 for (int i = 0; i < m.length; i++)
169 if (arrayUguali(m[i], v))
170 return true;
171 return false;
172 }
173
174 public static void main(String[] args) {
175 System.out.println("Inserire le dimensioni della matrice");
176 System.out.print("Numero di righe : ");
177 int nr = input.nextInt();
178 System.out.print("Numero di colonne : ");
179 int nc = input.nextInt();
180
181 int m[][] = new int [nr][nc];
182 int ris[][] = new int [nr][nc];
183
184 leggiMatrice(m);
185 scriviMatrice(m);
186
187 System.out.println("Inserire il vettore da moltiplicare per la matrice");
188 int v[] = new int[nc];
189 int r[] = new int[nr];
190 leggiArray(v);
191 matricePerVettore(m,v,r);
192 System.out.println("Il vettore risultante è : ");
193 stampaArray(r);
194
195 System.out.println("Inserire una seconda matrice da sommare alla prima");
196 int m1[][] = new int [nr][nc];
197 leggiMatrice(m1);
198 sommaMatrici(m,m1,ris);
199 System.out.println("La matrice risultante è : ");
200 scriviMatrice(ris);
201
202 System.out.println("Quale riga vuoi sostituire?");
203 int s = input.nextInt();
204 System.out.println("Inserire il vettore che sostituisce la riga " + s);
205 int v1[] = new int[nc];
206 leggiArray(v1);
207 sostituisciRiga(m,v1,s);
208 System.out.println("La matrice risultante è : ");
209 scriviMatrice(m);
210
211 System.out.println("Quale colonna vuoi sostituire?");
212 s = input.nextInt();
213 System.out.println("Inserire il vettore che sostituisce la colonna " + s);
214 int v2[] = new int[nr];
215 leggiArray(v2);
216 sostituisciColonna(m,v2,s);
217 System.out.println("La matrice risultante è : ");
218 scriviMatrice(m);
219
220 if (triangolareSup(m))
221 System.out.println("La matrice è triangolare superiore.");
222 else
223 System.out.println("La matrice non è triangolare superiore.");
224
225 System.out.println("La matrice trasposta della matrice originaria è la seguente...");
226 int ris2 [][] = new int [nc][nr];
227 matriceTrasposta(m,ris2);
228 scriviMatrice(ris2);
229
230 if (almenoUnPari(m))
231 System.out.println("La matrice contiene almeno un elemento pari.");
232 else
233 System.out.println("La matrice non contiene nessun elemento pari.");
234
235 if (tuttiPari(m))
236 System.out.println("Tutti gli elementi della matrice sono pari.");
237 else
238 System.out.println("La matrice contiene almeno un elemento non pari.");
239
240 System.out.println("La cornice più esterna della matrice originaria è la seguente...");
241 stampaCorniceEsterna(m);
242
243 System.out.println("La somma degli elementi della cornice più esterna della matrice originaria è : "
244 + sommaCorniceEsterna(m));
245
246 System.out.println("Inserire un array per verificare se è uguale ad almeno una riga nella matrice originaria.");
247 int v3[] = new int[nc];
248 leggiArray(v3);
249 if (arrayInMatriceRiga(m, v3))
250 System.out.println("La matrice ha almeno una riga uguale al vettore.");
251 else
252 System.out.println("La matrice non ha nessuna riga uguale all'array.");
253
254 }
255
256 public static void leggiArray(int a[]){
257 System.out.println("Inserire " + a.length + " numeri interi:");
258 for (int i=0; i < a.length; i++)
259 a[i] = input.nextInt();
260 }
261
262 public static void stampaArray(int a[]){
263 for (int i=0; i < a.length; i++)
264 System.out.println(a[i]);
265 }
266 }
Attached Files
You are not allowed to attach a file to this page.