// Järeltöö 1 (3.nov.1999) lahendused //Variant B (sisaldab ka variandi A lahendused) //------------------------------------------------------------------- //1. Kirjutada meetod, mis arvutab antud jada elementide // aritmeetilise keskmise. //Vastus: static double keskmine(int [] a){ //Antud: jada a //Tulemus: tagastab jada a aritmeetilise keskmise (tüüpi double) //Eeldus: a != null, st. jada on olemas //Märkus: tyhja jada aritmeetiline keskmine on 0 int n = a.length; // antud jada elementide arv if(n == 0) return 0.0; int s = 0; // summa koht for(int i = 0; i < n; i++){// summeerimine s += a[i]; } return (double)s / n; }// keskmine //------------------------------------------------------------------- //2. Kirjutada meetod, mis leiab nende elementide arvu antud jadas, // mis on suuremad selle jada aritmeetilisest keskmisest. // (Soovitav on kasutada eelmises ülesandes koostatud meetodit.) //Vastus: static int mituSellist(int [] a){ // Antud: jada a // Tulemus: tagastab jada a nende elementide arvu, // mis on suuremad jada a aritmeetilisest keskmisest //Variant A: mis on väiksemad jada a aritmeetilisest keskmisest // Eeldus: a != null, st. jada on olemas // Kasutab: meetodit keskmine() double k = keskmine(a); // leiab a aritmeetilise keskmise (k) int loe = 0; // loendur for(int i = 0; i < a.length; i++){// loendamine if(a[i] > k) loe++; // Variant A: if(a[i] < k) loe++; } return loe; }// mituSellist //------------------------------------------------------------------- //3. Kirjutada meetod, mis tagastab antud jada nende elementide jada, // mis on suuremad selle jada aritmeetilisest keskmisest. // (Soovitav on kasutada eelmises ülesandes koostatud meetodit.) //Vastus: static int[] sellised(int [] a){ // Antud: jada a // Tulemus: tagastab jada a nende elementide jada, // mis on suuremad jada a aritmeetilisest keskmisest //(Variant A: mis on väiksemad jada a aritmeetilisest keskmisest) // Eeldus: a != null, st. jada on olemas // Kasutab: meetodit keskmine() ja meetodit mituSellist() double k = keskmine(a); // leiab a aritmeetilise keskmise (k) int[] b = new int[mituSellist(a)]; // teeb tulemusjada koha (b) int j = 0; // indeks jadal b for(int i = 0; i < a.length; i++){// vajalike kandmine jadasse b if(a[i] > k) b[j++] = a[i]; //Variant A: if(a[i] < k) b[j++] = a[i]; } return b; }// sellised //-------------------------------------------------------------------- //4. Täiendada klassi Kolmnurk (vt. lk. 1) meetodiga, mis // konstrueerib võrdsete kaatetitega täisnurkse kolmnurga, // mille ümbermõõt on võrdne etteantud positiivse arvuga. //Vastus: static Kolmnurk teeKolmnurk(double x){ //Antud: arv x //Tulemus: teeb sellise kolmnurga isendi, // mis on võrdsete kaatetitega ja mille ümbermõõt on x; //Variant A: mis on võrdkülgne ja mille kõrgus on x; // tagastab viida loodud isendile //Eeldus: x > 0 double a = x / (2 + Math.sqrt(2)); // kaatet ümbermõõdu x järgi return new Kolmnurk(a, a); //Variant A: //double a = 2 * x / Math.sqrt(3); // külg kõrguse x järgi //return new Kolmnurk(a, a, a); }// teeKolmnurk //-------------------------------------------------------------------- //5. Kirjutada klass eelmises ülesandes koostatud meetodi testimiseks. //Vastus: class Test{ public static void main(String[] argv){ // meetodi teeKolmnurk() testimine if(argv.length < 1){ System.out.println("Kasutus: java Test arv"); System.exit(0); } double p = (new Double(argv[0])).doubleValue(); if(p <= 0){ System.out.println("Peab olema positiivne arv!"); System.exit(0); } System.out.println("Ymbermoo~t on "); //Variant A: System.out.println("Ko~rgus on "); System.out.println("Kolmnurk on: " + teeKolmnurk(p)); }//main }Test