Avatar
Aleš Halama
Člen
Avatar
Aleš Halama:

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:

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
Nahoru Odpovědět 29.11.2015 15:42
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
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.