Duplicita v poli – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Duplicita v poli – Java – Fórum – Programujte.comDuplicita v poli – Java – Fórum – Programujte.com

 

muska
~ Anonymní uživatel
3 příspěvky
26. 1. 2013   #1
-
0
-

Začátečnice v programování - program java, nevím si rady s duplicitou v poli, volání přes parametr, logická metoda. Prosím, poraďte.

import java.util.*;

public class oprava{

public static void main(String[]args){
Scanner sc=new Scanner(System.in);

   int []a; int[]d;
   int n, i, c;
   int odpoved;
   int p=0;
  
  do{
  do{
   System.out.print("Zadej pocet prvku pole:");
   n = sc. nextInt();
   if (n<=0) System.out.println("Zadej cislo vetsi nez nula!");
   }while(n<=0);
  
    a = new int[n];
    for (i=0; i<a.length;i++){
    a[i]=(int)Math.round(Math.random()*19+1);
   
    c = (int)Math.round(Math.random()*19+1);
   
    metoda(a,c);
    p++;
    }
    System.out.println("Cyklus probehl"+" "+p+" "+"krat.");
    
   System.out.println("Pokud chces opakovat vypocet zadej 1, jinou klavesnici skoncis program:-):");
   odpoved = sc. nextInt();
   }while(odpoved==1);
  }
  public static boolean metoda(int []pole, int x){//logicka metoda
   boolean test=false;
   int pocetx=0;
   int i;
  
   for(i=0;i<pole.length;i++)
    if(pole[i]!=x){test=true;
          break;}
         {System.out.print(x+" ");}
    if(pole[i]==x){test=false;
          }return test;
    }
   }

Nahlásit jako SPAM
IP: 195.113.112.–
Lupajz
~ Anonymní uživatel
8 příspěvků
26. 1. 2013   #2
-
0
-

Aká duplicita ? 

Ja tam žiadne väčšie súvislosti nevidím :P 

Zadej pocet prvku pole:20
13 5 17 8 15 16 10 6 3 7 18 5 10 2 14 13 10 17 13 3 Cyklus probehl 20 krat.
Pokud chces opakovat vypocet zadej 1, jinou klavesnici skoncis program:-):
1
Zadej pocet prvku pole:50
19 14 10 8 4 5 10 5 7 3 6 8 10 17 13 13 16 4 18 2 15 2 20 7 9 11 2 17 4 11 5 15 3 8 9 15 15 14 3 10 13 18 20 14 6 4 16 16 9 17 Cyklus probehl 70 krat.
Pokud chces opakovat vypocet zadej 1, jinou klavesnici skoncis program:-)
Nahlásit jako SPAM
IP: 78.99.198.–
muska
~ Anonymní uživatel
3 příspěvky
26. 1. 2013   #3
-
0
-

#1 muska
zadání je, že mám vytvořit program, který vygeneruje čísla a odstraní duplicitu...duplicitu mám odstranit pomocí logické metody, v programu jsem ji nazvala metoda, tedy žádné číslo ve vypsaném poli nesmí být dvakrát...a právě na to nemohu přijít

Nahlásit jako SPAM
IP: 37.188.232.–
Lupajz
~ Anonymní uživatel
8 příspěvků
26. 1. 2013   #4
-
0
-

#3 muska


Ale je ti jasné že ten random tam máš potom zlý :P kedže sa pýtaš koľko prvkov generovať a dávaš random len (1-19). Toto skús urobiť aspoň ako od (1 - (pocetGenerovanychPrvkov +10)) alebo niečo také. Ja ten Math.random() osobne nemám rád :P Ja radšej objekt triedy Random :) a potom int hodnotu vyvolám ako c = generator.nextInt(); <- príklad.     

To c by som najprv nikam neukladal, prebehol by som pole a ak už vygenerované číslo v poli je tak by som len pokračoval cyklom. A ak v poli nie je, až potom by som ho tam uložil :) Tam by sa hodil nejaký if.

Nahlásit jako SPAM
IP: 78.99.198.–
Lupajz
~ Anonymní uživatel
8 příspěvků
26. 1. 2013   #5
-
0
-

#1 muska
Pardon, moc už Javu neviem :P ale snáď pomôžem : 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication1;
//JavaApplication1

/**
 *
 * @author Lupajz
 */
import java.util.*;

public class JavaApplication1 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random gnc = new Random();
        int[] a;
        int[] d;
        int n, i, c;
        int odpoved;
        int p = 0;
        boolean jeVPoli;
        

        do {
            do {
                System.out.print("Zadej pocet prvku pole:");
                n = sc.nextInt();
                if (n <= 0) {
                    System.out.println("Zadej cislo vetsi nez nula!");
                }
            } while (n <= 0);

            a = new int[n];
            i = 0;
            
            do{
            

                c = gnc.nextInt(n+5);
                
                //System.out.print(c+" ");
                jeVPoli = metoda(a, c);
                if(jeVPoli != false){
                    a[i] = c;
                    p++;
                    i++;
                    System.out.print(c + " ");
                }
                
                }while(i != (n) );
            System.out.println("Cyklus probehl" + " " + p + " " + "krat.");

            System.out.println("Pokud chces opakovat vypocet zadej 1, jinou klavesnici skoncis program:-):");
            odpoved = sc.nextInt();
        } while (odpoved == 1);
    }
//***********************************************************************************
    public static boolean metoda(int[] pole, int x) {//logicka metoda
        boolean test = true;
        int i;

        for (i = 0; i < pole.length; i++) {
            if (pole[i] == x) {
                test = false;
         
            }
            
        
        }
        return test;
    }
}

Možno som slepý ale nikde som si nevšimol duplicitu : 

Zadej pocet prvku pole:5
7 6 8 4 9 Cyklus probehl 5 krat.
Pokud chces opakovat vypocet zadej 1, jinou klavesnici skoncis program:-):
1
Zadej pocet prvku pole:10
2 14 3 13 4 9 6 7 1 5 Cyklus probehl 15 krat.
Pokud chces opakovat vypocet zadej 1, jinou klavesnici skoncis program:-):
1
Zadej pocet prvku pole:20
10 4 13 14 11 15 16 21 20 23 24 19 22 3 12 18 2 8 7 1 Cyklus probehl 35 krat.
Pokud chces opakovat vypocet zadej 1, jinou klavesnici skoncis program:-):
Nahlásit jako SPAM
IP: 78.99.198.–
muska
~ Anonymní uživatel
3 příspěvky
27. 1. 2013   #6
-
0
-

Moc pomohlo, díky:-)

Nahlásit jako SPAM
IP: 37.188.231.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Duplicita — založil Vítězslav Titl

Největší v poli polí — založil Noneus

Hledání v poli polí — založil jaxx19

Moderátoři diskuze

 

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