abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 20:22 | Zajímavý článek

Nadace Raspberry Pi vydala již osmapadesáté číslo (pdf) stostránkového anglicky psaného časopisu MagPi věnovanému Raspberry Pi a projektům postaveným na tomto jednodeskovém počítači a druhé číslo (pdf) časopisu Hello World primárně určeného pro učitele informatiky a výpočetní techniky.

Ladislav Hagara | Komentářů: 0
včera 19:55 | Humor

Portál Stack Overflow informuje na svém blogu, že pomohl ukončit editor Vim už více než milionu vývojářů. V loňském roce například hledal odpověď na otázku Jak ukončit editor Vim v průměru 1 z 20 000 návštěvníků.

Ladislav Hagara | Komentářů: 4
včera 19:22 | Nová verze

Po pěti měsících od vydání verze 3.5.0 byla vydána nová stabilní verze 3.6.0, tj. první z nové řady 3.6, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie). Z novinek lze zmínit například podporu dvou nových 64bitových platforem little-endian POWER machines (ppc64le) a IBM z Systems (s390x) nebo nové balíčky Rust 1.17.0, Cargo 0.18.0, GHC 8.0.2 a Julia 0.5.2.

Ladislav Hagara | Komentářů: 0
24.5. 21:33 | Bezpečnostní upozornění

V Sambě byla nalezena a opravena bezpečnostní chyba CVE-2017-7494. Má-li útočník právo ukládat soubory na vzdálený server, může tam uložit připravenou sdílenou knihovnu a přinutit smbd server k jejímu načtení a tím pádem ke spuštění libovolných příkazů. Chyba je opravena v upstream verzích 4.6.4, 4.5.10 a 4.4.14. Chyba se týká všech verzí Samby od verze 3.5.0 vydané 1. března 2010.

Ladislav Hagara | Komentářů: 4
24.5. 20:44 | Nová verze

Byla vydána nová stabilní verze 4.3.0 integrovaného vývojového prostředí (IDE) Qt Creator. Z novinek lze zmínit například integraci editoru kódu do Qt Quick Designeru.

Ladislav Hagara | Komentářů: 1
24.5. 20:11 | Bezpečnostní upozornění

Společnost Check Point informuje na svém blogu o novém vektoru útoku. Pomocí titulků lze útočit na multimediální přehrávače VLC, Kodi, Popcorn Time, Stremio a pravděpodobně i další. Otevření útočníkem připraveného souboru s titulky v neaktualizovaném multimediálním přehrávači může vést ke spuštění libovolných příkazů pod právy uživatele. Ukázka na YouTube. Chyba je opravena v Kodi 17.2 nebo ve VLC 2.2.6.

Ladislav Hagara | Komentářů: 11
23.5. 15:18 | Zajímavý software

CrossOver, komerční produkt založený na Wine, je dnes (23. 5. 2017) dostupný ve slevě. Roční předplatné linuxové verze vyjde s kódem TWENTYONE na $21, resp. $1 v případě IP z chudších zemí. Firma CodeWeavers, která CrossOver vyvíjí, významně přispívá do Wine. Přidaná hodnota CrossOver spočívá v přívětivějším uživatelském rozhraní, integraci do desktopu a podpoře.

Fluttershy, yay! | Komentářů: 26
23.5. 15:11 | Zajímavý projekt

V únoru loňského roku bylo představeno několik útoků na celou řadu bezdrátových klávesnic a myší s názvem MouseJack. Po více než roce lze chybu opravit, tj. aktualizovat firmware, také z Linuxu. Richardu Hughesovi se podařilo navázat spolupráci se společností Logitech, získat od nich dokumentaci, přesvědčit je, aby firmware poskytovali přímo a ne jako součást .exe souboru, aby mohl být popis začleněn do služby Linux Vendor Firmware Service (LVFS) a aktualizace tak mohla proběhnou přímo z Linuxu pomocí projektu fwupd.

Ladislav Hagara | Komentářů: 2
23.5. 13:22 | Nová verze

Po roce a půl vydali vývojáři projektu SANE (Scanner Access Now Easy) (Wikipedie) novou verzi 1.0.27 balíku SANE-Backends. Nejnovější verze tohoto balíku pro přístup ke skenerům přináší například významná vylepšení v několika backendech nebo podporu pro více než 30 nových modelů skenerů. Verze 1.0.26 byla přeskočena.

Ladislav Hagara | Komentářů: 0
22.5. 20:55 | Komunita

Od 18. do 21. května proběhla v Saint-Étienne Linux Audio Conference 2017. Na programu byla řada zajímavých přednášek a seminářů. Videozáznamy přednášek lze zhlédnout na YouTube. K dispozici jsou také články a prezentace.

Ladislav Hagara | Komentářů: 0
Chystáte se pořídit CPU AMD Ryzen?
 (6%)
 (32%)
 (1%)
 (8%)
 (44%)
 (9%)
Celkem 616 hlasů
 Komentářů: 62, poslední 19.5. 01:57
    Rozcestník

    Dotaz: Java - metoda opak. ctvercu

    ahad!3l avatar 15.10.2010 15:40 ahad!3l | skóre: 6
    Java - metoda opak. ctvercu
    Přečteno: 1195×
    Zdravim. Dostal jsem za ukol napsal program v Jave, ktery ma umocnit cele zadane cislo. V Jave nemam zadne zkusenosti, takze si ani s takovou trivialni veci bohuzel nevim rady. Chtel bych nekoho proprosit, kdyby by me mohl postrcit. Cele zadani zni takto:

    Napište funkci, která umocní zadané celé číslo a (typu long) na b (typu long) ve zbytkové třídě Zn; vše jen pomocí násobení. Vstupem funkce jsou hodnoty a,b,n; výstupem je a^b (a na b; POZOR v jave je to XOR) v Zn (opět typu long). K umocnění použijte metodu opakovaných čtverců. Funkci použijte v programu, který z klávesnice načte hodnoty a, b (b>=0), n (n>1); vypočte a^b (umocní a na b) v Zn a výsledek vypíše.

    Počítání ve zbytkové třídě Zn (modulo n) je takové, že na výsldek aplikujete modulo n (tj: a+b v Zn = (a+b)%n; a*b v Zn = (a*b)%n atd.)


    A nasledne vysvetlivky:
    1. Inicializujeme pomocnou proměnnou x=1.
    2. Mocnitel (b) se zapíše v binárním kódu (např. 11 dekadicky se zapíše binárně jako 1011); mezi znaky binárního kódu vepíšeme znak s (s jako square; např. pro 11 dekadicky, tedy 1011 binárně, je to 1s0s1s1).,
    3. Tuto posloupnost procházíme zleva doprava, pokud narazíme na 1, vynásobíme x hodnotou a; pokud narazíme na 0 neděláme nic; pokud narazíme na s umocníme x na druhou (uděláme čtverec). Všechny zmíněné operace jsou modulo n (tedy %n). Poté, co projdeme celý řetězec, je v proměnné x uložen výsledek.

    * Řetězec (např. 1s0s1s1) nemusíme vytvářet, je jen pro představu. NEPŘIJÍMÁM úkoly s použitím řetězců. Metodu implementujeme pomocí cyklu, jehož tělo se bude opakovat maximálně tolikrát, kolik je bitů v příslušném datovém typu.

    Postupuji zatim dobre?
    package dcv4;
    
    public class Zn {
    
    	
    	public static void main(String[] args) {
    		java.util.Scanner jc = new java.util.Scanner(System.in);
    		
    		System.out.printf("Zadejte n: ");
    		
    		
    		long a, b = 1011;
    	int n;
    	int x = 1;
    	
    	if (a^b) {
        if (b>=0, n>1) {
    	}
    Dekuji za kazdou radu.

    Odpovědi

    15.10.2010 15:56 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Myslím, že nepostupuješ. Jestli zkoušíš to 1011 z příkladu, tak to je jen binárně zapsané číslo 11 (jedenáct), nikoli tisíc jedenáct. Také se mi nezdá a^b, proč to tam je? Asi bys měl procházet číslo b po jednotlivých bitech a podle hodnoty daného bitu pracovat s číslem x.
    15.10.2010 19:45 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Zkus sem hodit něco, co bude přeložitelné... v prvním if není výsledkem boolean, n nemáš inicializované, co znamená ta čárka v druhém if?
    Překladač ti nikdy neřekne: "budeme kamarádi"
    16.10.2010 11:48 x22
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Ono to nie je az tak trivialne. nasobenie mod long sa pocita blbo kvoli moznemu preteceniu. Cudujem sa, ze o tomto problem sa v zadani nepise, ked uz je tam celkom podrobny postup.

    Zistit, aky je k-ty bit cisla b sa da zistit 2 operatormi (vysledok je rovno boolean).
    16.10.2010 12:44 Marek
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    >pomocí cyklu, jehož tělo se bude opakovat maximálně tolikrát, >kolik je bitů v příslušném datovém typu Zdravim.

    Mame (b)_10 = (b_p b_(p-1) ... b_1 b_0)_2

    Skus sa zamysliet ako zo znalosti: (v dalsom (...) znamena v dvojkovej sustave)

    a^(b_p ... b_1) mod n mozno vypocitat
    1. a^(b_p ... b_1 0) mod n
    2. b) a^(b_p ... b_1 1) mod n

    Je to vlastne popisane v hinte 3.

    Cyklus, ktory zbehne maximalne tolkokrat, kolko je bitov v reprezentacii datoveho typu pre b sluzi zase na to, aby sa dala zistit reprezentacia b v dvojkovej sustave zlava. (Vacsinou sa ide sprava, t.j. od poslednej cislice.)

    Tieto dve veci treba dat dokopy a mas program.

    Priklad:
    
    a^6 mod n, predpokladame, ze datovy typ reprezentujuci 6 ma 4 
    bity. Preto, 6 je reprezentovane ako 0101.
    
    Na zaciatku mame a^(0) mod n = 1.
    
    Zistime prvu cislicu 4-bitovej reprezentacie cisla 6:
    
    0: -> pouzijeme postup, ako z a^(0) mod n -> a^(00) mod n
    
    V dalsom kroku zistime 2. cislicu:
    
    1: -> pouzijeme postup, ako z a^(00) mod n -> a^(001) mod n
    
    3. cislica:
    
    0: a^(001) mod n -> a^(0010) mod n
    
    4. cislica:
    
    1: a^(0010) mod n -> a^(00101) mod n
    
    a mame vysledok. 
    

    Snad to aspon trochu pomoze.

    Marek

    ahad!3l avatar 17.10.2010 13:59 ahad!3l | skóre: 6
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Moc dekuju za rady, ale je to na me stejne slozite. Javu jsem pred 2 tydny videl poprve. Jinak tady jde videt zadani asi lepe..
    17.10.2010 18:28 vaki | skóre: 1
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Algoritmus je to pěkný, na pár řádků. Jeho obtížnost je pro začátečníky řekl bych střední.

    Popis algoritmu v odkazovaném dokumentu je dostatečný. Dle zkušeností se však začátečník při pohledu na tento popis vyděsí a začne přemýšlet víc o tom co neví než o tom co ví.

    algoritmus jsem si naprogramoval a i když nemám moc čas ho testovat zdá se být funkční. Nejprve se úplně vykašlete na načítání hodnot a zaměřte se na samotný výpočet tak, jak je popsaný v zadání.

    Krok 1) Inicializovat proměnnou - tak to je snad jasné

    Krok 2) Převést na binární číslo v textovém řetězci je zadavatelem zakázané, proto jediné co potřebujeme od toho kroku je zjistit kolik bitů vlastně dané čáslo zaujímá. Alternativou je použít konstantu Long.BITS ale v tom případě by se vždy testovali všechny bity. Nevím zda je zadavatelme přijatelné řešení kupříkladu níže popsaný převod. Nechám na Vašem uvážení

    int pocetBitu=Long.toBinaryString(b).length()

    Krok 3) Zde je třeba se zamyslet. Zadavatel výslovně zakázal používat řetězec. Přesto jsme schopni zjistit zda je na požadovaném místě binární reprezentace čísla b jednička nebo nula. Pro i-tý bit čísla si jednoduchým výpočtem 2 na i-tou vytvořte bitovou masku a jejich ANDem (operace & ) zjistíte zda je tam jednička nebo ne.

    2a) je jednička? Pak podle popisu provede násobení x číslem a (avšak v modulu zn) tedy

    x = (x*a)%zn;

    2b) je nula? neděláme nic

    2c) ještě musíme ošetřit stav 's', a při rychlém pohledu do řetězce v příkladu je jasné, že znak 's' následuje za každým znakem, kromě posledního. Tedy pokud pracujeme s jiným než posledním znakem, provedeme navíc krok x na druhou opět v modulu zn

    x = (x*x)%zn;

    Když takto projdeme všechny bity čísla b, máme v x uložený výsledek.

    --- Algoritmus Vám samozřejmě mohu poslat, ale samotné řešení bez jeho pochopení Vám v dlouhodobém výhledu stejně nepomůže.
    ahad!3l avatar 17.10.2010 19:47 ahad!3l | skóre: 6
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Pokud byste byl tak hodny, reseni by se mi hodilo. ( ahadiel@centrum.cz )
    Alespon bych si to okoukal, ikdyz mi ve studiu nepomuze, to mate pravdu. ( ) Ja totiz moc nechapu celkove zadani. Umocneni se mi podarilo provest takto:
    public class Mocnina {
        
        public static void main(String[] args) {
            java.util.Scanner in = new java.util.Scanner(System.in).useLocale(java.util.Locale.US);
            
            for (; ; ) {
                System.out.println("Zadej dvě celá čísla: ");
                int m = in.nextInt();
                int n = in.nextInt();
                int mocnina = 1;
                int nn = n;
                int mm = m;
                while (nn > 0) {
                    if (nn % 2 == 1) {
                        mocnina = mocnina * mm;
                    }
                    mm = mm * mm;
                    nn = nn / 2;
                }
                System.out.println(m + " na " + n + " = " + mocnina);
            }
        }
    }
    Ovsem nevim si rady s temi bity, zbytkovou tridou Zn. Celkove se mi zda, ze je to celkem neumerne nasim schopnostem, jelikoz 90% tridy v Jave pred 2 tydny teprve zacalo, vcetne me. Mam ale vybornou knizku, tak se snad moje schopnosti brzy rozsiri. Moc Vám děkuji za ochotu.
    17.10.2010 19:54 vaki | skóre: 1
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Moje metoda pro mocinu:
    
    public static long MetodaOpakovanychCtvercu(long a, long b, long zn){
    		// zjistíme počet bytů mocnitele (parametr b)
    		int pocetBitu = Long.toBinaryString(b).length();
    
    		// inicializace výsledkové proměnné
    		long x = 1;
    		
    		// procházení čísla
    		for(int i=pocetBitu-1; i>=0; i--){			
    			// Spočítáme bitovou masku pro i-tý bit
    			long mask = Math.round(Math.pow(2, i));
    			
    			/* je-li i-tý bit čísla b 1 provedeme operaci pro znak '1'*/
    			if((b & mask) == mask )
    				x = (x*a)%zn;
    
    			/* pokud se nejedná o poslední bit, provedem operaci znak 's' */
    			if(i > 0)
    				x = (x*x) % zn;
    		}
    		
    		return x;
    	}
    
    ahad!3l avatar 17.10.2010 20:19 ahad!3l | skóre: 6
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Uff..no budu to muset prostudovat a nejak se s tim poprat. Tohle bych teda nezplodil. Dekuji, ze jste tam vlozil i komentare. Alespon vim, co jaky radek ma za ukol delat.
    17.10.2010 20:27 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Lepší než
    long mask = Math.round(Math.pow(2, i));
    je
    long mask = 1l << i;
    Překladač ti nikdy neřekne: "budeme kamarádi"
    17.10.2010 20:37 Radovan
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Hele, nejste z jedné třídy? http://forum.root.cz/index.php?topic=1056.0
    Saljack avatar 19.10.2010 11:04 Saljack | skóre: 28 | blog: Saljack | Praha
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Ha ha nejsi náhodou z FELu a tohle máš do algoritmizace :-D tohle jsme také dělali.
    Sex, Drugs & Rock´n Roll.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.