Anonymní profil K4BlOs – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil K4BlOs – Programujte.comAnonymní profil K4BlOs – Programujte.com

 

Příspěvky odeslané z IP adresy 176.12.115.–

K4BlOs
Java › Pseudonáhodná čísla
17. 12. 2012   #169047

Ahoj napsal jsem to takto, ale nefunguje mi to poradi nekdo?

if(args.length > 0) {
            try {
                BufferedReader bfr = new BufferedReader(new FileReader(args[0]));
                BufferedWriter bfw = new BufferedWriter (new FileWriter("vystup.txt"));
                String radek;
                while((radek = bfr.readLine())!= null) {
                    int nacteneCislo = Integer.parseInt(radek);
                    List<Integer> vytvorenePole = vytvorPole(nacteneCislo);
		    int[] prevedenePole = prevedPole(vytvorenePole);
		    selectSort(prevedenePole);
		    bfw.write("" + vytvorenePole.size() + "" + vytvorenePole.toString());
		    bfw.write("" + prevedenePole.length + "" + Arrays.toString(prevedenePole));
		    bfw.newLine();
                }
                bfr.close();
                bfw.close();
            } catch (FileNotFoundException e) {
		e.printStackTrace();
            } catch (IOException e) {
    		e.printStackTrace();
            }     
        }

debug:
Zadej dvouciferne cislo:
vstup.txt
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Ppa1_SP_A12B0046K.Ppa1_SP_A12B0046K.vstupCisla(Ppa1_SP_A12B0046K.java:26)
at Ppa1_SP_A12B0046K.Ppa1_SP_A12B0046K.main(Ppa1_SP_A12B0046K.java:151)
Java Result: 1

K4BlOs
Java › Pseudonáhodná čísla
11. 12. 2012   #168653

ukazka vstup.txt:

10
11
83

vystup by mel vypadat takto vystup.txt:

20[10, 11, 13, 17, 29, 85, 73, 54, 30, 91, 83, 69, 48, 24, 58, 34, 12, 15, 23, 53]
20[10, 11, 12, 13, 15, 17, 23, 24, 29, 30, 34, 48, 53, 54, 58, 69, 73, 83, 85, 91]

19[11, 13, 17, 29, 85, 73, 54, 30, 91, 83, 69, 48, 24, 58, 34, 12, 15, 23, 53]
19[11, 12, 13, 15, 17, 23, 24, 29, 30, 34, 48, 53, 54, 58, 69, 73, 83, 85, 91]

16[83, 69, 48, 24, 58, 34, 12, 15, 23, 53, 29, 85, 73, 54, 30, 91]
16[12, 15, 23, 24, 29, 30, 34, 48, 53, 54, 58, 69, 73, 83, 85, 91]

poradi mi nekdo nebo napise nejaky navod?

K4BlOs
Java › Pseudonáhodná čísla
11. 12. 2012   #168652

tak toto mi uz funguje

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

/**
 * Samostatna prace z PPA1.
 * Trida generujici pseudonahodnach cisla, ktere uklada do pole a 
 * nasledne je seradi metodou SelectSort.
 * Vystupem je vizualizace posloupnosti nahodne vygenerovanych prvku a
 * vizualizace serazene posloupnosti. 
 * @author
 */

public class SP {
	
	/**
	 * Metoda pro vypocet clenu pseudonahodne posloupnosti
	 * @param cislo
	 * @return dve cifry z leva umocneneho cisla +1
	 */
    static int dalsiClen(int cislo) {
        double umocneno = Math.pow(cislo, 2); //vypocita druhu mocninu promenne cislo
        String umocnenoStr = String.valueOf(umocneno); //prevede double na String pomoci String
        String prvniDveCisla = umocnenoStr.substring(0, 2); //priradi String od indexu 0 po 2
        return Integer.parseInt(prvniDveCisla) + 1; //prevede String na Integer a pripocita 1
    }
    
    /**
	 * Metoda pro vstup startovaciho cisla posloupnosti.
	 * Osetrena proti zadani mensi hodnoty nez 10
	 * @param
	 * @return zadane cislo
	 */
    static int vstupCisla() {
    	Scanner scanner = new Scanner(System.in);
        int cislo = 0;
        while (cislo < 10) { //dokud zada mensi cislo
            System.out.println("Zadej dvouciferne cislo: ");
            cislo = Math.abs(scanner.nextInt());
        }
        scanner.close();
		return cislo;
    }
    
    /**
	 * Metoda ktera uklada vygenerovana cislo posloupnosti
	 * do ArrayListu a kontroluje, jestli vygenerovane
	 * cislo metodou dalsiClen() je jiz ulozeno nebo ne.
	 * @param cislo
	 * @return polePosloupnosti s vygenerovanymi cisly
	 */
    static List<Integer> vytvorPole(int cislo) {
    	List<Integer> polePosloupnosti = new ArrayList<Integer>(); //vytvoreni ArrayListu pro uchovavani objektu typu Integer
        polePosloupnosti.add(cislo); //Prida zadane cislo do ArraListu
        while (true) { //pridava vygenerovane cleny posloupnosti do ArrayListu
            cislo = dalsiClen(cislo);
            if (polePosloupnosti.contains(cislo)) { //kontroluje jestli uz ArrayList obsahuje stejne cislo, pokud ano, vrati true a break ukonci cyklus while
                break;
            }
            polePosloupnosti.add(cislo); //pokud ArrayList neobsahuje toto cislo, prida ho
        }
		return polePosloupnosti;
    }
    
    /**
	 * Metoda pro serazeni pole od nejmensiho po nejvetsi
	 * @param pole
	 */
    public static void selectSort(int[] pole) { 
    	for (int i = 0; i < pole.length - 1; i++) { //projede pole
    		int mensi = i; //ulozi si mensi hodnotu
    		for (int j = i + 1; j < pole.length; j++) { //projede pole o i + 1 dal
    			if (pole[mensi] > pole[j]) { //porovna mensi hodnotu s dalsi hodnotou, pokud je dalsi mensi, ulozi si ji
    				mensi = j;
    			}
    		}
    		if (mensi != i) { //serazeni pole
    		int tmp = pole[i];
    		pole[i] = pole[mensi];
    		pole[mensi] = tmp;
    		}
    	}
    }
    
    static int[] prevedPole(List<Integer> vytvorenePole) {
        int[] noveVytvorenePole = new int[vytvorenePole.size()];
    	Iterator<Integer> iter = vytvorenePole.iterator();
    	for(int i = 0; i < vytvorenePole.size(); i++) {
    		noveVytvorenePole[i] = iter.next().intValue();
    	}
        return noveVytvorenePole;
    }
    
    /**
     * Hlavni metodu muzeme spustit 2 zpusoby:
     * 
     * 1. Spusteni programu bez zadani parametru:
     *   Pomoci metody vstupCisla() program nacte dvouciferne cislo,
     *   ktere pouzije v metode dalsiClen() a vypocte pseudonahodnou posloupnost.
     *   Tuto posloupnost seradi metodou selectSort() a vypise ji.
     *   Neserazenou a serazenou posloupnost vykresli nastrojem DrawingTool.
     *   
     * 2. Spusteni programu se zadanim parametru:
     *   Z prikazove radky nacte parametr, ktery predstavuje jmeno vstupniho souboru.
     *   Z tohoto souboru precte postupne jedno dvouciferne cislo, 
     *   a vypocte pseudonahodnou posloupnost, kterou ulozi do vystupniho souboru.
     *   Dale precte dalsi dvouciferne cislo a opakuje vypocet
     *   pseudonahodne posloupnosti, kterou ulozi do vystupniho souboru k predchozimu
     *   dvoucifernemu cislu. Tento cyklus se opakuje dokud program neprecte posledni
     *   dvouciferne cislo ze vstupniho souboru.
     *   Osetreni vyjimek pro spatne zadane cislo nebo spatne zadane jmeno souboru
     *   neni nute. Predpokladaji se vzdy spravne hodnoty.
     * @param 
     */
    public static void main(String[] args) {
    	int cislo = vstupCisla();
    	List<Integer> vytvorenePole = vytvorPole(cislo);
        int[] prevedenePole = prevedenePole = prevedPole(vytvorenePole);
    	selectSort(prevedenePole);
        System.out.println( + vytvorenePole.size() + vytvorenePole.toString());
        System.out.println( + prevedenePole.length + Arrays.toString(prevedenePole));
    }
}

ted vy se ta neserazene a serazena posloupnost mela vykreslit do grafu pomoci nastroje DrawingTool ale to ted jete nechci resit. Chtel bych vyřešit to že když z příkazové řádky bude program spuštěn s parametrem ktery bude predstavovat jmeno vstupniho textoveho souboru "vstup.txt" (overovani spravneho nazvu neni nutne). Vstupni soubor bude mit na kazde radce jedno dvouciferne cislo ktere bude startovaci hodnotou pro posloupnost. Pocet tech radku neni omezen a hodnoty se mohou opakovat. Pro každou startovaci hodnotu se tedy vytvori posloupnost (ktera mi uz funguje) a zapise se do vystupniho textoveho souboru "vystup.txt" (v podobe: na prvni radce neserazena posloupnost a hned pod ni na druhe radce serazena posloupnost a pro dalsi startovaci hodnotu ze vstupniho souboru to bude oddeleno jednou prazdnou radkou a pak zase neserazena a pod ni serazena pos.) Po zpracovani vsech radek vstupniho souboru program hned konce(nevipisuje nic na obrazovku a neceka na zadne vstupy) všechny vyjimky se maji resit pouze pomoci "e.printStackTrace()" abych pravdu rekl vubec nevim jak na to  

ukazka vstupniho souboru vstup.txt:

K4BlOs
Java › Pseudonáhodná čísla
11. 12. 2012   #168649

zkusil jsem to ale vypis toho pole je nejakej divnej

Zadej dvouciferne cislo: 
10
20[10, 11, 13, 17, 29, 85, 73, 54, 30, 91, 83, 69, 48, 24, 58, 34, 12, 15, 23, 53]
20[I@152544e

v mainu to mam takto:

public static void main(String[] args) {
    	int cislo = vstupCisla();
    	List<Integer> vytvorenePole = vytvorPole(cislo);
    	int[] noveVytvorenePole = new int[vytvorenePole.size()];
    	Iterator<Integer> iter = vytvorenePole.iterator();
    	for(int i = 0; i < vytvorenePole.size(); i++)	{
    		noveVytvorenePole[i] = iter.next().intValue();
    	}
    	selectSort(noveVytvorenePole);
        System.out.println( + vytvorenePole.size() + vytvorenePole.toString());
        System.out.println( + noveVytvorenePole.length + noveVytvorenePole.toString());
    }
K4BlOs
Java › Pseudonáhodná čísla
11. 12. 2012   #168636

prosim te jeste jedna vec nevis jak mam y toho "List<Integer> polePosloupnosti" udelat normalni int[] pole?

K4BlOs
Java › Jak z "List<Integer> pole" u…
11. 12. 2012   #168632

Jak z "List<Integer> vytvorPole" uddelat normalni "int[] pole" ? mám tuto metodu 

static List<Integer> vytvorPole(int cislo) { 
    	List<Integer> polePosloupnosti = new ArrayList<Integer>();
        polePosloupnosti.add(cislo);
        while (true) {
            cislo = dalsiClen(cislo);
            if (polePosloupnosti.contains(cislo)) {
                break;
            }
            polePosloupnosti.add(cislo);
        }
		return polePosloupnosti;
    }
K4BlOs
Java › Problém s polem
10. 12. 2012   #168591

ahoj, nevím si rady s vytvořením pole, které se bude zvětšovat o +1 na základě n-krát proběhlého cyklu který počítá a ukládá hodnoty do tohoto pole a pro další hodnotu ho musí zase zvětšit atd dokud se vygenerované čísla tím cyklen nezačnou opakovat. Napsal jsem toto ale mám v tom zmatek  

import java.util.*;

public class SP {
	private static Scanner sc = new Scanner(System.in);
	
	public static int vstupCisla() {
		sc = new Scanner(System.in);
		return sc.nextInt();
	}
	
	static int dalsiClen(int n) {
		int umocneno = (int) Math.pow(n, 2);
		int vysledek;
		if (umocneno >= 1000) {
			vysledek = (umocneno / 100) + 1;
		}  
	      else
	        vysledek = (umocneno / 10) + 1;
		return vysledek;
	}
	
	public static void main(String[] args) {
		System.out.println("Zadej dvouciferne cislo: ");
		int n = vstupCisla();
		int[] PolePosloupnosti = new int[1];
		PolePosloupnosti[0] = n;
		boolean stejne = false;
		do {
			PolePosloupnosti = new int[PolePosloupnosti.length+1];
				for (int i = 1; i < PolePosloupnosti.length; i++) {
					PolePosloupnosti[i] = dalsiClen(PolePosloupnosti[i - 1]);
					if (PolePosloupnosti[PolePosloupnosti.length - 1] == PolePosloupnosti[PolePosloupnosti.length - 2]) {
						stejne = true;
					}
				}
		} while (stejne != true);
		System.out.println(Arrays.toString(PolePosloupnosti));
	}
}

prosím pomozte s tím vytvářením a zapisováním

K4BlOs
Java › Pseudonáhodná čísla
10. 12. 2012   #168582

no jo ale jak to zjistím, když při generování těch čísel je ještě nemám v poli?Já potřebuju aby mi vygenerovaná čísla ukládal do pole jenže nevim jak velké to pole bude(to zjistím až po proběhnutí toho cyklu)

K4BlOs
Java › Pseudonáhodná čísla
9. 12. 2012   #168505

Mám vytvořit program, který bude generovat pseudonáhodná čísla podle tohoto algoritmu:

1.zadané dvouciferné číslo umocní na druhou (např. 67^2)
2.z umocněného čísla použije první dvě cifry zleva (tzn. 67^2 = 4489 takže vybere cifry 44)
3.k těmto cifrám (44) přičte jedničku (44+1=45) a výsledek je číslo, které potřebuji
4.tento cyklus se má opakovat tak dlouho, dokud se mi nezačnou opakovat vygenerovaná čísla.

Všechna vygenerovaná čísla potřebuji uložit do pole, které bude mít velikost rovnu počtu vygenerovaných čísel.
Mám napsáno zatím tohle:

import java.util.*;

public class SP {
	private static Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args) {
		System.out.println("Zadej dvouciferne cislo: ");
		int n = sc.nextInt();
		int PocetPrvku = 0;
		int vysledek;
		do {
		PocetPrvku++;
		int umocneno = (int) Math.pow(n , 2);
		if (umocneno >= 1000) {
			vysledek = (umocneno / 100) + 1;
		}  
	      else
	        vysledek = (umocneno / 10) + 1;
		} while (vysledek == vysledek);
		int[] pole = new int[PocetPrvku];
		for (int i = 0; i < pole.length; i++) { //vstup pole
			pole[i] = vysledek;
		}
	}
}

nevím jak mám nastavit tu podmínku toho cyklu aby se mi zastavil hned, když se začnou opakovat vygenerovaná čísla.

K4BlOs
Java › Binární vyhledávání
25. 11. 2012   #167597

protože to mám tak zadaný. Už jsem to vyřešil s uživatelem TheOndrap, který mě nakopl   .Vůbec jsem si nevšiml, ze tam mam "int i" když jsem zadával znaky. No už mi to jede

K4BlOs
Java › Podmínka pro ukončení cyklu
25. 11. 2012   #167584

jasny moje blbost. Ted mi to doslo. Vubec sem si neuvedomil, ze tam mam "int i". Uz mi to jede. Omlouvam se a dekuji

K4BlOs
Java › Podmínka pro ukončení cyklu
25. 11. 2012   #167579

potřebuju aby mi cyklus skončil když "i" bude "=". 

public static void binarniVyhledavani(int[] pole, int i) {
		int dolni = 0; // dolni mez
	    int horni = 101; // horni mez
	    int pokus = 0;
	    do {
	    	pokus++;
	        int stred = (dolni+horni)/2;
	        System.out.println(pokus + ": " + stred);
	        i = sc.nextLine().charAt(0);
	        if(i == '>') {
	        	dolni = stred;
	        }
	        else if (i == '<') {
	            horni = stred;
	        }
	        else if (i == '=') {
	        	System.out.println("Hledane cislo = " + stred);
	        }
	      } while (i == '=');
	    }

jenže mi program končí hned po zadání prvního znaku. Poradte prosím jak nastavit tu podmínku

K4BlOs
Java › Binární vyhledávání
25. 11. 2012   #167560

a poradil bys mi jak mam napsat podminku aby opakoval dokud "i" nebude "=" ?
zkoušel jsem to takto, ale tomi program skončí hned po zadání buď "<" nebo ">"

public static void binarniVyhledavani(int[] pole, int i) {
		int dolni = 0; // dolni mez
	    int horni = 101; // horni mez
	    int pokus = 0;
	      do {
	    	pokus++;
	        int stred = (dolni+horni)/2;
	        System.out.println(pokus + ": " + stred);
	        i = sc.nextLine().charAt(0);
	        if(i == '>') {
	        	dolni = stred;
	        }
	        else if (i == '<') {
	            horni = stred;
	        }
	        else if (i == '=') {
	        	System.out.println("Hledane cislo = " + stred);
	        }
	      } while (i == '=');
	    }
K4BlOs
Java › Binární vyhledávání
24. 11. 2012   #167507

Ahoj, potřeboval bych poradit s tímto programem

import java.util.*;

public class XXX {
	static Scanner sc = new Scanner(System.in);
	
	public static void binarniVyhledavani(int[] pole, int i) {
		int dolni = 0; // dolni mez
	    int horni = 101; // horni mez
	    int pokus = 0;
	      while (dolni <= horni) {
	    	pokus++;
	        int stred = (dolni+horni)/2;
	        System.out.println(pokus + ": " + stred);
	        i = sc.nextLine().charAt(0);
	        if(i == '>') {
	        	dolni = stred;
	        }
	        else if (i == '<') {
	            horni = stred;
	        }
	        else if (i == '=') {
	        	System.out.println("Hledane cislo = " + stred);
	        }
	      }
	    }

	public static void main(String[] args) {
		int[] pole = new int[101];
		for (int i = 0; i < pole.length; i++) { //vstup pole
			pole[i] = (i + 1)-1;
		}
		System.out.println("---Vysledky---");
		binarniVyhledavani(pole, 0);
	}
}

program hledá číslo, které si vymyslím a zadáváním "<" nebo ">" mi vypisuje číslo pokusu a hodnotu atd...když už je hodnota to číslo, které jsem si vymyslel, tak zadám "=" a program vypise "Hledane cislo =" a hodnotu mého čísla. Jenže vždy když zadám "=" tak se mi pod "Hledane cislo =" vypíše ještě jeden další pokus s hodnotou mého čísla a program navíc nekončí, zůstává pořád spuštěný musím ho ukončit ručně (terminate). Co s tím?

K4BlOs
Java › 1 program ve 2 souborech
16. 11. 2012   #166962

tak jsem to nakonec udělal bez toho pole. Tu  metodu "vratLepsiPrumer" jsem napsal takto

//metoda ktera ze dvou studentu vybere studenta s lepsim prumerem znamek
	public String vratLepsiPrumer(Student s) {
		if (this.prumerZnamek > s.prumerZnamek) {
			return s.toString();
		}
		else {
			return this.toString();
		}
	}

a v mainu takto

public static void main(String[] args) {
		sc = new Scanner(System.in);
		sc.useLocale(Locale.US);
		Student student1 = nactiStudenta(sc);
		Student student2 = nactiStudenta(sc);
		System.out.println("---Vysledky---");
		System.out.println(student1.toString());
		System.out.println(student2.toString());
		String s;
		s = student1.vratLepsiPrumer(student2);
		System.out.println("Lepsi prumer ma: " + s.toString());
	}
K4BlOs
Java › 1 program ve 2 souborech
15. 11. 2012   #166914

omylem jsem vytvořil dvakrát toto vlákno jak tohle smažu?

K4BlOs
Java › 1 program ve 2 souborech
15. 11. 2012   #166913

tak tu mám další problém. Mám vytvořit třídu Student (soubor Student.java), která bude mít privátní atributy osobniCislo a prumerZnamek. Musím napsat konstruktor, potřebné getry, setry a metodu toString(). Potom musim napsat metodu String vratLepsiPrumer(Student s), která ze dvou studentů vybere studenta s lepším průměrem známek a prostřednictvím metody toString() zajistí výpis jeho osobního čísla a průměru známek. Funkčnost třídy mám ověřit v aplikační třídě, ve které nejprve načtu pomocí statické metody Student nactiStudenta(Scanner sc) informace o dvou studentech, v pořadí osobní číslo a průměr známek, které budou pro každého studenta zadány na jednom řádku a navzájem odděleny mezerou. Tyto informace o obou studentech musím vypsat (metodou toString()) v pořadí, ve kterém byli studenti zadáni a informaci o studentu s lepším průměrem známek využitím již vytvořené metody datové třídy.

v souboru Student.java mám

public class Student {
	//atributy
	private String osobniCislo;
	private double prumerZnamek;
	
	//konstruktor
	public Student(String osobniCislo, double prumerZnamek) {
		this.osobniCislo = osobniCislo;
		this.prumerZnamek = prumerZnamek;
	}
	
	//getry a setry
	public String getOsobniCislo() {
		return osobniCislo;
	}
	
	public double getPrumerZnamek() {
		return prumerZnamek;
	}
	
	//metoda toString
	public String toString() {
		return "\n<Osobni cislo: " + osobniCislo + ", prumer = " + prumerZnamek + ">"; 
	}
	
	//metoda ktera ze dvou studentu vybere studenta s lepsim prumerem znamek
	public String vratLepsiPrumer(Student s) {
	}
}

a v hlavní třídě mám toto

import java.util.*;

public class XXX {
	static Scanner sc = new Scanner(System.in);
	
	public static Student nactiStudenta(Scanner sc) {
		System.out.print("Zadejte osobni cislo a prumer: ");
    	String osobniCislo = sc.next();
    	double prumerZnamek = sc.nextDouble();
    	sc.nextLine();
    	Student s = new Student(osobniCislo, prumerZnamek);
    	return s;
	}
	
	public static void main(String[] args) {
		sc = new Scanner(System.in);
		sc.useLocale(Locale.US);
		Student[] studenti = new Student[2];
		for (int i = 0; i < studenti.length; i++) {
			studenti[i] = nactiStudenta(sc);
		}
		System.out.println(Arrays.toString(studenti));
	}
}

výstup má vypadat asi takto:

Zadejte osobni cislo a prumer: A09B0999P 3.1
Zadejte osobni cislo a prumer: A08B0999K 2.34
---Vysledky---
<Osobni cislo: A09B0999P, prumer = 3.1>
<Osobni cislo: A08B0999K, prumer = 2.34>
Lepsi prumer ma: <Osobni cislo: A08B0999K, prumer = 2.34>

Navíc mám v tom mojem výpisu navíc ještě před a za polem "[" "]".

K4BlOs
Java › 1 program ve 2 souborech
15. 11. 2012   #166912

tak tu mám další problém. Mám vytvořit třídu Student (soubor Student.java), která bude mít privátní atributy osobniCislo a prumerZnamek. Musím napsat konstruktor, potřebné getry, setry a metodu toString(). Potom musim napsat metodu String vratLepsiPrumer(Student s), která ze dvou studentů vybere studenta s lepším průměrem známek a prostřednictvím metody toString() zajistí výpis jeho osobního čísla a průměru známek. Funkčnost třídy mám ověřit v aplikační třídě, ve které nejprve načtu pomocí statické metody Student nactiStudenta(Scanner sc) informace o dvou studentech, v pořadí osobní číslo a průměr známek, které budou pro každého studenta zadány na jednom řádku a navzájem odděleny mezerou. Tyto informace o obou studentech musím vypsat (metodou toString()) v pořadí, ve kterém byli studenti zadáni a informaci o studentu s lepším průměrem známek využitím již vytvořené metody datové třídy.

v souboru Student.java mám

public class Student {
	//atributy
	private String osobniCislo;
	private double prumerZnamek;
	
	//konstruktor
	public Student(String osobniCislo, double prumerZnamek) {
		this.osobniCislo = osobniCislo;
		this.prumerZnamek = prumerZnamek;
	}
	
	//getry a setry
	public String getOsobniCislo() {
		return osobniCislo;
	}
	
	public double getPrumerZnamek() {
		return prumerZnamek;
	}
	
	//metoda toString
	public String toString() {
		return "\n<Osobni cislo: " + osobniCislo + ", prumer = " + prumerZnamek + ">"; 
	}
	
	//metoda ktera ze dvou studentu vybere studenta s lepsim prumerem znamek
	public String vratLepsiPrumer(Student s) {
	}
}

a v hlavní třídě mám toto

import java.util.*;

public class Ppa1_cv08_2_A12B0046K {
	static Scanner sc = new Scanner(System.in);
	
	public static Student nactiStudenta(Scanner sc) {
		System.out.print("Zadejte osobni cislo a prumer: ");
    	String osobniCislo = sc.next();
    	double prumerZnamek = sc.nextDouble();
    	sc.nextLine();
    	Student s = new Student(osobniCislo, prumerZnamek);
    	return s;
	}
	
	public static void main(String[] args) {
		sc = new Scanner(System.in);
		sc.useLocale(Locale.US);
		Student[] studenti = new Student[2];
		for (int i = 0; i < studenti.length; i++) {
			studenti[i] = nactiStudenta(sc);
		}
		System.out.println(Arrays.toString(studenti));
	}
}

výstup má vypadat asi takto:

Zadejte osobni cislo a prumer: A09B0999P 3.1
Zadejte osobni cislo a prumer: A08B0999K 2.34
---Vysledky---
<Osobni cislo: A09B0999P, prumer = 3.1>
<Osobni cislo: A08B0999K, prumer = 2.34>
Lepsi prumer ma: <Osobni cislo: A08B0999K, prumer = 2.34>

Navíc mám v tom mojem výpisu navíc ještě před a za polem "[" "]".

K4BlOs
Java › Počet nejmenších opakujících…
14. 11. 2012   #166815

#16 reciproke
Díky za tvůj čas a strpení se mnou :) vypadá to že mi to funguje tak jak má

K4BlOs
Java › Počet nejmenších opakujících…
14. 11. 2012   #166809

asi takto?

int h = 0;
		int v = 0;
		int max = Integer.MIN_VALUE;
		//postupně projde pole čísel a vždy vybere jedno z nich.
		for (int i = 0; i < pole.length; i++) {
			v = 1;
			//projde všechna čísla která v poli leží napravo od čísla vybraného.
				for (int j = i + 1; j < pole.length; j++) {
					// Pokud se čísla rovnají zvýší proměnnou v o 1
					if (pole[i] == pole[j]) {
						v++;
					}
				}
				if (v > max) {
					max = v;
					h = pole[i];
				}
		}
		System.out.print("Max. pocet je " + max + " x " + h);
K4BlOs
Java › Počet nejmenších opakujících…
14. 11. 2012   #166804

no já jsem zkoušel různý možnosti co mě napadaly, ale když jsem zadal, že v = 1 tak mi to pak zase už nezvyšovalo o "1" atd až sem se do toho zamotal, že už nevim co jsem zkoušel a co ne a co vlastně bych měl ještě zkusit :(

K4BlOs
Java › Počet nejmenších opakujících…
14. 11. 2012   #166801

já to asi prostě nerozchodim :(

K4BlOs
Java › Počet nejmenších opakujících…
14. 11. 2012   #166798

#10 reciproke
tak jsem k tomu zase sedl.Mohl bys mě ještě trochu víc nakopnout? Jestli jsem to napsal dobře tak začnu projíždět pole s "i" a druhý for cyklus začnu projíždět o 1 dál tedy "i+1" a když se tato sousední prvky rovnají tak mi to "v" zvýší o "1" ne? Ale nevim jestli na to nemá náhodou vliv i to původní pole neseřazené a taky to řazení?

K4BlOs
Java › Počet nejmenších opakujících…
13. 11. 2012   #166692

ten bubleSort tam musi byt :)

K4BlOs
Java › Počet nejmenších opakujících…
13. 11. 2012   #166665

Ahoj potřeboval bych zjistit kolikrát se mi v poli opakuje nejmenší číslo a jeho hodnotu. Napsal jsem tohle

import java.util.*;

public class XXX {
	public static Scanner sc = new Scanner(System.in);
	
	static void bublinkoveRazeni(int[] pole) {
		for (int i = pole.length-1; i > 0; i--) {
			for (int j = 1; j <= i; j++) {
				if (pole[j-1] > pole[j]) {
					int tmp = pole[j-1];
					pole[j-1] = pole[j];
					pole[j] = tmp;
				}
			}
		}
	}
	
	public static void main(String[] args) {
		System.out.println("Zadej jednotlive prvky pole: ");
		int[] pole = new int[10];
		for (int i = 0; i < pole.length; i++) {
			System.out.print("p[" + i + "]: ");
			pole[i] = sc.nextInt();
		}
		System.out.println("---Vysledky---");
		System.out.println(Arrays.toString(pole));
		bublinkoveRazeni(pole);
		System.out.println(Arrays.toString(pole));
		int h = 0;
		int v = 0;
		int max = Integer.MIN_VALUE;
		//postupně projde pole čísel a vždy vybere jedno z nich.
		for (int i = 0; i < pole.length; i++) {
			//projde všechna čísla která v poli leží napravo od čísla vybraného.
				for (int j = i + 1; j < pole.length; j++) {
					// Pokud se čísla rovnají zvýší proměnnou v o 1
					if (pole[i] == pole[j])
						v++;
				}
				if (v > max) {
					max = v;
					h = i;
				}
		}
		System.out.print("Max. pocet je "+ v + " x " + h);
	}
}

myslím že mám někde chybu f těch for cyklech, ale nemůžu na to přijít :)

K4BlOs
Java › Výpis indexů pole
11. 11. 2012   #166487

Díky moc už jsem to dal dohromady

import java.util.*;

public class XXX {
	public static Scanner sc = new Scanner(System.in);
	
	//metoda pro vypis matice
	static void vipisMatici (int[][] matice) {
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.format("%5d", matice[i][j]); //vypis matice (do radku)
			}
			System.out.println(); //odradkovani
		}
	}
	
	//metoda pro maximalni prvek
	public static void vedlejsiDiagonalaMax(int[][] matice) {
	    int max = Integer.MIN_VALUE;
	    int pozMax = 0;
	    int pozMax2 = 0;
	    for (int i = 0;  i < matice.length;  i++) {
	    	int hodnota = matice[i][matice.length-1-i];
	    	if ( hodnota > max ) {
	    		max = hodnota;
	    		pozMax = i;
	    		pozMax2 = matice.length-i-1;
	    	}
	    }
	    System.out.println("Max. prvek na vedlejsi diagonale: ");
	    System.out.println("[" + pozMax + "][" + pozMax2 + "] = " + max);
	  }
	
	//metoda pro minimalni prvek
	public static void vedlejsiDiagonalaMin(int[][] matice) {
		 int min = Integer.MAX_VALUE;
		 int pozMin = 0;
		 int pozMin2 = 0;
         for (int i = 0; i < matice.length; i++) {
             int hodnota = matice[i][matice.length-1-i];
             if (hodnota < min) {
            	 min = hodnota;
            	 pozMin = i;
            	 pozMin2 = matice.length-1-i;
             }
         }
         System.out.println("Min. prvek na vedlejsi diagonale: ");
         System.out.println("[" + pozMin + "][" + pozMin2 + "] = " + min);
	  }
	
	public static void main(String[] args) {
		System.out.println("Zadej rad matice");
		int n = sc.nextInt(); //urci velikost matice
		int[][] matice = new int [n][n]; //vztvori matici velikosti n x n
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.print("m[" + i + "]" + "[" + j + "]: ");
				matice[i][j] = sc.nextInt();
			}
		}
		System.out.println("---Vysledky---");
		System.out.println("Byla zadana matice:");
		vipisMatici(matice); //vypise zadanou matici
		vedlejsiDiagonalaMax(matice);
		vedlejsiDiagonalaMin(matice);
	}
}
K4BlOs
Java › Výpis indexů pole
11. 11. 2012   #166469

ty indexy mi dělají vždy problémy

stále se mi to nedaří

import java.util.*;

public class XXX {
	public static Scanner sc = new Scanner(System.in);
	
	//metoda pro vypis matice
	static void vipisMatici (int[][] matice) {
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.format("%3d", matice[i][j]); //vypis matice (do radku)
			}
			System.out.println(); //odradkovani
		}
	}
	
	//metoda pro maximalni prvek
	public static void vedlejsiDiagonalaMax(int[][] matice) {
	    int max = Integer.MIN_VALUE;
	    for (int i = 0;  i < matice.length;  i++) {
	    	if ( matice[i][matice.length-i-1] > max ) {
	    		max = matice[i][matice.length-i-1];
	    		int maxPozice = i;
			    System.out.println("Max. prvek na vedlejsi diagonale: ");
			    System.out.println("[" + maxPozice + "] = " + max);
	    	}
	    }
	  }
	
	//metoda pro minimalni prvek
	public static void vedlejsiDiagonalaMin(int[][] matice) {
		 int min = Integer.MAX_VALUE;
         for (int i = 0; i < matice.length; i++) {
             int hodnota = matice[i][matice.length-1-i];
             if (hodnota < min) min = hodnota;
	    		int minPozice = i;
			    System.out.println("Max. prvek na vedlejsi diagonale: ");
			    System.out.println("[" + minPozice + "] = " + min);
	    }
	  }
	
	public static void main(String[] args) {
		System.out.println("Zadej rad matice");
		int n = sc.nextInt(); //urci velikost matice
		int[][] matice = new int [n][n]; //vztvori matici velikosti n x n
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.print("m[" + i + "]" + "[" + j + "]: ");
				matice[i][j] = sc.nextInt();
			}
		}
		System.out.println("---Vysledky---");
		System.out.println("Byla zadana matice:");
		vipisMatici(matice); //vypise zadanou matici
		vedlejsiDiagonalaMax(matice);
		vedlejsiDiagonalaMin(matice);
	}
}
K4BlOs
Java › Výpis indexů pole
11. 11. 2012   #166459

ale ja právě vůbec netuším, jak mám zjistit nebo uložit ty indexy toho max/min

K4BlOs
Java › Výpis indexů pole
11. 11. 2012   #166452

a půjde to udělat i s metodama pro to max a min číslo tak jak je mám nebo je budu muset celý předělat.

K4BlOs
Java › Výpis indexů pole
11. 11. 2012   #166449

   

import java.util.*;

public class XXX {
	public static Scanner sc = new Scanner(System.in);
	
	//metoda pro vypis matice
	static void vipisMatici (int[][] matice) {
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.format("%3d", matice[i][j]); //vypis matice (do radku)
			}
			System.out.println(); //odradkovani
		}
	}
	
	//metoda pro maximalni prvek
	public static void vedlejsiDiagonalaMax(int[][] matice) {
	    int max = Integer.MIN_VALUE;
	    for (int i = 0;  i < matice.length;  i++) {
	    	if ( matice[i][matice.length-i-1] > max ) {
	    		max = matice[i][matice.length-i-1];
	    	}
	    }
	    System.out.println("Max. prvek na vedlejsi diagonale: " + max);
	  }
	
	//metoda pro minimalni prvek
	public static void vedlejsiDiagonalaMin(int[][] matice) {
		 int min = Integer.MAX_VALUE;
         for (int i = 0; i < matice.length; i++) {
             int hodnota = matice[i][matice.length-1-i];
             if (hodnota < min) min = hodnota;
	    }
	    System.out.println("Min. prvek na vedlejsi diagonale: " + min);
	  }
	
	public static void main(String[] args) {
		System.out.println("Zadej rad matice");
		int n = sc.nextInt(); //urci velikost matice
		int[][] matice = new int [n][n]; //vztvori matici velikosti n
		for ( int i = 0; i < matice.length; i++ ) {
			for ( int j = 0; j < matice[i].length; j++) {
				System.out.print("m[" + i + "]" + "[" + j + "]: ");
				matice[i][j] = sc.nextInt();
			}
		}
		System.out.println("---Vysledky---");
		System.out.println("Byla zadana matice:");
		vipisMatici(matice); //vypise zadanou matici
		vedlejsiDiagonalaMax(matice);
		vedlejsiDiagonalaMin(matice);
	}
}
K4BlOs
Java › Výpis indexů pole
11. 11. 2012   #166447

Ahoj, mám program který mi hledá na vedlejší diagonále v matici nejmenší a největší prvek. Když mi toto číslo najde tak by mi ho měl vypsat i s těmi indexy pole kde se nachází asi nějak takto

Max. prvek na vedlejsi diagonale:
[0][2] = 7

jak tam mam dostat ty indexy?

K4BlOs
Java › Algoritmus pro počítání
10. 11. 2012   #166396

jenže já sem zkoušel různé varianty a už mě nenapadá jak jinak to vypsat :(

K4BlOs
Java › Algoritmus pro počítání
10. 11. 2012   #166388

tak tu mam k tomu jeste jeden dotaz.
vystup by mel vypadat takto:

Zadej pocet clenu posloupnosti: 3
---Vysledky---
[0]
[0, 1]
[0, 1, 1]
[0, 1, 1, 2]

ale muj vystup vypada takhle

Zadejte pocet clenu posloupnosti: 3
---Vysledky---
[0]
[0, 1][0, 1]
[0, 1, 1][0, 1, 1][0, 1, 1]

nevim proc, ale at sem zkousel cokoli tak se mi porad ty radky opakuji a navic mi tam chybi jeste jeden radek kterej by mel mit na konci cislo 2.

zde je muj program:

import java.util.*;

public class XXX {
    
    public static Scanner sc = new Scanner(System.in);

    static int[] dalsiClen(int[] pole){
        
        int[] nove;     
        if(pole == null) {
            nove = new int[1];
            nove[0] = 0;
        } else if (pole.length == 1) {
            nove = new int[2];
            nove[0] = 0;
            nove[1] = 1;
        } else {
            nove = new int[pole.length+1];
            //for (int i = 0; i < pole.length; i++) {
            //    nove[i] = pole[i];
            //} 
            System.arraycopy(pole, 0, nove, 0, pole.length);
            nove[pole.length] = nove[pole.length-1]+nove[pole.length-2];
        }
            for (int j = 0; j < nove.length; j++) {
            	//System.out.print(nove[j] + " ");
            	//System.out.format( "[" + "%3d, ", nove[j] + "]");
            	System.out.print(Arrays.toString(nove));
            }
            System.out.println();
        return nove;        
    }
    
    public static void main(String[] args) {
        
        int pole[] = null;
        System.out.print("Zadejte pocet clenu posloupnosti: ");
        int clen = sc.nextInt();        
        System.out.println("---Vysledky---");
        if (clen == 0) {
        	System.out.println("[0]");
        }
        for (int i = 0; i < clen; i++) {
            pole = dalsiClen(pole);                    
        }        
    }
}
K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166305

   

   díky moc a já se tady trápil celej den s ani né třetinou tohoto.no jo kdo umí, umí    

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166300

super tak ted uz alespon vydim vsechny v rade. Co presne znamena  

 int[] dalsiClen(int[] pole)

tim vytvorim pole dalsiClen ktere bude mit podpole pole?

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166298

#37 K4BlOs
jo a tady je kod:

public static void main(String[] args) {
  System.out.println("Zadej pocet clenu posloupnosti: ");
  int n = sc.nextInt();
  int[] posloupnost = new int[n];
  posloupnost[0] = 0;
  posloupnost[1] = 1;
  for (int i = 2; i < posloupnost.length; i++) {
   posloupnost[i] = posloupnost[i - 1] + posloupnost[i - 2];
  }
  System.out.println(posloupnost[posloupnost.length - 1]);
}

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166297

no ja sem si to zkusil zatim udelat bez te pocitaci metody ciste jenom na tu posloupnost a to myslim ze mi funguje, ale nevim jak mam ytvořit pole, do kterého vypíšu těch "n" členů tý posloupnosti

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166295

tak a ted po vsech tech mouder jsem z toho jeste vic zmatenej nez sem byl. Mohl bys mi prosim te napsat podrobnejsi navod? ja sem fakt zacatecnik a metodou pokus omyl to budu delat 100 let :D

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166279

#30 reciproke
ja sem z toho jelen.Vubec se v tech polich nevyznam. Kdyz dam vypsat 4 clen tak mi to hodi nejake nesmysly "[I@b42cbf" asi se zase vratim k nějakému vysvětlení o polích abych vůbec věděl co to je :)

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166276

#28 reciproke
nějak nechápu to, že budu předávat int pole[] = {0,1,1} dané metodě.Já myslel že té metodě mám předat číslo do kterého mi má spočítat tu posloupnost?

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166273

nějak takto?

static int[] dalsiClen(int[] pole) {
  int[] nove = new int[pole.length+1];
  nove[0] = 0;
  nove[1] = 1;
  nove[2] = 1;
  for (int i = 2; i < nove.length; i++) {
   nove[i] = nove[i - 1] + nove[i - 2];
  }
  return nove;
    }

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166269

no já zatim vubec nevim kde zacit.pokusil jsem se o vytvoreni metody pro vypocet n-teho clenu ktery zadam z klavesnice ale myslim si ze to mam uplne spatne :D

import java.util.*;

public class XXX {
public static Scanner sc = new Scanner(System.in);

static int[] dalsiClen(int[] poole) {
  int n = sc.nextInt();
     int[] pole = new int[n];
     for (int i = 0;  i < pole.length;  i++) {
      pole[i] = ((n-1)+(n-2));
     }
  return pole;
    }

public static void main(String[] args) {
  System.out.println("Zadej pocet clenu posloupnosti: ");
 
  System.out.println("---Vysledky---");
}
}

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166266

Jenze ted tu mam dalsi program a zase si nevim rady. 

Přečtěte z klávesnice přirozené číslo, které bude udávat počet členů Fibonacciho posloupnosti (0, 1, 1, 2, 3, 5, ...), kde nultý člen posloupnosti je 0, první člen je 1, druhý člen je 1, atd. Vytvořte pole, do kterého vypočtete požadovaný počet členů této posloupnosti. Pro výpočet členů použijte metodu int[] dalsiClen(int[] pole), kde pole je momentálně platné, zcela zaplněné pole a metoda nejprve vytvoří pole o jeden prvek větší a pak součtem dvou posledních členů původního pole zjistí hodnotu dalšího členu. Předchozí členy posloupnosti překopíruje z původního pole. Nově vytvořené pole je metodou vráceno. Metoda bude kromě výpočtu a uložení nového členu vždy kontrolně tisknout i celé nové pole. Pozn: tento algoritmus je neefektivní, ale to není zatím náš problém.

Vstup: počet členů Fib. posloupnosti

Vystup: 

Zadej pocet clenu posloupnosti: 0
---Vysledky---
[0]


Zadej pocet clenu posloupnosti: 1
---Vysledky---
[0]
[0, 1]


Zadej pocet clenu posloupnosti: 2
---Vysledky---
[0]
[0, 1]
[0, 1, 1]

Zadej pocet clenu posloupnosti: 3
---Vysledky---
[0]
[0, 1]
[0, 1, 1]
[0, 1, 1, 2]


Zadej pocet clenu posloupnosti: 5
---Vysledky---
[0]
[0, 1]
[0, 1, 1]
[0, 1, 1, 2]
[0, 1, 1, 2, 3]
[0, 1, 1, 2, 3, 5]

K4BlOs
Java › Algoritmus pro počítání
9. 11. 2012   #166265

Tak zde je muj kod:

import java.util.*;

public class XXX {
private static Scanner sc;

public static void main(String[] args) {
  sc = new Scanner(System.in);
     System.out.println("Zadej rozmer karty");
     String s = sc.nextLine();
     String[] st = s.split(" ");
     int a = Integer.parseInt(st[0]);
     int b = Integer.parseInt(st[1]);
    
     int NSN;
     boolean delitelne;
     if (a>b) NSN=a-1; else NSN=b-1;
     do{
       NSN++;
       delitelne=true;
       if((NSN%a==0)&(NSN%b==0))                                   
                       delitelne=false;
      }while(delitelne);
    
     int pocetKaret = ((NSN/a)*(NSN/b));
    
  System.out.println("---Vysledky---");
  System.out.println("Strana nejmensiho ctverce = " + NSN );
  System.out.println("Pocet karet = " + pocetKaret );
}
}

K4BlOs
Java › Algoritmus pro počítání
8. 11. 2012   #166204

Tak jsem to nakonec upravil jinak a už mi to běhá jak má díky všem

K4BlOs
Java › Algoritmus pro počítání
8. 11. 2012   #166200

tak zde je muj kod:

import java.util.*;

public class XXX {
private static Scanner sc;

public static int gcd(int a, int b) {
  if (a < 1 || b < 1) throw new IllegalArgumentException();
  while (b != 0) {
  int tmp = a;
  a = b;
  b = tmp % b;
  }
  return a;
  }

public static void main(String[] args) {
  sc = new Scanner(System.in);
     System.out.println("Zadej rozmery karty");
     String s = sc.nextLine();
     String[] st = s.split(" ");
     int a = Integer.parseInt(st[0]);
     int b = Integer.parseInt(st[1]);
  System.out.println("---Vysledky---");
  int vysledek = gcd(a, b);
  System.out.println(+vysledek);
}
}

tu metodu gcd jsem nasel na netu, ale nejak mi to zrejme nedela to co ma

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý