User Tools

Site Tools


pub:labprog:20171030
/*
creare un programma che stampi a video (prompt) una "funzione" disegnata con asterischi
*/
public class Asterischi  {
    public static void main(String[] arg)
    throws Exception {
        for(
            int x = 3; 			// dichiarazione e assegnamento (inizializzazione contatore)
            ; 			// condizione per rimanere nel ciclo
            x++ 			// incremento del contatore
        ) {
 
            //System.out.println(/*... parametrica ...*/"*");
 
            //Se l'obiettivo è disegnare una funzione non possiamo anche mettere gli assi cartesiani? man mano che aumenta aumenta pure
 
            System.out.print(x);
            System.out.print(" ");
            // SOLUZIONE A: porto fuori y
            int y=0;
            for(; y < 5*Math.sin(x/3.14)+20; y++) {
                System.out.print(" ");			//y=x
            }
            // D: il seno non dovrebbe variare da 19 a 21?  // R: stiamo lavorando con gli int, viene approssimata fin troppo, ok grazie
            System.out.print(y);
            Thread.sleep(50); //50 millisecondi di pausa ogni iterazione
 
            // SOLUZIONE B: lascio y dov'era e inserisco un if
            /*
            for(int y=0; y < (x*x)/10.0; y++) {
            	System.out.print(" ");
            	//y=x
            	if(ultima iterazione) // y== ((x*x)/10.0)-1	//Diamo n istruzioni in più alla cpu per ogni ciclo eseguito
            		System.out.print(y);
 
            */
 
            System.out.println();
        }
 
    }
// D: cosa deve fare il programma?
// R: stampare grafico di funzioni.
 
 
// D: Ma String arg[] è facoltativo? Cosa significa? differenza tra arg e args? sono intercambiabili...
// R: no, è obbligatorio. arg è una variabile
}
/*
- chiedere all'utente quale funzione va plottata (sin, cos, tan....)
- chiedere all'utente i limiti per x (min, max)
- chiedere all'utente il carattere da usare per plottare
- PLOTTARE funzione
*/
 
import java.util.Scanner;
 
public class Plot  {
    public static void main(String[] arg)
     throws Exception {
        double maxR, minR;
        String scelta;
        char carattereDiPlot; // not yet implemented
 
        Scanner in = new Scanner(System.in);
 
        System.out.print("Inserisci la partenza (minX): ");
        minR = in.nextDouble();
 
        System.out.print("Inserisci l'arrivo (maxX): ");
        maxR = in.nextDouble();
 
        System.out.println("Vuoi Sin, Cos, Tan, x^2 o x? SCELTA: ");
        scelta=in.nextLine();
        scelta=in.nextLine();//non ho capito perché   R: perché nextInt non svuota il buffer di tastiera dai newline ergo ne rimangono "in canna" e un successivo nextLine si prenderebbe solo il newline senza la stringa
        scelta=scelta.toLowerCase();
//perchè non lo abbiamo fatto con variabili double? come si potrebbe fare per avere valori di y scanditi meglio(funzione 'continua')?
 
	System.out.println("\n\n\n\n\n\n\n | (x)\n |\n---------------------------------------------------------->(y)");
        for(double x = minR; x<=maxR; x+=Math.PI/20) {
            System.out.print(" | ");
            int y=0;
            double limx=0;
 
            switch (scelta) {
            //case "sin"|"Sin"|"SIN":  // verificare
            //case "Sin":  // verificare
            //case "SIN":  // verificare
            case "sin":
		limx= 5*Math.sin(x)+20;
                break;
            case "cos":
		limx= 5*Math.cos(x)+20;
                break;
            case "tan":
		limx= 5*Math.tan(x)+20;
                break;
            case "x^2":
            	limx= (x*x);
                 break; 	NON FUNZIONANTE
            case "x":
		limx= x;
                break;
            }
 
            for(; y < limx; y++) {  //D: Math.PI : PI serve a?
                System.out.print(" ");			//y=x
            }
            System.out.print(y);
            Thread.sleep(50); //50 millisecondi di pausa ogni iterazione
 
            System.out.println();
        }
        System.out.println(" V");
    }
}
pub/labprog/20171030.txt · Last modified: 2017/10/30 17:07 by atrent