Valutazione completa

Gli operatori logici hanno due versioni public class Valutazione { public static void main(String args[]) { System.out.println(f1() && f2()); System.out.println(f1() &  f2()); } public static boolean f1() { System.out.print(“Parte f1() “); return false; } public static boolean f2() { System.out.print(” – Parte f2() “); return true; } } L’output del programma precedente è Parte f1() … Leggi tutto

Ricerca binaria

(PROBLEMA) La ricerca binaria si applica agli array ordinati. Come controllo si può utilizzare il metodo predefinito java.util.Arrays.binarySearch(). Utilizzando l’istruzione return due volte si può semplificare l’espressione logica del while(), fare a meno della variabile risp, …

Ricerca sequenziale

Posizione di un valore k all’interno di un array v. public static int posizione1(double[] v, double k) { int risp=-1; for(int i=0; i < v.length; i++) if(v[i] == k) risp=i; return risp; } Posizione di un elemento (la prima...) public static int posizione2(double[] v, double k) { for(int i=0; i < v.length; i++) if(v[i] == ... Leggi tutto

Fusione di 2 array

A partire da due sequenze ordinate, v1 e v2, si vuole realizzare una terza sequenza ordinata v3. public static double[] merge(double v1[], double v2[]) { int i1=0, n1=v1.length, i2=0, n2=v2.length, i3=0, n3=n1+n2; double v3[] = new double[n3]; while(i1 < n1 && i2 < n2) { if(v1[i1]

Ordinamenti ingenui

Due elementi Scambiare i valori contenuti nell’array v alle posizioni a e b void SCAMBIA(double v[], int a, int b) {    double temp=v[a];    v[a]=v[b];    v[b]=temp; } Ordinare un array di due elementi if(v[0] > v[1])   SCAMBIA(v, 0, 1); oppure… if(v[0] > v[1]) {    double temp=v[0];    v[0]=v[1];    v[1]=temp; } … Leggi tutto

Ordinamenti evoluti

Gli ordinamenti evoluti utilizzano degli algoritmi con complessità minima. Merge sort Utilizza la funzione merge() che realizza la fusione di 2 sotto array già ordinati void mergeSort(double[] v, int inf, int sup) { if(inf < sup) { int medio=(inf+sup)/2; mergeSort(v, inf, medio ); mergeSort(v , medio+1, sup); merge (v, inf, medio , sup); } } ... Leggi tutto

Input controllato > Secondi #2

Dato come input il numero di secondi, convertire il tempo in ore, minuti e secondi con input controllato ripetizione. import javax.swing.JOptionPane; public class Secondi2 { public static void main(String args[]) { String stringa; long sec; do { do { stringa=JOptionPane.showInputDialog(“Secondi? (0 per uscire)”); sec =Long.parseLong(stringa); } while(sec < 0); long ore, min, sec2; ore =sec/3600; ... Leggi tutto

Input controllato > Cerchio #2 #3

Vedi Cerchio #1… Input controllato della misura del raggio Ripete finché (raggio <= 0) import javax.swing.JOptionPane; public class Cerchio2 { public static void main(String args[]) { double raggio, diametro, circonferenza, area; // INPUT CONTROLLATO String stringa; do { stringa=JOptionPane.showInputDialog(“Raggio?”); raggio =Double.parseDouble(stringa); } while(raggio <= 0); diametro     =2*raggio; circonferenza=2*Math.PI*raggio; area         … Leggi tutto

Input controllato > Triangolo

Perimetro e area di un triangolo qualsiasi date le misure dei lati, con input controllato ogni lato > 0 la somma di 2 lati è maggiore del terzo lato import javax.swing.JOptionPane; public class Triangolo { public static void main(String args[]) { String stringa; double lato1, lato2, lato3; // // INPUT CONTROLLATO //  do { do … Leggi tutto

Cilindro has Cerchio

La classe Cerchio public class Cerchio { private double raggio; public Cerchio(double r)      { raggio=r;                     } public double diametro()      { return 2*raggio;              } public double circonferenza() { return 2*Math.PI*raggio;      } public double area() … Leggi tutto