Diskuze: C zpětný výpis
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 18 zpráv z 18.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Vzhledem k tomu, že množina je neuspořádaná skupina prvků, tak v množině žádný první ani poslední prvek není.
Co se týká toho tvého kódu, tak printf() dej až za rekurzivní volání funkce vypis().
Abych nezakládal nové téma, dostali jsme za úkol práci s množinami v bitových polích a vůbec si s tím nevím rady... Našel by se tu někdo, kdo by mě nasměroval jak s tím pracovat, dostali jsme i předpřipravený kód.. http://www.itnetwork.cz/dev-lighter/369
Předem říkám, že nechci abyste mi to naprogramovali, jde mi jen o vysvětlení jak to pracuje a jak přistupovat k jednotlivým prvkům v poli...
So štruktúrami vieš pracovať?
To bude asi v tomto:
A.pocet = 3 * sizeof(int)* 8;
To *8 s tým bude súvisieť.
/* vytvoreni mnoziny A */
A.prvky = (int *)malloc(3 * sizeof(int));
A.prvky[0] = 43;
A.prvky[1] = 55;
A.prvky[2] = 42351;
A.pocet = 3 * sizeof(int)* 8;
V poli sú 3 prvky, ale počet intov je 3 * 8.
3 prvky po 8 bitech ?... já abych se přiznal, c-čko nemám rád, ale máme ho bohužel jako povinný předmět
pohrál jsem si s tím sjednocením, ale vypisuje to nějak moc čísel
mnozina sjednoceni(mnozina A, mnozina B)
{
mnozina X;
long maska;
int index;
int i, j;
int mez_i;
index = 0;
/* vypocet meze cyklu */
mez_i = (A.pocet + B.pocet) / (sizeof(int)* 8) + 1;
/* cyklus pres cisla typu int */
for (i = 0; i < mez_i; i++) {
/* vypocet meze cyklu */
int mez_j = (i < mez_i - 1) ? sizeof(int)* 8 : ((A.pocet + B.pocet) % (sizeof(int)* 8));
/* posun masky na zacatek */
maska = 1;
/* cyklus pres jednotlive bity */
for (j = 0; j < mez_j; j++) {
/* pokud je prvek v mnozine - bit 1 pod maskou,
* tak vypiseme odpovidajici index
*/
if (A.prvky[i] & maska || B.prvky[i] & maska)
printf("%i, ", index);
maska *= 2; /* posun masky */
index++; /* posun indexu */
}
}
}
Pro pochopeni musis znat reprezentaci cisel v binarni soustave a zakladni operace - & | (and, or) apod.
Prunik je takovy prvek, ktery obsahuji obe mnoziny - tady to bude jeden
cyklus, kde vysledkem X[i] bude vysledek operace
A[i] & B[i].
Rozdil A-B pak budou vsechny prvky mnoziny A, od kterych jeste odeberes prvky, co jsou v mnozine B.
Maska ti slouzi k rychlemu zjisteni, jestli je vybrany bit nenulovy.
Pouziva se k tomu operace & (AND).
Na miste, kde mas v masce 1, ti pak ve vysledku taky zbyde 1. A pokud jsi takto testoval jen jeden bit, tak vysledek je budto 0 a nebo maska (=vybrany bit byl 1)
Napr. maska 8 (bin 001000) a cislo 26 (bin 011010):
001000 &
011010 =
001000
aby se ti maska menila timto stylem:
000001 (1 dec)
000010 (2 dec)
000100 (4 dec)
atd., staci ti to cislo jen nasobit dvema.
Myslim, ze jsi to sjednoceni pochopil spatne.
Mel bys projet obe mnoziny a do vysledku zapsat jen ty bity, ktere jsou v jedne
mnozine nebo ve druhe.
Melo by ti tady stacit projet vsechny prvky a pouzit na ne operaci | (nebo).
samozřejmě binární logiku a reprezentaci znám..
kod jsem ještě upravil a sjednocení mi funguje
mnozina sjednoceni(mnozina A, mnozina B)
{
long maska;
int index;
int i, j;
int mez_i;
index = 0;
/* vypocet meze cyklu */
mez_i = A.pocet / (sizeof(int)* 8) + 1;
/* cyklus pres cisla typu int */
for (i = 0; i < mez_i; i++) {
/* vypocet meze cyklu */
int mez_j = (i < mez_i - 1) ? sizeof(int)* 8 : (A.pocet % (sizeof(int)* 8));
/* posun masky na zacatek */
maska = 1;
/* cyklus pres jednotlive bity */
for (j = 0; j < mez_j; j++) {
/* pokud je prvek v mnozine - bit 1 pod maskou,
* tak vypiseme odpovidajici index
*/
if (A.prvky[i] & maska || B.prvky[i] & maska)
printf("%i, ", index);
maska *= 2; /* posun masky */
index++; /* posun indexu */
}
}
}
To uz vypada lip.
ten predchozi kod uz v miste
mez_i = (A.pocet + B.pocet) / (sizeof(int)* 8) + 1;
vypadal podezrele 
Jojo, akorát nevím, jak na rozdíl
protože co jsem našel, tak platí že, A-B vypíše prvky co se nachází v
množině A, kde daný prvek nesmí být v množině B
Zobrazeno 18 zpráv z 18.
