Riešenia (skupina B, 11. týždeň)

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Podpriemer {

        public static void main(String[] args) {
                Scanner s = new Scanner(System.in);
                List<Integer> cisla = new ArrayList<Integer>();
                int cislo = 0, pocet = 0;
                double sucet = 0;

                System.out.println("Zadaj cisla (zaporne cislo pre koniec):");
                while ((cislo = s.nextInt()) >= 0) {
                        cisla.add(cislo);
                        sucet += cislo;
                        pocet++;
                }

                // zratame priemer
                double priemer = sucet / pocet;
                // vyberme vsetky cisla mensie ako priemer
                List<Integer> mensie = new ArrayList<Integer>();
                for (Integer c : cisla)
                        if (c < priemer)
                                mensie.add(c);
                // utriedime zoznam cisel
                Collections.sort(mensie);

                // vypiseme utriedenych cisel na konzolu
                for (Integer c : mensie)
                        System.out.println("  " + c);
        }
}
import java.io.File;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class SpolocnePrednasky {

        public static void main(String[] args) {
                File subor = new File("prednasky.txt");
                Scanner s = null;
                Set<String> predmety = new HashSet<String>();
                Set<String> spolocnePredmety = new HashSet<String>();
                boolean prvy = true;

                try {
                        s = new Scanner(subor);
                        while (s.hasNextLine()) {
                                Scanner riadok = new Scanner(s.nextLine().toUpperCase());

                                predmety.clear();       // vymazem zaznam predchadzajuceho studenta
                                while (riadok.hasNext())
                                        predmety.add(riadok.next());

                                if (prvy) { // prvy student
                                        spolocnePredmety.addAll(predmety);
                                        prvy = false;
                                } else {
                                        spolocnePredmety.retainAll(predmety);
                                }

                                // ked uz vieme, ze nebudu mat nic spolocne,
                                // tak nema zmysel pokracovat
                                if (spolocnePredmety.isEmpty())
                                        break;
                        }

                        System.out.println("Spolocne predmety su:");
                        System.out.println(spolocnePredmety);
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (s != null)
                                s.close();
                }
        }
}
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Map.Entry;

public class FrekvencnaAnalyza {

        public static void main(String[] args) {
                File subor = new File("analyza.txt");
                Scanner s = null;
                Map<Character, Integer> mapa = new HashMap<Character, Integer>();

                try {
                        s = new Scanner(subor);
                        while (s.hasNext()) {
                                String slovo = s.next();
                                for (int i = 0; i < slovo.length(); i++) {
                                        Character p = slovo.charAt(i);
                                        if (Character.isLetter(p)) {
                                                if (mapa.containsKey(p)) // inkrementujeme pocet vyskytov daneho pismena
                                                        mapa.put(p, mapa.get(p) + 1);
                                                else
                                                        mapa.put(p, 1);
                                        }
                                }
                        }

                        List<Entry<Character, Integer>> riadky =
                                new ArrayList<Map.Entry<Character,Integer>>(mapa.entrySet());

                        Collections.sort(riadky, new FrekvencnyPorovnavac());

                        int pocet = Math.min(10, riadky.size());
                        for (int i = 0; i < pocet; i++) {
                                Character p = riadky.get(i).getKey();
                                Integer pv = riadky.get(i).getValue();

                                System.out.println("'" + p + "' : " + pv);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (s != null)
                                s.close();
                }
        }
}
import java.util.Comparator;
import java.util.Map.Entry;

public class FrekvencnyPorovnavac implements Comparator<Entry<Character, Integer>> {

        @Override
        public int compare(Entry<Character, Integer> r1,
                        Entry<Character, Integer> r2) {

                return r2.getValue() - r1.getValue();
        }
}
package sk.upjs.umv;

public class Zlomok implements Comparable<Zlomok> {
        private long citatel;
        private long menovatel;

        public Zlomok(long citatel, long menovatel) {
                this.citatel = citatel;
                this.menovatel = menovatel;

                normalizuj();
        }

        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + (int) (citatel ^ (citatel >>> 32));
                result = prime * result + (int) (menovatel ^ (menovatel >>> 32));
                return result;
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                Zlomok other = (Zlomok) obj;
                if (citatel != other.citatel)
                        return false;
                if (menovatel != other.menovatel)
                        return false;
                return true;
        }

        public long getCitatel() {
                return citatel;
        }

        public long getMenovatel() {
                return menovatel;
        }

        private void normalizuj() {
                long gcd = gcd(citatel, menovatel);
                if (gcd == 0)
                        gcd = 1;

                citatel /= gcd;
                menovatel /= gcd;
        }

        private long gcd(long a, long b) {
                if (a == 0)
                        return b;

                while (b != 0)
                        if (a > b)
                                a = a - b;
                        else
                                b = b - a;

                return a;
        }

        @Override
        public int compareTo(Zlomok z) {
                return Long.compare(citatel * z.menovatel, z.citatel * menovatel);
        }
}