Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Aleš Halama
Člen
Avatar
Aleš Halama:29.11.2015 14:55

Ahoj s programování jsem začal teprve nedávno a narazil jsem na problém. Musím vygenerovat pseudonáhodná čísla podle následujícího pravidla(
67 * 67 = 4489 -> 44 + 1 = 45
45 * 45 = 2025 -> 20 + 1 = 21
21 * 21 = 441 -> 44 + 1 = 45 -- tato hodnota se již v posloupnosti vyskytla, generování končí
Posloupnost pseudonáhodných čísel začínající startovací hodnotou 67 je tedy 67, 45, 21)
Ta 67 je vstupní hodnota z klávesnice. Z kódu co mám dole, mi to vygeneruje 2[67,45] ale tu 21 už ne... (btw. ta 2 co je před výčtem prvků je počet míst ve výčtu). Škubu si vlasy proč mi to negeneruje dál dokud platí to pravidlo.

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

public class Ppa1_SP_A15B0473P {
        private static Scanner sc = new Scanner (System.in);
        //vstup cisla
        public static int vstupCisla(){
                sc.useLocale(Locale.US);
                System.out.print("Zadej cislo: ");
                int cislo = sc.nextInt();
                return cislo;}

        //vpocet cisla
        public static int pst(int cislo){

                        int umocnene = cislo*cislo;
                    int cele = umocnene;
                    String celep = String.valueOf(cele);
                    String cifry = celep.substring(0,2);
                    return Integer.parseInt(cifry)+1;
        }



        //bublonový
        /*static void bublinkoveRazeni(int[] pole){

                for(int z =pole.length-1 ; z >=0; z--){
                        for(int k = 1; k <= z;k++){
                                if(pole[k-1]>pole[k]){
                                        int prohozeni = pole[k-1];
                                        pole[k-1] = pole[k];
                                        pole[k] = prohozeni;

                                }

                        }

                }

                System.out.println(Arrays.toString(pole));

        }




        */




        public static void main(String[] args) {
                int v = vstupCisla();








                List<Integer> list = new ArrayList<Integer>();
                list.add(v);
                int p = pst(v);
                while(true){
                list.add(p);
                if(list.contains(p)){break;}
                else{list.add(p);}

                }

                //List<Integer> listpole = list;





                System.out.print(list.size());
                System.out.print(list.toString());
        }




}
 
Odpovědět
29.11.2015 14:55
Avatar
Aleš Halama
Člen
Avatar
Odpovídá na Aleš Halama
Aleš Halama:29.11.2015 15:22

už jsem na to přišel :D teď musím ty prvky seřadit pomocí bublinového seřazení, v tom si nejsem jist jak to udělat :/

List<Integer> list = new ArrayList<Integer>();
                list.add(v);
                for(int q =0; q <1000; q++){
                int p = pst(v);
                while(true){
                if(list.contains(p)){break;}
                else{list.add(p);}
                }v=p;
                }






                System.out.print(list.size());
                System.out.print(list.toString());
        }




}
 
Nahoru Odpovědět
29.11.2015 15:22
Avatar
Odpovídá na Aleš Halama
Petr Štechmüller:29.11.2015 15:42

Stačí trochu hledat, je tu na to tutorial:

http://www.itnetwork.cz/…ideni-cisel/

Nahoru Odpovědět
29.11.2015 15:42
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Aleš Halama
Člen
Avatar
Odpovídá na Petr Štechmüller
Aleš Halama:1.12.2015 20:53

vyřešeno, díky :D

 
Nahoru Odpovědět
1.12.2015 20:53
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.