welcome: please sign in
location: attachment:04-LAB-Matrici-SOLUZIONI.txt of InformaticaCDLmatematica

Attachment '04-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.