Semestrální práce – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Semestrální práce – Java – Fórum – Programujte.comSemestrální práce – Java – Fórum – Programujte.com

 

Jirka
~ Anonymní uživatel
305 příspěvků
26. 12. 2012   #1
-
0
-

Zdravím všechny.

Dostal jsem zadání na semestrální práci na vysoké škole na téma ,,Losování''. Má to být jako Sportka. Na střední škole jsem programování vůbec neměl a nyní to mám prvně a absolutně v tom plavu. Něco jsem zkoušel sám udělat, pomocí různých návodů, různých materiálů z internetu, ale prostě se nechytám :-(. Byl by zde někdo ochotný mi pomoci udělat tuto semestrální práci a případně nějak vysvětlit?

Děláme v programu BlueJ. Kdyby náhodou někdo byl tak ochotný, mohu zde uvést nějaký kontakt (Facebook/ICQ/Skype/e-mail) a nějak se domluvíme a případně pošlu celé zadání.

Předem děkuji za všechny odpovědi.

Nahlásit jako SPAM
IP: 90.181.14.–
Chrasty
~ Redaktor
+4
Posthunter
26. 12. 2012   #2
-
0
-

#1 Jirka
Všichni ti tu rádi pomůžou, stačí jen, když přijdeš s konkrétním problémem.

Takže - co už jsi zkoušel udělat, co ti na tom nefunguje? Nevíš jak vygenerovat náhodná čísla v daném rozsahu?

Nahlásit jako SPAM
IP: 193.179.196.–
Jirka
~ Anonymní uživatel
305 příspěvků
26. 12. 2012   #3
-
0
-

Takže. S pomocí kamaráda, kterej ale umí C++ jsem se snažil něco udělat a mám zhruba tohleto.

public class Sportka
{
    //instanční proměnné
    
    public int[] tazenaCisla;               // Proměnná zastupuje pole tažených čísel
    public int[] micky;                     // Proměnná zastupuje pole míčků v osudí
    public Random nahoda;
    public boolean pripraveno;              // Určuje připravenost, či nepřipravenost losování
    public int pocetTazenychCisel = 6;      // Určuje, kolik čísel bude losováno
    public int zKolika = 49;                // Určuje z kolika čísel se bdue losovat
    public int[][] dataProAnalyzu;          // První pole zastupuje počet tahů, druhé pole zastupuje vylosovaná čísla
    public int celkovyPocetTahu = 50;       // Proměnná určující celkový počet tahů
    public int pocetTahu;                   // Počítadlo tahů
    
    
    /**
     *  Konstruktor pro objekt třídy Sportka
     */
    public Sportka()
    {
        //inicializace instančních proměnných
        tazenaCisla = new int [pocetTazenychCisel];
        micky = new int [zKolika];
        nahoda = new Random();                                  //vytvoří nový objekt typu Random
        pripraveno = false;
        dataProAnalyzu = new int[celkovyPocetTahu][pocetTazenychCisel];
        pocetTahu = 0;
    }
       
    /**
     *  Konstruktor pro zjištění připravenosti, či nepřipravenosti losování
     */
    public boolean priprav()
    {
        if(pocetTazenychCisel > zKolika)        // Slouží ke kontrole počtu tažených čísel vůči celkovému počtu
        {
            pripraveno = false;
            System.out.println("NEpřipraveno pro losování - má být losováno " + pocetTazenychCisel
                               + " micku z " + zKolika + " !");
        }
        else
        {
            if (pocetTahu < celkovyPocetTahu)
            {
                pripraveno = true;
                System.out.println("Připraveno pro losování.\nV následujicím tahu (tah č. " + (pocetTahu +1) + ") padly tato čísla: ");
            }
            else
            {
                pripraveno = false;
                System.out.println("NEpřipraveno pro losování - maximální počet tahů dosažen(" + celkovyPocetTahu + ")!");
            }
        }
        return pripraveno;
    }
    
    /**
     *  Metoda pro inicializaci osudí
     */
    public void reset()                    // Inicializujeme osudí
    {
        for (int x = 1; x <= zKolika; x++)
        {
            micky[x-1] = x;                 // Přiřazujeme číselnou hodnotu jednotlivým míčkům
        }
    }
    
    /**
     *  Metoda pro vygenerování náhodného čísla
     */
    public int tah()                       // Vrátí nám náhodně generované číslo
    {
        return nahoda.nextInt(zKolika) + 1;
    }
    
    /**
     *  Metoda pro losování čísel
     */
    public void losovani()
    {
       if (pripraveno)
       {
           pocetTahu++;
           int vylosovaneCislo;     // Zde se ukládá vylosované číslo
           reset();                 // Přiřadí míčkům hodnoty
           for (int x = 0; x < pocetTazenychCisel; x++)
           {
               vylosovaneCislo = tah();          // Výsledek metody tah, je uložen do lokální proměnné pomocná
               while (micky[vylosovaneCislo-1] == 0)
               {
                   vylosovaneCislo = tah();
               }
               micky[vylosovaneCislo-1] = 0;            // K vylosovanému číslu, je přiřazena hodnota nula, aby nemohlo být znovu v daném tahu taženo
               tazenaCisla[x] = vylosovaneCislo;        // Vylosované číslo je uloženo do pole tažených čísel
               System.out.print(vylosovaneCislo + ", ");
           }
           pridejCisla(tazenaCisla);
           pripraveno = false;
           System.out.println("");
       }
       else
       {
           System.out.println("Osudí není připraveno!");
           System.out.println();
       }
    }
    
    /**
     *  Metoda přidej čísla
     */
    private void pridejCisla(int[] cisla)       // Shromažďuje data pro následnou analýzu
    {
        if (pocetTahu <= celkovyPocetTahu)
        {
            for (int x = 0; x < pocetTazenychCisel; x++)
            {
                dataProAnalyzu[pocetTahu-1][x] = cisla[x];
            }
        }
    }
    
    /**
     *  Metoda pro losování
     */
    public void losujNekolikrat(int kolikrat)
    {
        for (int x = 1; x <= kolikrat; x++)
        {
            priprav();
            losovani();
        }
    }
}

V tuhle chvíli mi to vyhazuje ty pseudonáhodná čísla (6 čísel ze 49).

Nahlásit jako SPAM
IP: 90.181.14.–
Jirka
~ Anonymní uživatel
305 příspěvků
26. 12. 2012   #4
-
0
-

Takto vypadá zadání:

Při řešení projektu se zaměřte na splnění následujících požadavků:
1. Soustřeďte se na návrh objektového modelu, který bude popisovat proces tahů, evidenci uskutečněných tahů, evidenci odevzdaných tiketů v každém kole a následného zjištění počtů výherců.
2. Předpokládejte, že připravenost osudí k zahájení tahu bude kontrolovat nezávislý dozor. Výběr míčku, který bude tažen, bude určen generátorem pseudonáhodných čísel. Vylosované míčky se do osudí nevrací.
3. V každém kole i za všechna uplynulá kola bude možné zjistit statistiku tahů – která čísla jsou tažena nejčastěji, která vůbec, která nejméně, kolik tiketů vyhrálo 1. pořadí – všechna uhodnutá čísla, kolik 2. pořadí …
4. Projekt musí obsahovat alespoň 3 třídy + minimálně 1 testovací třídu.

To co jsem postnul předtím jsem udělal jako 1 třídu v tom BlueJ. Druhou třídu, mám tu analýzu, pro zjišťování statistik, kolikrát jaké číslo bylo taženo.

To vypadá takto, ale to už mi nefunguje.

public class Analýza extends Sportka
{
    /**
     *  Metoda pro analýzu - zjištění kolikrát bylo jaké číslo taženo.
     */
    public void analyza()
    {
        int[] pomocneMicky = new int[zKolika]; 
        //zpocitej kolikrat bylo ktere cislo tazeno
        {
            for (int y = 0; y < pocetTahu; y++ ) 
            {
                for (int x = 0; x < pocetTazenychCisel; x++)
                {
                    int pomocnecislo = dataProAnalyzu[y][x];
                    pomocneMicky[pomocnecislo - 1]++; 
                }
            }
        }
        //najdi 3x maximum a 3x minimum
        {
            int [] maximum = new int[3];   // pole uchovávající čísla míčků
            
            int [] minimum = new int[3];   // pole uchovávající čísla míčků         
            
            for (int y = 0; y < 3; y++)
            {
                int a0 = 0;
                int a1 = 0;
                int z0 = pocetTahu + 1;
                int z1 = pocetTahu + 1;                
                for (int x = 0; x < zKolika; x++)
                {   
                    int pomocnecislo0 = pomocneMicky[x];      // pomocné číslo 0 = počet vylosování
                    int pomocnecislo1 = x+1;   // pomocné číslo 1 = číslo míčku
                    if (pomocnecislo0 > a0)   //maximum
                    {
                        if ((pomocnecislo1 != maximum[0]) && (pomocnecislo1 != maximum[1]) && (pomocnecislo1 != maximum[2]))
                        {
                            a0 = pomocneMicky[x];
                            a1 = x+1;
                            maximum[y] = a1;
                        }
                    }
                    if (pomocnecislo0 < z0)  //minimum
                    {
                        if ((pomocnecislo1 != minimum[0]) && (pomocnecislo1 != minimum[1]) && (pomocnecislo1 != minimum[2]))
                        {
                            z0 = pomocneMicky[x];
                            z1 = x+1;
                            minimum[y] = z1;
                        }
                    }
                }
                
            }
            System.out.println("Nejcasteji tazene micky: " + (maximum [0] ) + "(" + pomocneMicky[(maximum [0]-1)] + "x), " +
                                                             (maximum [1] ) + "(" + pomocneMicky[(maximum [1]-1)] + "x), " +
                                                             (maximum [2] ) + "(" + pomocneMicky[(maximum [2]-1)] + "x), ");
                                                           
            System.out.println("Nejmene tazene micky: " + (minimum [0] ) + "(" + pomocneMicky[(minimum [0]-1)] + "x), " +
                                                          (minimum [1] ) + "(" + pomocneMicky[(minimum [1]-1)] + "x), " +
                                                          (minimum [2] ) + "(" + pomocneMicky[(minimum [2]-1)] + "x), ");
            System.out.println();                              
        }
        
    }    
}

To mi vypíše hlášku:

java.lang.ArrayIndexOutOfBoundsException: -1

A odsud už se nemohu hnout. Nevím jak to upravit a nevím, jak dodělat to, že tam jakoby ten sázející bude zadávat čísla, která budou ve ,,hře'' a aby se to vyhodnocovalo. To nevím, jak do toho zakomponovat. :-(

Nahlásit jako SPAM
IP: 90.181.14.–
Jirka
~ Anonymní uživatel
305 příspěvků
26. 12. 2012   #5
-
0
-

Omlouvám se, ještě toto je část zadání a to jsem myslel tím, jak tam zadávat čísla.

Pro ovládání aplikace vytvořte jednoduché textové rozhraní.

Nahlásit jako SPAM
IP: 90.181.14.–
Flowy
~ Anonymní uživatel
449 příspěvků
26. 12. 2012   #6
-
0
-

v jave sa prva pozicia v array dava na index 0 ... podla riadku z chyby si najdi kde sa to dostava za okraj a oprav

pre zadavanie cisel sa pouziva stream System.in ... Scanner ju trochu upravuje a trochu lahsie sa riadi

Nahlásit jako SPAM
IP: 178.41.234.–
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, 21 hostů

Podobná vlákna

Semestrální práce — založil Diabolos

Semestralni prace — založil Dddf

Semestrální práce — založil Zap

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ý