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í
×

dnes 11:22 | Komunita

Mozilla.cz informuje, že na blogu Mozilly věnovaném bezpečnosti byly zveřejněny výsledky bezpečnostního auditu služby Firefox Accounts, v českých překladech účet Firefoxu, sloužící hlavně k přihlašování k synchronizaci Firefox Sync. Nalezeno bylo celkem 15 bezpečnostních chyb, z toho jedna byla označena jako kritická a tři jako vážné.

Ladislav Hagara | Komentářů: 0
dnes 11:00 | Nová verze

Byla vydána první stabilní verze 1.0 svobodného komunikačního softwaru Ring (Wikipedie). Ring, původně SFLphone, je součástí projektu GNU [reddit].

Ladislav Hagara | Komentářů: 1
dnes 06:00 | Zajímavý projekt

Warner Skoch na svých stránkách zveřejnil návod (YouTube) na zhotovení kapesní herní konzole MintyPi. Konzole MintyPi je postavena na Raspberry Pi Zero W a RetroPie. Jako obal slouží plechová krabička od mentolek.

Ladislav Hagara | Komentářů: 0
včera 02:00 | Nová verze

Byl vydán Debian 9.1, tj. první opravná verze Debianu 9 s kódovým názvem Stretch a Debian 8.9, tj. devátá opravná verze Debianu 8 s kódovým názvem Jessie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 9 a Debianu 8 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

Ladislav Hagara | Komentářů: 16
22.7. 15:50 | Zajímavý článek

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice zveřejnila čtyřiačtyřicetistránkovou výroční zprávu za rok 2016. K dispozici je ve formátu pdf ve vysokém (21,68 MB) a nízkém (7,1 MB) rozlišení. Zpráva byla vytvořena ve Scribusu.

Ladislav Hagara | Komentářů: 0
22.7. 14:40 | Zajímavý software

Mozilla.cz informuje, že Firefox Focus pro Android, velmi jednoduchý prohlížeč zaměřený na anonymní prohlížení, dosáhl milionu stažení. Firefox Focus blokuje sledující prvky a reklamy a při ukončení automaticky smaže všechna uložená data stránek, historii prohlížení a cookies.

Ladislav Hagara | Komentářů: 39
22.7. 14:20 | Komunita

Vyplněním dotazníku na Formuláře Google lze ovlivnit výběr výchozích aplikací v Ubuntu 18.04 LTS. Podrobnosti v příspěvku Dustina Kirklanda na Ubuntu Insights [reddit].

Ladislav Hagara | Komentářů: 7
21.7. 11:30 | Komunita

Etherpad (Wikipedie), svobodný online webový textový editor umožnující spolupráci v reálném čase, se stal oficiálním projektem organizace Software Freedom Conservancy (Wikipedie). Vývojáři Etherpadu se tak mohou stejně jako vývojáři dalších projektů soustředit pouze na vývoj softwaru a vše kolem zařídí Software Freedom Conservancy. Spuštěna byla instance Etherpadu pad.sfconservancy.org.

Ladislav Hagara | Komentářů: 3
21.7. 10:40 | Zajímavý článek

Lukáš Růžička se v článku Workrave ve Fedoře aneb jak si nevytunelovat karpál na MojeFedora.cz věnuje aplikaci Workrave (Wikipedie) na sledování času stráveného na počítači, která může pomoci vyhnout se negativním účinkům práce s počítačem (RSI, CTS), nebo je alespoň výrazně zmírnit.

Ladislav Hagara | Komentářů: 1
21.7. 10:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Shadow Warrior: Special Edition běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 2
Těžíte nějakou kryptoměnu?
 (5%)
 (3%)
 (20%)
 (71%)
Celkem 59 hlasů
 Komentářů: 2, poslední dnes 03:34
    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: 1196×
    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.