/* GOBBY dai pc 172.22.83.53 //Da locale funziona da fuori (portatili) atrent.it:993 */ // METODI statici (per ora) import java.util.*; public class Metodi2 { public static final double MINY=-1.5,MAXY=1.5; public static final int WIDTH=80,HEIGHT=25; static double maxX, minX; /* - (dopo) chiedere all'utente quale funzione va plottata (sin, cos, tan....) - chiedere all'utente i limiti per x (min import java.util.Scanner;, max) - chiedere all'utente il carattere da usno: X in orizzontale) DEVO cioè inventarmi un "metodo" (appunto!) per disegnare sullo schermo in un punto qualsiasi are per plottare - PLOTTARE funzione (ruotando il piano cartesia*/ //ora che le variabili sono esterne al main mantengono il valore dato all'interno del main anche quando vengono utilizzate in altri metodi? public static void main(String[] arg) throws Exception { /* System.out.println(map(5,0,10,10,20)); System.out.println(map(5,0,10,0,20)); System.out.println(map(5,0,10,0,80)); System.exit(0); */ /* solo a scopo di test maxX=20; minX=0; plot(10,15,'l'); plot(3,5,'v'); plot(1,1,'v'); plot(0,0,'V'); for(int i=1;i<15;i++) plot(i,i,'v'); System.exit(0); */ char carattereDiPlot; // not yet implemented Scanner in = new Scanner(System.in); System.out.print("Inserisci la partenza (minX): "); minX = in.nextDouble(); System.out.print("Inserisci l'arrivo (maxX): "); maxX = in.nextDouble(); in.nextLine(); // svuotare buffer System.out.print("Inserisci il carattere di 'plot': "); carattereDiPlot = in.nextLine().charAt(0); //Possiamo prendere il primo carattere della stringa letta // ipotesi alternativa: carattereDiPlot = System.in.read(); /* System.out.println(calcolaCXdaX(5)); // se metto min 0 e max 10 viene 40 System.out.println(calcolaCYdaY(5)); // viene ... >25 System.out.println(calcolaCYdaY(-1.5)); // viene 0 System.out.println(calcolaCYdaY(1.5)); // viene 25 */ segment(1,1,2,3); segment(1,1,3,5); System.exit(0); for(double cursor = minX; cursor<maxX; cursor++) { plot(cursor, Math.sin(cursor), carattereDiPlot); } } static int calcolaCXdaX(double x) { // WIDTH & (HEIGHT) // ho la x // ho minX e maxX return (int)map(x, minX, maxX, 0, WIDTH); } static int calcolaCYdaY(double y) { return (int)map(y, MINY, MAXY, 0, HEIGHT); } /* static void square(double x, double y, double lato){ ... segment(...); segment(...); segment(...); segment(...); } static void segment(double x1, double y1, double x2, double y2){ ... plot(...) ... } */ /** "plotta" un singolo "pixel" (carattere su uno schermo) in un particolare punto dello schermo stesso SCHERMO (0,0) (80,25) --------------------------------------------------------------------- (...,MAXY) Funzione (minX,F(minX)) (maxX,F(maxX)) (...,MINY) */ static void plot(double x, double y, char c) { System.out.print((char)27); //System.out.print("["+(int)x+";"+(int)y+"H"); System.out.print("["+calcolaCXdaX(x)+";"+calcolaCYdaY(y)+"H"); System.out.println(c); } /** x valore ingresso in_min e in_max range valori in ingresso out_min e out_max range valori in uscita */ static double map(double x, double in_min, double in_max, double out_min, double out_max){ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // https://en.wikipedia.org/wiki/Line_drawing_algorithm static void segment(double x1, double y1, double x2, double y2){ double dx = x2 - x1; double dy = y2 - y1; for(double x=x1;x<=x2;x+=0.01) { double y = y1 + dy * (x - x1) / dx; System.err.print(x); System.err.print(","); System.err.print(y);L System.err.println(); plot(x, y, 'j'); } } }
import java.util.*; /** preparazione per LIFE (https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) */ public class Matrice { /* riempire array monodimensionale di double a partire da stdin in input ci danno: 35 1.4 1.7 4.6 7.8 stringa unica "digitata" interamente a linea di comando che contiene al primo posto un numero (dimensione array) e di seguito, separati da spazio, i numeri con cui riempire array una volta "riempito" dire quanti ne sono stati effettivamente inseriti e calcolare media dei valori (solo di quelli inseriti) (aggiunta) a posteriori eliminare (azzerare) i valori oltre un limite prefissato (es. 10000000) (in futuro) ........*.... .***......*.. ...**........ ...*...*..... */ public static void main(String[] arg) throws Exception { Scanner in=new Scanner(System.in); int dimArray=in.nextInt(); double[] array=new double[dimArray]; double somma=0; int counter=0; for(;in.hasNext();counter++){ // CONDIZIONE INPUT BASED array[counter]=in.nextDouble(); somma+=array[counter]; //System.out.println(array[counter]); } System.out.println(Arrays.toString(array)); System.out.print("sono stati inseriti: "); System.out.print(counter); System.out.println(" valori"); System.out.print("la media è: "); System.out.println(somma/counter); System.exit(0); /* String s=""; int max=0,i=0,somma=0; */ System.out.println("inserisci riga completa"); // tuttaLaRiga= in.nextLine(); // poi mi tocca usare tokenizer // tentativo senza tokenizer /* max=in.nextInt(); in.nextLine(); double [] input = new double [max]; System.out.println("inserisci stringa"); s=in.nextLine(); StringTokenizer str=new StringTokenizer (s); System.out.println("str: "+ str.hasMoreTokens()); while(str.hasMoreTokens()) { Double d1=new Double(str.nextToken()); //d1= Double( ); System.out.println("i: "+i); input[i]=d1; i++; somma+= (double) d1/i; } double media= (double) System.out.println("il numero di valori inserito è : "+i); //System.out.print(media); */ } }