Riešenia (skupina D, 3. týždeň)

Praktické cvičenie 9.10.2012

Spustac.java

import sk.upjs.jpaz2.*;

public class Spustac {

        /**
         * @param args
         */

        public static void main(String[] args) {
                // TODO Auto-generated method stub
//              WinPane plocha = new WinPane();
//              MojaKorytnacka jurko = new MojaKorytnacka();
//              plocha.add(jurko);
//              jurko.center();
//              jurko.sustredneKruhy(80);

                Poctarka lenka = new Poctarka();
                System.out.println("min je: " + lenka.min(122, 60));

                System.out.println("mocnina: " + lenka.mocnina(2, 3));

                System.out.println("faktorial: " + lenka.faktorial(5));

                System.out.println("pocet delitelov je: " + lenka.pocetDelitelov(125));
        }
}
 

MojaKorytnacka.java

import java.awt.Color;

import sk.upjs.jpaz2.*;

public class MojaKorytnacka extends Turtle {

        /**
         * Realizuje nahodnu pochodzku so zadanym poctom krokov a natacanim v
         * nasobkoch uhla 90
         *
         * @param pocetKrokov
         *            pocet krokov, ktore ma korytnacka zrealizovat
         */

        public void nahodnaPochodzkaKruh(int pocetKrokov) {
                double startX = this.getX();
                double startY = this.getY();

                for (int i = 0; i < pocetKrokov; i++) {
                        // Vygenerujeme realne nahodne cislo z <0, 4). Orezanim desatinnej
                        // casti (pretypovanim)
                        // ziskame cele cislo medzi 0 a 3. Jeho vynasobenim cislom 90
                        // ziskame nahodny uhol
                        // natocenia, ktory je nasobkom 90
                        int uhol = 90 * (int) (Math.random() * 4);
                        // Otocime sa o zvoleny uhol (tu prebehne implicitne pretypovanie z
                        // int na double)
                        this.turn(uhol);

                        if (this.getX() < 150) {
                                this.setPenColor(Color.green);
                        } else {
                                this.setPenColor(Color.red);
                        }

                        this.step(10);

                        if (this.distanceTo(startX, startY) > 100) {
                                this.step(-10);
                        }

                        JPAZUtilities.delay(30);
                }

                this.setPosition(startX, startY);
        }

        /**
         * Nakresli stvorcovu spiralu
         *
         * @return celkova dlzka krokov, ktore korytnacka zrealizovala
         */

        public double stvorcovaSpirala() {
                // Dlzka kroku, ktory mame najblizsie spravit
                double krok = 150;
                // V premennej prejdene si pamatame doposial prejdenu dlzku
                double prejdene = 0;

                // Opakujeme, kym je krok aspon 1 pixel (je ho vidiet)
                while (krok >= 1) {
                        // Spravime krok
                        this.step(krok);
                        // Pridame si krok k prejdenej dlzke
                        prejdene = prejdene + krok;
                        this.turn(90);
                        // Znizime dlzku kroku o 10%
                        krok = 0.9 * krok;
                        JPAZUtilities.delay(50);
                }

                // Vratime ako vysledok volania metody aktualnu hodnotu v premennej
                // prejdene
                return prejdene;
        }

        /**
         * To iste ako stvorcova spirala, ale na prerusenie (inak nekonecneho) while
         * cyklu pouzijeme prikaz break
         */

        public double stvorcovaSpirala2() {
                double krok = 150;
                double prejdene = 0;

                while (true) {
                        this.step(krok);
                        prejdene += krok;
                        this.turn(90);
                        krok = 0.9 * krok;
                        JPAZUtilities.delay(50);
                        // Ak je krok uz prilis maly, tak prerusime cyklus
                        if (krok < 1) {
                                break;
                        }
                }

                return prejdene;
        }

        /**
         * To iste ako stvorcova spirala, avsak metodu ukoncujeme vo vnutri
         * nekonecneho while cyklu pomocou prikazu return
         */

        public double stvorcovaSpirala3() {
                double krok = 150;
                double prejdene = 0;

                while (true) {
                        this.step(krok);
                        prejdene += krok;
                        this.turn(90);
                        krok = 0.9 * krok;
                        JPAZUtilities.delay(50);
                        // Ak je uz krok prilis maly, tak ukoncime vykonavanie metody a
                        // vratime aktualnu hodnotu v premennej prejdene
                        if (krok < 1) {
                                return prejdene;
                        }
                }
        }

        public void zvolNahodneFarbu() {
                Color c = new Color((int) (Math.random() * 256),
                                (int) (Math.random() * 256), (int) (Math.random() * 256));
                this.setPenColor(c);

        }

        public void sustredneKruhy(double polomer) {
                int pocetKruhov = 0;

                double obsah = 0;

                while (polomer > 10) {
                        pocetKruhov++;

                        obsah = obsah + Math.PI * polomer* polomer;

                        if (pocetKruhov % 3 == 0) {
                                this.setFillColor(Color.red);
                        }

                        if (pocetKruhov % 3 == 1) {
                                this.setFillColor(Color.blue);
                        }

                        if (pocetKruhov % 3 == 2) {
                                this.setFillColor(Color.gray);
                        }
                        this.dot(polomer);
                        polomer = 0.8 * polomer;
                }
                System.out.println("pocet kruhov: " + pocetKruhov);
                System.out.println("obsah kruhov: " + obsah);
        }

}

Poctarka.java

import sk.upjs.jpaz2.Turtle;

public class Poctarka extends Turtle {

        public double min(double cislo1, double cislo2) {
                if (cislo1 < cislo2) {
                        return cislo1;
                } else {
                        return cislo2;
                }
        }

         public long mocnina(int n, int k) {
                 int sucin = 1;
                 for (int i = 0; i < k; i++) {
                        sucin = sucin * n;
                }
                 return sucin;
         }

         public long faktorial(int n) {
                 int vysledok = 1;
                 for (int i=1; i<=n; i++) {
                         vysledok = vysledok * i;
                 }
                 return vysledok;
         }


         public int pocetDelitelov(int n) {
                 int delitel=0;
                 for (int i = 1; i < n+1; i++) {
                        if(n%i==0){
                                delitel++;
                                System.out.print(i + " ");
                        }
                }
                System.out.println();
                return delitel;

         }
        //
        // public int pocetCifier(int n) {
        //
        // }
        //
        // public boolean jePrvocislo(int n) {
        //
        // }
        //
        // public boolean maCifru(byte c, int n) {
        //
        // }
        //
        // public boolean nerastuceCifry(int n) {
        //
        // }
        //
        // public int NSD(int a, int b) {
        //
        // }
        //
        // public int NSN(int a, int b) {
        //
        // }
}
 

Teoretické cvičenie 12.10.2012

import sk.upjs.jpaz2.Turtle;

public class Poctarka extends Turtle {

        public double min(double cislo1, double cislo2) {
                if (cislo1 < cislo2) {
                        return cislo1;
                } else {
                        return cislo2;
                }
        }

        public long mocnina(int n, int k) {
                int sucin = 1;
                for (int i = 0; i < k; i++) {
                        sucin = sucin * n;
                }
                return sucin;
        }

        public long faktorial(int n) {
                int vysledok = 1;
                for (int i = 1; i <= n; i++) {
                        vysledok = vysledok * i;
                }
                return vysledok;
        }

        public int pocetDelitelov(int n) {
                int delitel = 0;
                for (int i = 1; i < n + 1; i++) {
                        if (n % i == 0) {
                                delitel++;
                                System.out.print(i + " ");
                        }
                }
                System.out.println();
                return delitel;

        }

        public int pocetCifier(int n) {
                int vysledok = 0;
                while (n > 0) {
                        vysledok = vysledok + 1;
                        n = n / 10;
                }
                return vysledok;
        }

        public boolean jePrvocislo(int n) {
                int pocetDelitelov = 0;
                for (int i = 1; i < n + 1; i++) {
                        if (n % i == 0) {
                                pocetDelitelov++;
                        }
                }
                if (pocetDelitelov == 2) {
                        return true;
                } else {
                        return false;
                }
        }

        //
        // }
        //
        // public boolean maCifru(byte c, int n) {
        //
        // }
        //
        // public boolean nerastuceCifry(int n) {
        //
        // }
        //
        public int NSD(int a, int b) {
                int z;
                while (b > 0) {
                        z = a % b;
                        a = b;
                        b = z;
                }
                return a;

        }

        //
        public int NSN(int a, int b) {
                int nasobok = 0;

                int pom = 0;

                if (Math.abs(a) > Math.abs(b)) {
                        pom = a;
                        a = b;
                        b = pom;
                }
                for (int i = Math.abs(b); i <= Math.abs(a * b); i++) {
                        if (i % b == 0 && i % a == 0) {
                                nasobok = nasobok + i;
                                break;
                        }
                }
                return nasobok;
        }
}