Anonymní profil Anonymní uživatel – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Anonymní uživatel – Programujte.comAnonymní profil Anonymní uživatel – Programujte.com

 

Příspěvky odeslané z IP adresy 147.228.209.–

Jakub Kohout
Assembler › Převod 32 Int na float
14. 5. 2014   #190150

Dobrý den,

snažím se napsat kód pro převod 32 bitového int čísla na float. Jediné co jsem byl schopen vypotit je tohle, ale je tam nekde chyba.

 

#include <stdio.h>

float itof (int i)
{
    float flt = 0.0;

    _asm
    {
        mov eax, i
        bt eax, 31
        jnc plus

        rcr [flt], 1
        neg eax

        plus:

        mov edx, 0x7F       // Bias

        bsr ebx, eax

        mov ecx, 23
        cmp ebx, ecx
        jbe fit

        // too big:
        sub bl, cl
        mov cl, bl
        shr eax, cl
        setc cl             // to round or not to round
        add eax, ecx
        add edx, ebx
        mov cl, 23

        fit:
        bsr ebx, eax
        btr eax, ebx
        sub cl, bl
        shl eax, cl
        or [flt], eax

        add ebx, edx
        shl ebx, 23
        or [flt], ebx
    }

    return flt;
}

int main ( void )
{
    float flt;
    int i;

    i = 12345678;
//  i = -0x8888888;     // different results, both are right

    flt = (float)i;
    printf("%i  %f\n",i,flt);

    flt = itof (i);
    printf("%i  %f\n",i,flt);

    return 0;
}

Nevíte někdo co je tam špatně?

Předem děkuji za všechny reakce.
 

TheOndrap
Pascal › posloupnost - pocet vyskytu…
23. 10. 2013   #182718

promin za ten zdroják :) nejsem zvyklej na syntax pascalu :)

TheOndrap
Pascal › posloupnost - pocet vyskytu…
23. 10. 2013   #182717

udělej si tam ještě jednu proměnnou cetnost_m a potom jednoduše, když se budou rovnat, tak ji inkrementuj

cetnost_m := 0;
.
.
if (x=m)then 
	cetnost_m = cetnost_m + 1; 
end;
if (x>m)then
	m := x;
	cetnost_m = 1;
end;
.
.
C / C++ › dns server parsing
2. 10. 2013   #181885

Ahoj, 

budeš to dělat na WIN nebo Linux? Doporučil bych Linux. Umíš v C zacházet se socketama? Budeš muset otevřít UDP a TCP na portu 53 (nevím jestli budeš koukat na i na hlavičku toho packetu, pokud ano, musíš ho otevřít jako RAW, ten socket) no a potom se musíš kouknout na strukturu DNS protokolu. Pro začátek klidně použij program Wireshark ať vidíš ty DNS dotazy, velmi silnej nástroj na to co budeš dělat je pcap, ten je napsanej v C(mimo jiné) a můžeš ho používat jako knihovnu k zachytávání packetů - http://www.tcpdump.org/sniffex.c 

Předpokládám že budeš chtít fungovat jako DNS server (proxy) a budeš ty dotazy někam přeposílat a odpovědi vracet zpátky uživatelům?? 

Mikrokontroléry › ATMEGA8A a ADC6 a ADC7
25. 6. 2013   #178448

Ano, řekl bych že máš pravdu

Pascal › Zaverecná práce, knihovna gr…
22. 5. 2013   #176436

#4 KIIV
Sem najivně doufal že dnes ještě někdo používá formátování :)

Pascal › Zaverecná práce, knihovna gr…
22. 5. 2013   #176432

Ahoj, Napiš to prosím do pole "vložit zdrojový kód" .. jinak nemám chuť to ani zkoumat, strašně blbě se to čte tefdko

C / C++ › Jak zjistit nejbližší číslo…
17. 12. 2012   #169036

#2 Tom
myslím že optimalizovat by bylo zbytečný, lineární složitost je OK, ne? :)

C / C++ › Algoritmus na nalezení všech…
10. 12. 2012   #168563

Pokud bys chtěl nejkratší cesty, tak je to Dijkstra, případně Flloydův algoritmus. Pokud chceš nalézt všechny tak opravdu do šířky / hloubky

Java › Chybová hláška
6. 12. 2012   #168198

Zkus :

  • udělej si spešl složku
  • nakopíruj do ní ty zdrojáky tvoje
  • ze zdrojáků umaž package
  • javac *.java
  • java soubor

A mělo by to být OK

Java › Chybová hláška
6. 12. 2012   #168179

no kompiluješ to

javac *.java

Java › Chybová hláška
6. 12. 2012   #168169

Heh .. KIV/PPA1? :D

jak to komliluješ?

Eclipse totiž používá jinou kompilaci, než děláš ty. Předpokládám že program ti skompilovat jde ale potom ti hlásí chybu při běhu. Asi ten tvůj main zdroják v classpath nebude mít cestu k tomu DrawingToolu

C / C++ › Práce se soubory - hledání ř…
5. 12. 2012   #168146

k porovnávání řetězců existuje celá řada algoritmů, od složitějších po jednoduchý.

  • Musíš si v první řadě načíst obsah souboru, jestli celý najednou nebo po řádcích
  • Potom musíš ten tvůj "hledaný" porovnávat s tímhle načteným obsahem.
  • Ted záleží na tom v jakém prog. jazyce děláš, využít nějakou fci pro porovnávání řetězců

v nějakým pseudokodu by to bylo asi takhle:

//nacitani ze souboru radek po radku
while( konec_souboru){
	radek = nacti_radek(soubor);
	//strcmp porovnava 2 retezce
	if( strcmp( porovnavany, radka ) == 0 ){
		// v tuto chvili promenna "radek" obsahuje promennou "porovnavany"
	}
}
		
		
C / C++ › Práce se soubory - hledání ř…
5. 12. 2012   #168142

No můžeš to naprogramovat tak, že uživatele vyzveš k tomu, aby ti zadal url souboru, ten otevřeš a následně ho budeš prohledávat.

Promin, ale na takhle obecnou otázku jde dát jenom obecnou odpověď

Java › Cyklus
4. 12. 2012   #168080

#9 zlz
ou yeah 

Java › Cyklus
4. 12. 2012   #168077

 škoda, timhle stylem se nic nenaucis :(

/*cislo je to tvoje "i" neboli ten parametr*/
int cislo = 3;
int rozmerMatice = 2*cislo+1;
/*pruchod matice po radcich*/
for(int i=0; i<rozmerMatice; i++){
	/*pruchod vsech hodnot v radku*/
        for(int j=0; j<rozmerMatice; j++){
        	/*kdyz je prvek na hlavni nebo vedlejsi diagonale*/
                if((i==j)||(i==rozmerMatice-j-1)){
                    System.out.print("Q");
                }else{
                    System.out.print(" ");
                }
        }
        /*odradkuj po pruchodu jednoho radku*/
	System.out.println();
}
Java › Cyklus
4. 12. 2012   #168069

Ahoj,

kdybys to alespon zkusil :(

tak bys asi zjistil, že se jedná o čtvercovou matici rozměru (2*i+1) a jeji hlavní a vedlejší diagonála je zaplněna Q, ostatní jsou mezery .. tohle už by ti mohlo pomoc, ne? :)

Kdyby to i přes to přezevšechno nešlo, dej vědět

Ondra

Java › Posloupnost čísel, lichá čís…
2. 12. 2012   #167980

Ahoj,

no tak si zaveď jinou proměnnou třeba "pocetLichych" a pokazde když uděláš

soucet += cislo;

tak udělej pocetLichych++;  a na konci budeš mít vše co potřebuješ k průměru.

Samozřejmě že pocetLichych musí byt inicializovan na 0

C / C++ › Grafický vzhled
2. 12. 2012   #167978
Java › Tisk čárových kódů
28. 11. 2012   #167794

#7 Aleš
Heh :) souhlas .. na těch stránkách opravdu mají nějakou APInu mno .. uvidíš, nestahoval sem to

Java › Tisk čárových kódů
28. 11. 2012   #167792

#3 Dano
to je přece uplně něco jinýho než chce taky kolega

Java › Tisk čárových kódů
28. 11. 2012   #167791

Jsem si jist že 80% té aplikace napíšeš i bez toho, aniž bys to měl na stole ;)

Java › Tisk čárových kódů
28. 11. 2012   #167772

Ahoj,

pracoval jsem s tim na střední a to byla čtečka která se připojovala do seriové linky, a určitě žádnou API neměla :D Na urovni té seriové linky byla nějakým způsobem popsaná komunikace s čtečkou. A to bylo všechno .. tu kominikaci sem sbíral v Cčku (to je jedno jestli C nebo Java) a potom vyhodnocoval jestli je to např tlustá čára, nebo slabá

Dnešní zařízení který seženeš budou mít všechny nějaký ovladač, který ti zaručí dostatečnou abstrakci nad tím HW a potom záleží hlavně na tom, jaký bude ten ovladač = jak hodně ti usnadní práci s tím zařízením.

Assembler › popis instrukcii
27. 11. 2012   #167752

#6 KIIV
Oh ano, sry :)

Assembler › popis instrukcii
27. 11. 2012   #167750

#4 johnw
Np.

K té druhé části:

200h je adresa paměti, na které se nachází instrukce LDA, jejíž operandem je 101h(neboli 0x101)

= můžeš to chápat tak, že v prváku jste se učili, že procesor má "nějakou" instrukční sadu, ve které jsou operace např LDA, MOV, JMP atd. A tedko řešíš, jak ten který konkrétní procesor implementuje tyhle "makroinstrukce"

Assembler › popis instrukcii
27. 11. 2012   #167748


takže :

PC > AR, 0 > WR, DR > IR - výběr operačního znaku

// obsah PC(programovýČítač) do AR(adresový registr)
// 0 do WR - zápis, Obsah DR(datový) do IR(instrukčníRegistr)
- výsledek je že bude opravdu vybraná instrukce, resp typ instrukce.

- v následujích krocích se načítají operandy

- registr TA(16bit) má "horní" a "dolní" část, ve které budou uloženy operandy(ty jsou 8 bitové)

== tohle celý je provádění tzv mikrooperací, kde procesor jednu makroinstrukci vykonává takhle
 

C / C++ › Poradenie pre vyber sem. pra…
27. 11. 2012   #167732

Jestli při programování narazíš na nějakej problém, klidně napiš, něco vymyslíme :) A označ pls vlákno za vyřešené

C / C++ › Poradenie pre vyber sem. pra…
27. 11. 2012   #167721

určitě bych taky radši hledal determinant.

Na oboje museš muset nastudovat nějakou numerickou metodu na řešení.

Pro kořeny polynomů se využívá metody Bisekce(půlení intervalu), Newtonovy metody, Maehlovy metody a různých dalších modifikací. + záleží taky na tom jestli budeš hledat i komplexní kořeny + jestli je neomezený řád polynomu.

Pro determinant bych asi použil nějakou iterační metodu (Gaussova eliminační, Jaccobiho, atd), matici bych zredukoval na 3x3 a potom použil Crammerovo pravidlo

C / C++ › Přidání hodnot do pole
22. 11. 2012   #167362

#10 ingiraxo
nevím mno .. jako máš pravdu, ale píše postupně.

Takže já sem to pochopil jako postupný plnění pole podle toho kde je místo :)

Uvidíme až/jestli odepíše

C / C++ › Přidání hodnot do pole
22. 11. 2012   #167359

On to pole asi potřebuje plnit postupně do prvního volnýho, ne?

C / C++ › Přidání hodnot do pole
22. 11. 2012   #167357

Dáš hned po prvním přiřazení příkaz break(v tom IF) . Ten udělá to, že se cyklus okamžitě přeruší, což ty potřebuješ

C / C++ › Přidání hodnot do pole
22. 11. 2012   #167338

#3 mx
vitamin tě chápe, on ti jenom dává 2 rady, kde máš chyby a jednu poznámku, co jde udělat líp:

  1. Cyklus ti provede 6 iterací, ty potřebuješ jenom 5 - pole má velikost 5, indexované od 0.
  2. Číselnou hodnotu (float) můžeš porovnávat zase jenom s číslem, ne s "" - řetězcem, tudíž musíš dát == 0.0
  3. (rada) Můžeš použít pole[i] = a/c, abys ušetřil jednu proměnnou - d

Nevím jak jinak to mám napsat(přeformulovat), aby to bylo pochopitelný. Bazinga ;-)

C / C++ › Načítání prvků matice
21. 11. 2012   #167330

#1 losos
Vždyť ty přece víš, kolik těch prvků bude, bude jich n^2.

Předpokládám tedy, že se jedná o čtvercovou matici (jako v 95% školních příkladů)

  • víš řád, můžeš tedy vytvořit proměnnou typu dvourozměnrné pole celých čísel.
  • uděláš bud jeden cyklus (0 až n^2-1) nebo uděláš cyklus (0 až n-1)-řádkový a do něj vnoříš druhý (0 až n-1)-sloupcový a vesele načítáš a ukládáš čisla do pole na pozice [radkovy_index][sloupcovy_index]
  • jak si s tou maticí potom pohraješ už je tvoje věc :)

Java › reference na int;
21. 11. 2012   #167278

1) Ahoj

2) V Javě se předávají primitivní datové typy výlučně hodnotou, odkazem se dá předat pouze objekt.

3) Pokud přesto potřebuješ předat (třeba) INT, musíš ho zabalit do třídy OBJECT a potom poslat tu referenci.

4) Myslím, že se to tu už někde na foru řešilo, zkus zapátrat :)

http://programujte.com/…em-hodnotou/

Java › staticka metoda
19. 11. 2012   #167117

Přesně tak .. je dycky lepší když na to příjdeš sám.

Označ pls vlákno za vyřešené

Java › staticka metoda
19. 11. 2012   #167106

No, tak zkus nějaký ladící výpisy, kam až se tvůj program dostane .. očekával bych že když se ti něco nevypíše, tak se ti program asi zacykluje.

Zkus si po vstupu do každé metody vypsat nějakou hlášku, abys věděl co se ještě provede a co ne.

Pokud používáš nějaký vývojový prostředí, použij Debug mode a stepuj si program krok za kromem

rada: podle mě je chyba v zastavovací podmínce cyklů v metodě soucetCifer.

Podívej se, kdy výsledek dělení bude číslo == 0?

Ondra

C / C++ › lineární seznam - sort
12. 11. 2012   #166525

pro vkládání zdrojového kódu použij pls <? , mnohem líp se nám to potom čte

Assembler › Programovanie
12. 11. 2012   #166524
Java › Výpis indexů pole
11. 11. 2012   #166515

No vidíš ! Jenom taková drobnost .. tu druhou pozici nemusíš ukládat, tu si dycky můžeš dopočítat :)

Označ vlákno za vyřešené

C / C++ › posloupnost
29. 10. 2012   #165509

Nojo, s upřímností nejdál dojdeš :D

No myšlenku máš správnou, dekomponovaný taky OK .. tak kde to vázne?

Java › Program pro fiktivní elektrá…
23. 10. 2012   #165194

Nestuduješ FAV/ ZCU ? Připomíná mi to hodně naše bejvalá zadání :)

C / C++ › Seznam jmen vytvořený polem
23. 10. 2012   #165190

#5 KIIV
jojo, tak jak máš v podpisu :)

C / C++ › Seznam jmen vytvořený polem
23. 10. 2012   #165188

#3 KIIV
Já jsem si toho právě nebyl jist, jestli je to přetížený :(( tak sry.

Ale tak jak tak, možná mu to funguje dobře, ale ten cyklus nestačí projet celým polem

C / C++ › Seznam jmen vytvořený polem
23. 10. 2012   #165183

to je poměrně častá chyba´ .. v C/C++ se řetězce neporovnávají pomocí ==, ale je na to funkce:

int strcmp(const char *s1, const char *s2);

Dál je otázka, proč máš ten cyklus od 0 do 1 ?
A navíc ty podmínky můžeš mít normálně za sebou, nemusíš mít else .. přece když tam budeš mít "Petr Novotný", a "Ondřej Petr", tak bys rád, aby se ti vypsali oba, ne?

Java › načtení Word dokumentu
23. 10. 2012   #165159
C / C++ › Práce s polem - porovnání
22. 10. 2012   #165127

Přihlaš svůj příspěvěk do kategorie "nejhůř popsaný poblém, co kdy kdo popsal a v budoucnu ještě popíše" .. ;)

Rád bych ti poradil, ale absolutně nevím o ti jde

Číslicová technika › Sekvenční obvod - stavový di…
21. 10. 2012   #165068

Jak tam tu hodnotu udržet? tak sou tam hradla, tak snad není potřeba něco držet .. ta hodnota tam prostě bude, dokud jí nezměníš, ne?

Číslicová technika › Sekvenční obvod - stavový di…
21. 10. 2012   #165036

#1 mike.hudek

Co znamená Moore? -> výstup nezáleží na současném vstupu

No normálně si to nakresli na papír, prvni stav je detekce 1 .. při detekci 0 se vrátíš do výchozího bodu, při detekci 1 se posuneš na stav 11. A zase .. při detekci 1 seš na stavu 111, při detekci 0 na výchozí, až dojdeš do stavu 1110 nastavíš na výstup 0, ve stavu 11100 nastavuješ 1.

OK?

Pascal › kartezsky soucin dvou mnozin…
17. 10. 2012   #164917

No, ty hlavně ten interval podle mě musíš diskretizovat, tzn tu X-osu, Y-osu musíš rozdělít na 37 resp 73 ekvidistatních bodů

x = {-1, -0,98.., - 0,97.., x, x, x, ....atd... } -- y = {to uz víš}

a z téhle množiny budeš volit souřadnce pro dosazování.. => Kartézský součin nad těmy množinami bude generovat tu síť (souřadnicovou)

Tenhle algo je to co popsal KIIV .. měl jsem to už napsaný, když jsem si všimnul že to napsal :D

For i:=0 to 37 do 
	begin  
	For j:=0 to 73 do 
		begin
                x:=-1+i*(1/37);
                y:=-1+j*(1/73)
  		if((67039*power(x,12)-1939938*power(x,10)
			-184756*power(y,10)...atd...)>0) then		
			begin
			write("+");
			end;
		else write("-") 	
		end;
	writeln;
	end;
end; 

Omlouvám se za můj pascal, dělal jsem v něm naposledy na střední, což je už nějakej tejden, ale myslím že by tohle mohlo běžet .. s tím že power je v knihovně Math (asi)

Java › Barvy v konzoly
17. 10. 2012   #164841
Java › Problem s cyklom
17. 10. 2012   #164838

#3 ingiraxo
Si chtěl nacvičit převádění znaků z pole charů -> int :)

Mě spíš zaráží, že tohle jsem chyba, která se dá odladid za 5 minut, a z toho si 4 minuty dělám kafe :)

Java › Metody
17. 10. 2012   #164835

:D když si to čtu ted, tak ta moje definice přetížený metody je fakt ubohá :D dík za opravu

Java › Problem s cyklom
17. 10. 2012   #164827

Ahoj,

tvůj "problém" jde řešit dvěma způsoby:

  1. Předělej ten System.in.read() a čti to BufferedReader (viz dole)
  2. Když budeš trvat na svém řešení, musíš si inicializovat to pole bytů třeba
byte[] pole = new byte[MAX_DELKA];

A jenom bych poradil, když si tam dolu dáš takovouhle "obecnou" vyjímku a přepíšeš si ten stackTrace, tak nevíš, co ti tam padá! .. když ladíš appku, napiš si tu chybovou hlášku a za ní pomocí e.printStackTrace() si nech vypsat tu chybu .. a ono by ti to hned napsalo: java.lang.NullPointerException ,, a přesně na tom řádku je tvůj read :)

BufferedReader

BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
String s = bufferRead.readLine(); // čte se takhle

Ahoj, Ondra

Java › Metody
17. 10. 2012   #164826

Co je na tom nejasného?

Přepíšeš -> bude dělat to co cheš ty v té dědící třídě, k původní "zděděné" metodě se dostaneš pomocí super.instructionOne();

@Override
public String instructionOne() {
	return "("+super.instructionOne()+")";
}

Přetěžování -> metody se musí lišit, mohou mít stejný název, ale musí se lišit počtem/typy param, případně jejich návratové hodnoty musí být jiných typů atd.

Proměnná délka parametrů -> String...param . Chová se to jako pole

    public String instructionTwo(int param){
        String retVal="";
        for (int i=0; i<param; i++){
            retVal += super.instructionTwo();
        }
        return retVal;
    }
    
    public String instructionTwo(String...param){
        String retVal = "";
        for(int i=0; i<param.length; i++){
            retVal += param[i];           
        }
        return retVal;
    }

Nevím jesti je to správně, přišel jsem z hospody a neměl co dělat, ale myslím že by to mohlo být OK .. možná že jsou nějaký lpší metody pro práci se String než to moje spojování, ale snad by to mohlo fungovat :)

C / C++ › Funkce - program
16. 10. 2012   #164785

no .. 

int stredni_hodnota (int _cislo1, int _cislo2, int _cislo3){

int str_hodnota;

// tady bych to asi dal do pole a seradil, nebo udelal pres podminky a ulozil do promenne

// ale mozna by to slo udelat i nejak elegantneji
return str_hodnota;

}

S tím, že po získání 3 čísel z klávesnice zavoláš tuhle funkci a její návratová hodnota bude střední číslo

printf("Stredni hodnota je: %i", stredni_hodnota(c1, c2, c3));
Java › ProgressBar
16. 10. 2012   #164765

No .. normálně v mail si vytvoříš Form, do něj vložíš jProgressBar, nastavíš rozměry a zobrazíš. A spustíš vlákno (napíšeš třídu s vláknem), které může mít třeba tenhle kod:

class Vlakno implements Runnable{
    int i;
    jProgressBar pBar;
    
    Vlakno(final jProgressBar param){
        super();
        this.pBar = param;
    }
    
    @Override
    public void run() {
        for(i=0; i<101; i++){
            pBar.setValue(i);
            try {
                Thread.sleep(100);
            } catch (InterruptedException ex) {
                System.out.printf("!! Systemova chyba , vlakno nejde uspat!!");
            }
        }
    }

jako param si předáš ten jProgressBar, jehož nastavení potom ovlivňuješ .. když to nebudeš stále chápat, napiš a pošlu ti to celý .. ae snaž se to udělat sám

Java › ProgressBar
15. 10. 2012   #164726

Přesně tak .. chápej to tak, že aplikace standartně běží v 1 vlákně a když děláš aplikaci s GUI, tak to jedno vlákno se stará o vykreslování prvků ( zakřížkování CheckBoxu, když klikneš, kliknutí na tlačítko, kreslení progressBar) a ty když tohle vlákno zatížíš nějakým výpočtem (cyklem ve kterým inkrementuješ ten PBar) tak to vlákno nemůže dělat 2 věci najdnou.

  • 1 - hlavní vlákno, ve kterém vytvoříš ProgBar
  • 2 - vlákno ve kterém spustíš výpočet a postupně budeš ten PBar updatovat

To je jako kdybys lil vodu do sklenice a přitom si chtěl říkat kolik tam je vody .. a přitom mohl naráz dělat jenom jednu věc .. to nejde, na to potřebuješ 2 lidi .. 1 co leje a 1 co povídá :)

Offtopic › FrontEnd pro databázi
8. 10. 2012   #164323

Ahoj,

mám dotaz. dělám parser pro jeden TACACS+, resp jeho logy. Tzn že ten log budu parsovat do nějaké struktury (asi XML) a potom pro to potřebuju nějaký front-end.

Tím že v HTML "udělám co potřebuju" a tím to končí se zajímám o možnost, jestli neexistuje nějaký jednoduchý framework pomocí něhož by toto šlo udělat. S tím že ukáládání do XML není nezbytně nutné

dík za nápady

hostk
Offtopic › Softwarová firma
1. 10. 2012   #163995

Myslím(vím) že to není vázaná živnost, takže založit si živnostenský list, nakoupit software a rozjet to. A samozřejmě taky něco umět :)

hostk
C / C++ › pseudonáhodný generátor
26. 9. 2012   #163766

#4 ondra.holub
Dík, to mě nenapadlo :) přesně tak, jedná se o paralelní generování a objevovala se mi tam podobná čísla potom

hostk
C / C++ › pseudonáhodný generátor
25. 9. 2012   #163732

Ahoj, jak nejlépe v ANSI C inicializovat generátor při rychlém generování? Stovky generací za sekundu? Dík

C / C++ › pohybování se po předmětu
25. 9. 2012   #163723

Tak to seš dobrej, jestli tohle děláš v 8 třídě :)

C / C++ › Tlačítko C
6. 6. 2012   #158939

hele ... je to asi takhle .. je procesor ... ten má v sobě nějakej čítač (stopky) a ty mu nastavíš, do kolika má stopovat to se děje v timer_setup(). Od té chvíle ať se děje co se děje, jakmile stopky napočítají do stanovené hodnoty, vyvolá se přerušení => přerušení musí být obslouženo nějakým kusem kodu, v tvém případě ISR (SIG_OVERFLOW0).

To znamená, že pokud v proceduře ISR (SIG_OVERFLOW0) budeš blikat diodou, tak vždycky když stopky napočítají->vyvolají ISR (SIG_OVERFLOW0), blikne se.

V tvém případě definuješ 2 pole tringletable[] a sinetable[], v obojích budeš mít hodnoty těch funkcíí (to už máš)

a tedko, pokaždé když stopky napočítají -> zavolá se ISR (SIG_OVERFLOW0) se na PORB vypíše (v závislosti na proměnné ŘÍDÍCÍ) bud sinetable nebo triangletable.

TCNT0 znovu zapne stopky a jede se znova, s tím že se posune i=index v poli .. a ta kontrola to víš, aby si nepřetekl velikost pole

a to co ty musíš vymyslet, je reakce na to tlačítko. Protože stejně jako stopky vyvolají událost, na kterou se reaguje ISR (SIG_OVERFLOW0), tak tlačítko vyvolá událost, na kterou je potřeba zareagovat ISR (něco, to musíš někde mít, ste se museli učit) ... a v týhle funkci budeš dokola měnit (switchovat) proměnou řídící z 0 -> 1

ufffffff ... chápeš??

C / C++ › Sinusovej průběh
6. 6. 2012   #158937
C / C++ › Tlačítko C
6. 6. 2012   #158936

ty#15 Fíkus
tohle už vypadá že to má hlavu a patu .. ioinit() nastavuje směr portů, port B je pro tebe nastaven na výstup

arraySetup je jasný.

timer0_setup(); nastaví časovač na vzestupný čítání, s periodou (nevím jakou)

sei(); nevidím

--------

program prostě nastaví časovač procesoru na čítání (třeba do 1000, nevím, musíš zjistit) .. pokaždý když je načítáno do týhle hodnoty, tak se procesor vzbudí a vykoná obsluhu přerušení -> skočí do ISR (SIG_OVERFLOW0) ,, a tam se vykoná obslužný kód.

Tohle poběží, ale bez jakýkoli reakce na tlačítko ,, ty musíš zjistit, jaký přerušení vyvolá stisknutí tlačíka ISR(něco) !!

a potom bych viděl třeba tohle

ISR (PRERUSENI_TLACITKA-!!!musis zjistit!!!){
	//stiskne se tlacitko, zmeni se 0->1, 1->0
	if(ridici == 0) ridici++;
	if(ridici == 1) ridici--;
}

a potom přepíšeš tu rutinu na 

ISR (SIG_OVERFLOW0)	// Counter0 Interrupt Service
{
	if (ridici==0)	PORTB = (sintable[i++]);
	if (ridici==1)  PORTB = (triangletable[i++]);
	TCNT0 = 175;	
	if (i==32){
		i=0;
	}							
}

s tím že teda ještě do main musíš přidat funkci ve který inicializuješ to pole triangletable[] .. uplně stejně jako je sinetable[].

C / C++ › Tlačítko C
6. 6. 2012   #158931

Aha, to už je rozumější .. ale potom by trojuhelník a sinus měl mít stejný hodnoty, alespoň teda co se týče rozsahu 0-255. a ty máš u sinu celý čísla a u trojuhelníku desetinný čísla a už vůbec ne záporný.

Podle toho co říkáš ty máš 8bitový výstup

C / C++ › Tlačítko C
6. 6. 2012   #158929

dej si nahoru do programu k sobě # define a definici proměnných

Ty hodnoty funkcí máš určite dobře? Já teda nejsem žádnej matematik, ale sinus by měl bejt <-1; 1> .. ale možná to máš nějak přenásobený .. ale i tak bys tam měl mít nějaký jiný hodnoty

ten trojuelník je taky nějakej podivnej .. jaks to počítal?

C / C++ › Tlačítko C
6. 6. 2012   #158928

Promin, ale mě ten program nedává absolutně smysl. Jsem schopnej pochopit že ty funkce sinus a trojuhelnik by měly generovat vystup, potom si ale oprav:

int sinus()
{
while(1){
  for(x=0;x<=max;x++){	
	PORT = sinus[x]//doplněno 	
  }
}
int trojuhelnik()
{
while(1){
  for(x=0;x<=max;x++){
    PORT = trojuhelnik[x]; // doplněno
  }

by mělo v nekonečnym cyklu na výstup posílat hodnoty z toho pole, potom ale k tomu poli musíš přistupovat korektně přes trojuhelnik[x] .. nikde nemáš definovanou proměnnou max, takže předpokládám že je to velikost pole trojuhelník.

Dál, while(1) je nekonečnej cyklus, to asi nebude uplně OK.

#define PORT PORTB je direktiva preprocesoru, takže každý výskyt znaků "PORT" se nahradí "PORTB" .. ty někde používáš PORT a někde PORTB . .

C / C++ › Tlačítko C
6. 6. 2012   #158923

takovej nepodstatnej detail :D A já jsem naivně předpokládal, že když je to v sekci C/C++ že to bude něco v Cčku :D

Ty programy na generování průběhů už máš? Pokud ano, tak musíš v procesoru povolit přerušovací systém a napsat obslužnou rutinu pro přerušení vyvolaný stiskem tlačítka. Zkus se trošku rozepsat .  .

C / C++ › Tlačítko C
6. 6. 2012   #158916

A používáš na to jakou grafickou knihovnu?? QTčka?

C / C++ › "realokace" paměti
6. 6. 2012   #158908

Pokud na to použiješ nějaký program na správu paměti (v Cčku/Linux je to valgrind). Je to tak že vytvoříš memory leak / ztratíš referenci na jednou alokovanou pamět a i kdyby si jí chtěl někdy v budoucnu uvolnit, tak se ti to nepovede.

http://www.cprogramming.com/…algrind.html

Všechno co říkal JoDiK je pravda :)

Java › Vysvětlení části programu
5. 6. 2012   #158888

to je takový dost obecný :)

já to chápu tak že inpRead bude instance nějakého readeru (streamového, socketu . .) a v každý iteraci se snažíš z toho readeru vybrat hodnotu, a reader hodnotou -1 signalizuje že je konec čtení.

Java, C, C++ atd umožnují i v podmínkovém výrazu provédst přiřazení, takže v "end" bude poslední přečtená hodnota, případně -1. podmínka toho while bude teda while (inpRead.read() != -1) {..} a to co ten reader čte je uloženo v proměnné "end".

No teda, je to kostrbatý vysvětlení, ale snad chápeš :)

C / C++ › Výpis kladných a záporných z…
5. 6. 2012   #158886

to je pravda, souhlasím !! i s tím že učitel by asi nejásal, neb si vůbec nevytvořil matici, ikdyž si jí jakoby vypsal :)

C / C++ › Výpis kladných a záporných z…
5. 6. 2012   #158877

   

#define ROZSAH 10
#define RADKU 4
#define SLOUPCU 4

int matice[4][4];
int radek, sloupec;
//nagenerovani a vypsani matice
for (radek = 0; radek<RADKU; radek++){
	for(sloupec = 0; sloupec<SLOUPCU; sloupec++){
		matice[radek][sloupec] = round(random()*ROZSAH); 
		//podle toho co ten radnom vrati <0,1>
		printf("%i ",matice[radek][sloupec]);
	}
	printf("\n");
}
//nalezeni kladnych a zapornych prvku
int kladnych = 0;
int zapornych = 0;
//řadek po řádku matice
for (radek = 0; radek<RADKU; radek++){
	//prolezení jednotlivého řádku prvek po prvku
	for (sloupec = 0; sloupec<SLOUPCU; sloupec++)
		//když je menší 0
		if(matice[radek][sloupec]<0){
			zapornych++;
		}
		//když je větší než 0	
                if(matice[radek][sloupec]>0){
			kladnych++;
		}
	}
}
printf("kladnych prvku v matici : %i\n", kladnych);
printf("zapornych prvku v matici : %i\n", zapornych);

tohle je nejjednodušší /podle mě/ algoritmus v pseudokodu (Cčko :P) přepiš si to do čeho potřebuješ .. zejména ten random se musí upravit, jinak by to mohlo bejt v Cčku OK.

C / C++ › Regulace otáček krokového mo…
4. 6. 2012   #158861

Jako program nemám, zkus počkat jestli někdo nenapíše, ale když napíšeš typ toho čipu, tak můžeš zjistit, resp to budeš vedět ty, na jakej kanál toho AD převodníku, potom se musí nakonfigurovat ten AD převodník, musí se nastavit referenční napětí a typ vzorkování.

Minulý měsíc jsem to dělal pro MSP430 (A/D vzorkování) a myslím že by to takový rozdíl neměl být

C / C++ › Regulace otáček krokového mo…
4. 6. 2012   #158859

No to ses moc nerozepsal :) Ten potenciometr musíš něčím snímat, na to už máš hotový nějaký přípravek? Bude to A/D převodníkem? Nebo je ten potenciometr už na nějaké vývojové desce?

C / C++ › Console-pravidelné přepisová…
4. 6. 2012   #158853

Nevím, snad ti poradí někdo znalejší .. Boost je přenositelná knihovna http://www.boost.org/…/thread.html tak zkus. Prostě podle mě to pro tebe bude nejschůdnější cesta .. vytvoříš vlákno, který změní čas, potom se na 1s uspí a znova ho aktualizuje .. a tvůj program si může mezitím řešit komunikaci s uživaatelem (třeba :))

Java › Java / class
4. 6. 2012   #158845

#13 liborb
Mohl si být šéfredaktor :)

C / C++ › Console-pravidelné přepisová…
4. 6. 2012   #158844

já si nevšimnul že je to c++ .. sry .. v céčku na to používám knihovnu pthread. Koukni na google, není to složitý .. jedné se o vytvoření vlákna, kterému se předá funkce, kterou má  vykonávat. to je v Cčku, jak je to v C++ uplně nevím :/ jak říkám, google.

Matematika › Matematika - slovní úloha
4. 6. 2012   #158836

1) je to Kosinová věta :)

2) Vyšlo mi to stejně jako KIIV .. u toho viditelného bodu jsem odečetl rozdíl těch dvou úhlů, potom máš stranu a 2 uhly a potom jsem podle sinové věty dopočetl délku přepony jednoho z trojúhelníků. Je to srozumitelný?

Assembler › Jo já vím
4. 6. 2012   #158835

Hlavně mi vysvětli tu logiku, jestli si to lepil do každého okruhu (Java, C, assembler) nebo jenom sem? V prvním případě to potřebuješ asi fakt rychle, v druhém případě seš fakt pako (mírně řečeno).

C / C++ › Console-pravidelné přepisová…
4. 6. 2012   #158833

asi se nevyhneš vláknům :)

Ondrap
Java › Java / class
4. 6. 2012   #158825

#10 tečka
co to pleteš? Javac se přece dává na .java soubory a java se dává na už zkompilované v opcodu - .class ;) Java SPUSTÍ, Javac KOMPILUJE

Ondrap
Java › Java / class
4. 6. 2012   #158824

#9 liborb
A mít Herouta na přednášky na ZČU je ještě o trošičku lepší :)

Ondrap
Assembler › Seminární práce Assembler
4. 6. 2012   #158816

bydlím na máchovce 16, pokoj 17, mail "ondrap" normálně na students

Ondrap
C / C++ › Regulace otáček krokového mo…
4. 6. 2012   #158810

To je takový dost obecný .. čím budeš snímat ten potenciometr? budeš to dělat přes seriovou linku / USB? rozepiš se trochen

Ondrap
Assembler › Seminární práce Assembler
4. 6. 2012   #158809

hele, tedko ve čtvrtek dělám státnice, tak ten víkend potom se na to mrknu :)

paja
Java › text - regulární výraz
15. 4. 2008   #71394

Zdravim.
Zpracovavam texty, ve kterych jsou casto texty psane takovymto zpusobem:

Z:D:R:A:V:I:M

Dokazal by nekdo vymyslet regularni vyraz,ktery vy odstranil dvojtecky,ktere jsou mezi pismeny. Aby to odstranilo dvojtecky ze slova ktere ma alespon 3 znamky. jako napriklad C:A:J

Dekuji za napady a rady

paja
Java › volání stjene funkce 2 progr…
10. 4. 2008   #70902

Zdravim.
Mam 2 classy a kazdy obsahuje funkci main. Tyto mainy by meli volatat stejnou funkci. Nechci aby tato funkce byla zbytecne 2x psana v kazdem classu a proto bych chtel udelat trebas dalsi class, ve ketrem by byla tato funkce a programy by si ji volali,ale bohuzel se mi to nedari zprovoznit. Nevedel by nekdo jak na to? Dekuji za napady a rady

Anonymní uživatel
Java › java - čení emailů na disku
28. 3. 2008   #69991

To jboss : A jak na to tedy? Diky za napady a rady. Uz jsem z toho fakt na prasky

paja
Java › java - čení emailů na disku
27. 3. 2008   #69978

To jboss : A dokazl by nekdo napsat takovy kus kode ktery by to rozparsoval? Bohuzel regularni vyrazy moc neovladam :(

paja
Java › java - čení emailů na disku
27. 3. 2008   #69959

Zdravim.
Mam na disku nekolik tisic emailu,ktere bych chtel zpracovat.Jsou ve tvaru:

Message-ID: <4046719.1075855815569.JavaMail.evans@thyme>
Date: Thu, 2 Mar 2000 22:55:00 -0800 (PST)
From:bob.klein@enron.com
To:brenda.herod@enron.com
Subject: Re: Interim Operational, Accounting and Tax Services porvided by ENA
Cc:curry@texaco.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Bcc:curry@texaco.com
X-From: Bob Klein
X-To: Brenda F Herod
X-cc:
X-bcc:
X-Origin: Beck-S
X-FileName: sbeck.nsf

I agree with the section written for settlements. I would very much like to
be included in your meeting.

Thanks,

Bob

Enron North America Corp.

The attached document is draft 4 of the Interim services ENA will provide to
Bridgeline. Please review and provide any comments ASAP as we are working
towards a FINAL version.

I will be coordinating a meeting for next week to review these services and
provide a status. If you are interested in attending, please let me know.

Thanks,

Brenda
713-853-5778



A chtel bych z nich ziskat predmet, a telo prispevku.

Pokousel jsem se o to takhle:

import java.io.*;
import java.util.*;
import javax.mail.*;

public class cti {

public static void main(String [] args) throws Exception {
String dir = "emaily";

try {
File Dir = new File(dir);
File[] DirList = Dir.listFiles();

for (int i = 0; i < DirList.length; i++) {
BufferedReader bfr = new BufferedReader (new FileReader(DirList[i]));
Mail m = new Mail(new FileInputStream(DirList[i]));
System.out.println("SUUBJECT:" + m.getSubject() );

bfr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

ale bohuzel v radku:
Mail m = new Mail(new FileInputStream(DirList[i]));
podrthle Eclipse cervene obe slova Mail a hlasi tuto chybu:

Multiple markers at this line
-Mail cannot be resolved to a type
-Mail cannot be resilved to a type

Nevedel by nekdo co delam spatne,nebo jak na to? Diky za napady a rady

motorcb
Java › vhodna struktura
10. 3. 2008   #68364

Zdravim.
Chtel bych si naprogramovat jednoduchy vypis nejlepsich strelcu a nahravacu v nasi hokejove lize. Predstavoval bych ze si udelam objekt hrac, ve kterem bude jmeno,cislo_dresu,klub,golu,asistenci
to bych zvladnul,ale pak nevim do jake struktury tyto hrace ulozim aby se v nich dobre nechalo vyhledavat a radit je podle vstrelenych branek,asictenci.
Poradil by nekdo? Predem dekuji

 

 

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