Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
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.