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

Anonymní profil Jan – Programujte.comAnonymní profil Jan – Programujte.com

 

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

Jan
C / C++ › Kalkulačka v C s nejednoznač…
28. 3. 2016   #209486

 Tady je má dosavadní práce, funguje to bez problému; teď bych k tomu potřeboval implementovat i mocninu a odmocninu...

if(scanf("%f%c%f",&x,&oper,&y)==3)
    		  {
        	  switch(oper)
        	  {
                case '+': printf("%f", x+y);
                break;
                case '-': printf("%f", x-y);
                break;
                case '*': printf("%f", x*y);
                break;
                case '/':
				if(y==0)
				{
				  printf("Nelze dělit nulou.\n");
				}
				else
				{
				  printf("%f", x/y);
				}
                break;
                default: printf("Zadal jsi spatny operator.\n");
        	  }
    		  }
    		  else
    		  {
        	    printf("\nZadal jsi priklad ve spatnem formatu.\n");
    		  }
Jan
C / C++ › Kalkulačka v C s nejednoznač…
28. 3. 2016   #209485

Ondřeji děkuji za reakci. Zkoušel jsem všechno možné, ale stále mě nenapadlo řešení, které by fungovalo. Byl byste tak hodný a zkusil mě trošku postrčit? Nevím jakou funkci použít, která rozpozná text "moc/odm" od čísel tak, abych s tím mohl dále pracovat.

Jan
C / C++ › Kalkulačka v C s nejednoznač…
26. 3. 2016   #209450

Dobrý den,

jsem začátečním v C a řeším problém, jakým způsobem zapsat scanf vstupu, který není jednoznačně určen, co má očekávat. Píšu kalkulačku, kde uživatel zadá pro + - * / příklad ve formátu 53+6 a vyhodí mu to výsledek. Toto jsem zapsal scanf("%f%c%f", &num1,&oper,&num2) a funguje to. Problém nastává při odmocnině i mocnině (vždy druhá moc. i odm.) - mým úkolem je po zadání příkladu ve formátu odm 16 nebo moc 4 vyhodit výsledek. Mocnina i odmocnina bohužel musí zůstat v tomto formátu, jde o školní práci.

Jakým způsobem upravit scanf, abych pokryl obě dvě možnosti najednou?

Děkuji,

Jan

Zdendii
PHP › mysqli - nenajde žádný výsle…
17. 3. 2016   #209336

tak dik :D

Lenny
C / C++ › Rozbor dat z binárního proudu
7. 8. 2014   #192725

#27 KIIV
Tak nevim, ted to mam takhle:

typedef struct struktura{  uint32_t infoblok; ...
.
.
.
unsigned char * array = (unsigned char *) &ramec.infoblok;
array[0] = 0xAA;
array[1] = 0xD8;
array[2] = 0x55;
array[3] = 0x00;
array[4] = 0x00;


ramec.infoblok = (((array[0] & 0xFFFFFFFF) << 24) | ((array[1] & 0xFFFFFF) << 16) | ((array[2] & 0xFFFF) << 8) | array[3]);

Ale když nechám vypsat ramec.infoblok, tak se mi zobrazí -665518080, což binárně tozhodně není to, co má být...

Lenny
C / C++ › Rozbor dat z binárního proudu
7. 8. 2014   #192721

No já mám takhle udělanou celou tu strukturu, např.

unsigned int info1 : 32

unsigned int info2 : 1

unsigned int info3 : 7

Je to tak dle velikosti infoblokuv bitech. Mám chápat tu alternativu s uint jako:

uint32_t info; // ale pokud to mám chápat jako datový typ, tak ho C nezná..

Lenny
C / C++ › Rozbor dat z binárního proudu
7. 8. 2014   #192707

#23 KIIV
Chápu tedy správně, že to má vypadat takhle?

unsigned char * array = (unsigned char *) & ramec.infoblok_3;

array[0] = 0xAA;
array[1] = 0xD8;
array[2] = 0x55;
array[3] = 0x00;
array[4] = 0x00;

Při kompilaci mi to ale hází error - cannot take address of bit-field 'infoblok_3'

Jinak jak je myšlen ten problém s byteorderem? Asi jsem to nepochopil.

Lenny
C / C++ › Rozbor dat z binárního proudu
7. 8. 2014   #192704

#21 KIIV
Zkusil jsem použít to ultimátní řešení, ale program ten zápis asi nevstřebá - při spuštění spadne (použil jsem přímo ten zdroják).

Chápu správně, že tim jenom přetypuju strukturu na unsigned char (jedná se jinak o unsigned int info : 32)?

Lenny
C / C++ › Rozbor dat z binárního proudu
7. 8. 2014   #192699

#19 Lenny
Tak zachycování hlavičky už mám, ale vzhledem k chybným výpisum infobloků jsem zjistil, že mám chybu u jedné mé operace (zdroják níže) s bitovým posunem a součinem. Potřebuji sloučit více bitů. To co používám níže funguje jen na některé bitové posloupnosti.. což vůbec nechápu.. na papíře mi to přitom "funguje"

unsigned char array [4];

array[0] = 0xD8;
array[1] = 0x55;
array[2] = 0xA1;
array[3] = 0xB2;

struct = (((pole[0] & 0xFFFFFFFF) << 24) | ((pole[1] & 0xFFFFFF) << 16) | ((pole[2] & 0xFFFF) << 8) | pole[3]);

Zjednodušeně: Potřebuji aby v struct bylo D855A1B2, tzn. 11011000 00110111 10100001 10110010

Děkuji za případné rady.

Lenny
C / C++ › Rozbor dat z binárního proudu
6. 8. 2014   #192694

#18 hlucheucho
Jasný, chápu.

Tak to rozdělení do infobloků mi už funguje- děkuji. Teď ale řeším další problém.

Otevřu soubor a všechen binární proud překopíruju do proměnné buffer. Z ní pak umím pro první rámec provést rozdělení do infobloků. Ovšem já takhle potřebuju projet všechny rámce (přičemž ale vím, že rámce na sebe nemusí hned navazovat). Tzn. potřebuji aby mi nějaký cyklus vždy zachytil hlavičku rámce (0x9B). Cyklus je mi jasný, ale nevím, jak udělat to zachytávání?

Lenny
C / C++ › Rozbor dat z binárního proudu
6. 8. 2014   #192690

#15 hlucheucho
Získání těch prvních 7 bitů chápu.

struct->infoblock_1 = buffer[1] >> 1;


Ale získání toho 1 bitu prostřednictvím součinu s konstantou 0x01 nemůžu pochopit. Když např. 1001 & 1 = 1001, tzn. získám stejný výsledek... vím že je to asi myšleno jinak, ale nemůžu tomu přijít na kloub..

Lenny
C / C++ › Rozbor dat z binárního proudu
6. 8. 2014   #192680

#13 JoDiK
Tak mám napsáno otevření binárního proudu, uložení do bufferu a zavření. Tzn. mám nějaký:

char * buffer;

Teď bych tedy potřeboval rozebrat ty jednotlivé infobity. Buffer chápu, že obsahuje nějaký bity 011011... tzn. nejdříve posunu do leva o 8, čímž přeskočím tu hlavičku. Další posloupnost bitů budu ukládat do zvláštích polí (či struktury). Problém je, že na char nemůžu použít bitový posuny.

jak mám chápat to pole bajtů? To je přímo datový typ v C?

Lenny
C / C++ › Rozbor dat z binárního proudu
5. 8. 2014   #192653

#10 JoDiK
Ano, délku dat reprezentuje jeden z infobloků, přičemž samotná data jsou pak v bytech.

Jinak děkuji za radu, teoreticky to chápu. Prakticky však nevím jak zrealizovat to přečtení hlavičky. Resp. jak dostat nějakou konkrétní hodnotu, od které bych se již mohl posouvat přes jednotlivé infobloky (prostřednictvím bitových operací). Chápu správně, že budu muset použít konstrukci s fseek?

Lenny
C / C++ › Rozbor dat z binárního proudu
5. 8. 2014   #192651

Znova se omlouvám, ty bity u bloků jsem psal jen orientačně. Nevěděl jsem, že to má pro obecný řešení nějakou váhu. Takže ještě jednou a teď už přesně dle skutečnosti:

Připojen obrázek.


Takže dělitelné osmi to je.

Lenny
C / C++ › Rozbor dat z binárního proudu
5. 8. 2014   #192649

Moc se omlouvám, má tam být 8 bitů. Špatně jsem se podíval.

Co řeším za protokol? - moc nerozumím otázce... prostě chci z binárního proudu "dešifrovat" informace a vypsat je na obrazovku

Lenny
C / C++ › Rozbor dat z binárního proudu
5. 8. 2014   #192646

#4 JoDiK
Mám binární proud, v němž jsou obsaženy jednotlivé rámce (ale např. rámec_1 nemusí být hned navázán rámcem_2). Každý tento rámec má pak vždy stejnou strukturu (předchozí obrázek). Prvních pět bitů reprezentuje tzv. identifikátor. Ten slouží k rozpoznání počátku rámce a má trvalý byte 0x9B. Následuje dalších 9 bitů atd (opět každý tento blok bitů reprezentuje nějakou věc).

Abych odpověděl na otázku, zda je velikost rámce konstantní - ne není. Ve skutečnosti vypadá rámec takhle:

Připojen obrázek.


Tzn. vzhledem k poslednímu bloku v rámci DATA, není velikost celého rámce předem známá.

Lenny
C / C++ › Rozbor dat z binárního proudu
5. 8. 2014   #192633

Děkuji za radu.

Bitový posun a součin chápu, ale nevím, jak zprostředkovat to čtení po bytech. Resp. čtení tak, abych vždy přečetl jen jeden rámec, pak druhý atd, dle té signalizace počátku 0x9B.

Lenny
C / C++ › Rozbor dat z binárního proudu
5. 8. 2014   #192619

Ahoj,

prosím o radu, jak vyřešit následující problém. Mám soubor, který otevřu pomocí fopen a chci přečíst data z binárního proudu. V "proudu" jsou pak obsaženy rámce, které mají strukturu jako na obrázku. Tzn. rámec je rozdělen na jednotlivé bity, přičemž počáteční byte rámce je vždy 0x9B (tzn. velikost 5 bitů).

Připojen obrázek.

Potřeboval bych data z rámců odfiltrovat, abych je následně mohl ukládat do nějaké struktury (a následně i zobrazit jejich číselnou podobu).

Předem děkuji za jakoukoliv pomoc.

anonym
OS - GNU / Linux › Preemptivní multitasking
9. 4. 2014   #189106

Ahoj,

nemůžu nikde dohledat, zda operační systémy Android a Firefox OS obsahují preemptivní multitasking nebo kooperativní multitasking. Logicky bych řekl, že se jedná o preemptivní, protože oba systémy jsou postaveny na Linuxu.

Jaký je Váš názor? Děkuji

 

 

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