Avatar
Lukáš Krása:

ahoj potřeboval bych když mám pole vytvořené z posloupnosti např :[67, 45, 21, 45, 21] tak potřebuji aby mi to vypsalo pole :[67, 45, 21] tzn. pole do prvku ktere se v tom poli již vyskytlo :)
moc rád bych byl za jakoukoli radu :)

 
Odpovědět 27.11.2015 19:38
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Lukáš Krása
Tomáš Brůna:

chápu správně že máš čísla uložené v poli a ty chceš vypsat?

Nahoru Odpovědět 27.11.2015 19:54
Lepší být šprt než blbec :)
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Lukáš Krása
tomisoka:

Řešil bych to nějak takto:

for(i=0;i<pole.size;++i){
        for(j=0;j<i;++j){
                if(pole[i]==pole[j]){
                        //už tu je, ukončení cyklu
                }
        }
        //print
}
 
Nahoru Odpovědět 27.11.2015 19:55
Avatar
Lukáš Krása:

ano mám pole utvořené posloupností a já chci vypsat prvky pole do té doby než se nejaky z prvku opakuje :)

 
Nahoru Odpovědět 27.11.2015 19:57
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na tomisoka
Tomáš Brůna:

není ten 2. cyklus zbytečný?

Editováno 27.11.2015 19:59
Nahoru Odpovědět 27.11.2015 19:58
Lepší být šprt než blbec :)
Avatar
Tomáš Brůna
Redaktor
Avatar
Nahoru Odpovědět 27.11.2015 19:59
Lepší být šprt než blbec :)
Avatar
Odpovídá na tomisoka
Lukáš Krása:

takto mi to právě nefunguje :) mám právě vytvořené pole o hodně prvcích z určitě posloupnosti a a chci jen to pole zmenšit a vypsat prvky pole do kterých se ty prvky neopakují :)

 
Nahoru Odpovědět 27.11.2015 20:03
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Lukáš Krása
tomisoka:

Jak vypadá tvůj aktuální kód?

 
Nahoru Odpovědět  +1 27.11.2015 20:07
Avatar
Odpovídá na tomisoka
Lukáš Krása:
public static void main(String[] args) {
                System.out.print("Zadej dvojciferne cislo:");

                int cislo = sc.nextInt();

                 int [] p = new int [50];
                 p[0]=cislo;

                 for(int j = 1; j< p.length;j++){

                int nasobek = cislo*cislo;

                if(nasobek>=100 && nasobek <999){
                        int y = (int) (nasobek % 2);
                        int x = (nasobek - y)/10;
                        int c1 = x+1;

                        cislo=c1;
                }
                else if(nasobek<=9999 && nasobek > 100){
                        int y = (int) (nasobek % 2);
                        int x = (nasobek - y)/100;
                        int c = x+1;

                        cislo = c;
                        }
                p[j]=cislo;



    }
 
Nahoru Odpovědět 27.11.2015 20:11
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Lukáš Krása
tomisoka:

Tohle to je inicializace toho pole, že?
Spíš bych rád viděl tvůj pokus o implementaci toho zmenšení pole.

 
Nahoru Odpovědět 27.11.2015 20:16
Avatar
Odpovídá na tomisoka
Lukáš Krása:

Napadlo mě nějak zastavit tu poslounost ale boj´hužel vůbec nevím jak :/

 
Nahoru Odpovědět 27.11.2015 20:17
Avatar
Tomáš Brůna
Redaktor
Avatar
Nahoru Odpovědět 27.11.2015 20:19
Lepší být šprt než blbec :)
Avatar
Odpovídá na Tomáš Brůna
Lukáš Krása:

ano aby se už dále nevypisovali prvky posloupnosti když se objeví stejný prvek :) a to co vyjde dát nějak do pole :) nevím jak na to :/ jinak jsem postupoval stejně jako vy :)

 
Nahoru Odpovědět 27.11.2015 20:29
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Lukáš Krása
Tomáš Brůna:

asi to bude špatně ale spatlal jsem tohle.

Random hod = new Random();
        int pocetCisel = 50;
        int pole[] = new int[50];


        for (int i = 0; i < pocetCisel; i++)
        {
         int cislo = hod.nextInt(3);
         pole[i] = cislo;
         System.out.print(cislo);
        }
        System.out.println();
        String text = "";

        for (int i = 0; i < pole.length; i++)
        {
         if (text.contains(String.valueOf(pole[i])))
         {

         }
         else
         {
          text+=String.valueOf(pole[i]);
         }

        }

        String vyslednepoleznaku[] = text.split(" ");

        int vysledek[] = new int[vyslednepoleznaku.length];

        for (int i = 0; i < vyslednepoleznaku.length; i++)
        {
           vysledek[i] = Integer.parseInt(vyslednepoleznaku[i]);
        }

        for (int i = 0; i < vysledek.length; i++)
        {
            System.out.println(vysledek[i]);
        }
Nahoru Odpovědět 27.11.2015 20:38
Lepší být šprt než blbec :)
Avatar
Tomáš Brůna
Redaktor
Avatar
Nahoru Odpovědět 27.11.2015 20:39
Lepší být šprt než blbec :)
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Lukáš Krása
tomisoka:

Tam ti dělá problém breaknutí dvou for-cyklů?
Pokud jo tak to se dá řešit buďto funkcí, nebo takto:

loop:
for(i=0;i<pole.length;++i){
        for(j=0;j<i;++j){
                if(pole[i]==pole[j]){
                        break loop;
                }
        }
}

Nasledně máš v "i" uloženo kolik prvků chceš vypsat/dát do jiného pole...

 
Nahoru Odpovědět  +1 27.11.2015 20:40
Avatar
Lukáš Krása:

Vážím si vašich rad a Vašeho času nicméne pořád nevím tak bych to zkusil jinak ... nevíte jak bych mohl zastavit generování následující posloupnosti když se objeví prvek který už se vygeneroval? :

public static void main(String[] args) {
                System.out.print("Zadej dvojciferne cislo:");

                int cislo = sc.nextInt();


                for (int j = 0;  j < 100 ; j++) {

                int nasobek = cislo*cislo;



                if(nasobek>=100 && nasobek <999){

                        int y = (int) (nasobek % 2);
                        int x = (nasobek - y)/10;
                        int c = x+1;
                        cislo=c;

                }

                else if(nasobek<=9999 && nasobek > 100){

                        int y = (int) (nasobek % 2);
                        int x = (nasobek - y)/100;
                        int c = x+1;

                 cislo=c;

                        }

                System.out.println(cislo);


    }

děkuji :)

 
Nahoru Odpovědět 27.11.2015 20:50
Avatar
Lukáš Krása:

zadani :)

  1. Program umocní zadané dvouciferné číslo (startovací hodnotu) na druhou.
  2. Z výsledku použije první dvě cifry (zleva), čímž získá dvouciferné číslo.
  3. K tomuto číslu přičte jedničku a výsledkem je nově vygenerované pseudonáhodné číslo.
  4. Body 1) až 3) se opakují tak dlouho, dokud se nezačnou pseudonáhodná čísla opakovat

    (tj. končí výskytem pseudonáhodného čísla, které již bylo dříve vygenerováno).

Příklad vygenerování pseudonáhodných čísel:
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

 
Nahoru Odpovědět 27.11.2015 20:58
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Lukáš Krása
tomisoka:

Prakticky to samé:

int []pole = new int[100];
loop:
for(j=0;j<100;++j){
        //generování...

        pole[j]=cislo;

        for(i=0;i<j;++i){
                if(pole[i]==pole[j]){
                        break loop;
                }
        }
}
 
Nahoru Odpovědět 27.11.2015 20:59
Avatar
sunspinx
Člen
Avatar
sunspinx:

Ja fakt neviem, ci som ti porozumel, ale skus toto

public static void main(String[] args) {
        // TODO code application logic here
        int[] pole = { 1, 3, 4, 5, 1, 1, 3, 4, 5 };
        v:
        for(int i = 0; i < pole.length; i++) {
            for(int j = 0; j < i; j++)
                if(pole[i] == pole[j])
                    continue v;
            System.out.print(pole[i] + " ");
        }
    }
 
Nahoru Odpovědět 27.11.2015 21:02
Avatar
sunspinx
Člen
Avatar
Odpovídá na sunspinx
sunspinx:

Alebo podla toho zadania, ak chces zastavit ten loop, tak proste pouzi break, v com je problem?

 
Nahoru Odpovědět 27.11.2015 21:06
Avatar
Odpovídá na sunspinx
Lukáš Krása:

to je spravne :) jak to vypisu v poli? tj. [1, 2, 3]

 
Nahoru Odpovědět 27.11.2015 21:10
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Lukáš Krása
Tomáš Brůna:

nebo by to šlo, tak že si vygenerovaná čísla nastrkáš do proměnné a pak při každém cyklu kontroluješ zda už v ní to číslo je

Nahoru Odpovědět 27.11.2015 21:15
Lepší být šprt než blbec :)
Avatar
sunspinx
Člen
Avatar
Odpovídá na Lukáš Krása
sunspinx:

Neviem, co mas na mysli.. Chces "vyhovujuce" cisla ulozit do pola a to nasledne vypisat?

 
Nahoru Odpovědět 27.11.2015 21:20
Avatar
 
Nahoru Odpovědět 27.11.2015 21:21
Avatar
Odpovídá na sunspinx
Lukáš Krása:

jak tedy vypíšu ta čísla v poli? [1, 2, 3,]?

 
Nahoru Odpovědět 27.11.2015 21:41
Avatar
sunspinx
Člen
Avatar
sunspinx:

Nakolko dlzka pola, ktore by si siel vytvorit nie je znama, tak siel by som do ArrayListu
-> http://www.itnetwork.cz/…zani-polozek
Nie som teraz k dispozicii, tak si to nastuduj a urob to sam. Je to tipujem domaca uloha, ta by stratila to caro, ak by sme ti ju urobili my :D

 
Nahoru Odpovědět  +1 27.11.2015 21:46
Avatar
sunspinx
Člen
Avatar
sunspinx:

Ako pomocku ti mozem povedat len to, ze budes potrebovat cyklus for, ktorym budes pole naplnat. Skus sa s tym pohrat a urcite na to prides sam !

 
Nahoru Odpovědět 27.11.2015 21:48
Avatar
Lukáš Krása:

díky nějak to zkusím :)

 
Nahoru Odpovědět  +1 27.11.2015 21:49
Avatar
abushrek
Člen
Avatar
abushrek:
ArrayList<Integer> posloupnost = new ArrayList<Integer>();
        System.out.print("Zadej dvojciferne cislo:");
                int cislo = sc.nextInt();
do{
                int nasobek = cislo*cislo;
                int y = (int) (nasobek % 2);
                int x = (nasobek - y)/10;
                int c = x+1;
                cislo=c;
if (!posloupnost.contains(cislo))
                posloupnost.add(cislo);
else break;
}while(true);
 
Nahoru Odpovědět 27.11.2015 22:35
Avatar
abushrek
Člen
Avatar
Odpovídá na abushrek
abushrek:

Pro výpis kolekce použiješ

for(int i=0;i<posloupnost.size();i++)
System.out.println("["+posloupnost.get(i)+";]");
 
Nahoru Odpovědět 27.11.2015 22:39
Avatar
abushrek
Člen
Avatar
abushrek:

Tady je celý kód můžeš to zkusit, psal jsem to jenom tak z hlavy, jelikož nemám žádný kompilátor na javu u sebe momentálně.

import java.util.Scanner;
import java.util.ArrayList;
public class HelloWorld{

     public static void main(String []args){
        Scanner sc = new Scanner(System.in, "Windows-1250");
        ArrayList<Integer> posloupnost = new ArrayList<Integer>();
        System.out.print("Zadej dvojciferne cislo:");
                int cislo = sc.nextInt();
do{
                int nasobek = cislo*cislo;
                int y = (int) (nasobek % 2);
                int x = (nasobek - y)/10;
                cislo = x+1;
if (!posloupnost.contains(cislo))
                posloupnost.add(cislo);
else break;
}while(true);
System.out.print("[");
for(int i=0;i<posloupnost.size();i++)
System.out.print(posloupnost.get(i)+";");
     System.out.print("]");
     }
}
 
Nahoru Odpovědět  -1 27.11.2015 22:55
Avatar
abushrek
Člen
Avatar
abushrek:

Toto by mělo být to co jsi popisoval můžeš vyzkoušet :)

import java.util.Scanner;
import java.util.ArrayList;
public class HelloWorld{

     public static void main(String []args){
        Scanner sc = new Scanner(System.in, "Windows-1250");
        ArrayList<Integer> posloupnost = new ArrayList<Integer>();
        System.out.print("Zadej dvojciferne cislo:");
                int cislo = sc.nextInt();
do{
                int nasobek = cislo*cislo;
                double length = Math.pow(10,(String.valueOf(nasobek).length()-2));  //zjisti pocet cifer nasobku a odecte dve cifry a tim umocni desitku
                int y = (int) (nasobek % 2);
                double x = (nasobek - y)/length;
                cislo = (int)(x+1);
if (!posloupnost.contains(cislo))
                posloupnost.add(cislo);
else break;
}while(true);
System.out.print("[");
for(int i=0;i<posloupnost.size();i++)
System.out.print(posloupnost.get(i)+";");
     System.out.print("]\n Nasledovalo cislo, ktere je jiz obsazeno: "+cislo);
     }
}
 
Nahoru Odpovědět 27.11.2015 23:16
Avatar
Atrament
Člen
Avatar
Odpovídá na Lukáš Krása
Atrament:

Moje verze, vynechal jsem test, zda uživatel nezadává nějaký nesmysl místo dvojciferného čísla.

List<Integer> numbers = new ArrayList<>();
Scanner in = new Scanner(System.in);
int number;

System.out.print("Zadej dvouciferné číslo: ");
number = in.nextInt();
System.out.println("Pridavam: " + number);
numbers.add(number); //pridame uzivatelem zadane cislo

do {

    number *= number; //na druhou
    number = Integer.parseInt(Integer.toString(number).substring(0, 2)); //prvni dve cifry
    number += 1; //plus 1

    if (numbers.contains(number)) { //pokud uz cislo je v kolekci tak konec
        System.out.println("Nalezeno jiz pridane cislo - " + number + ", koncim.");
        break;
    } else { //pokud neni tak ho pridame
        System.out.println("Pridavam: " + number);
        numbers.add(number);
    }

} while (true);
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 28.11.2015 3:13
Avatar
Lukáš Krása:

Děkuji Vám :) problém vyřešen :) bohužel je to jen část mé práce :D

 
Nahoru Odpovědět  +1 28.11.2015 10:49
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 35 zpráv z 35.