Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj, děláme bitové operátory a pole a já v tom docela plavu, mohl by mi nekdo poradit s tímto kódem, vysvětlit proč jsou některé věci tak jak jsou
void vypis(mnozina A)
{
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)
printf("%i, ", index);
maska *= 2; /* posun masky */
index++; /* posun indexu */
}
}
}hlavně teda to mez_i a mez_j a maska
Díky moc
Offline
Tak jsem to snad pochopil správně, teď mám jiný problém, vytvořil jsem si pár proměnných typů long, int, vše bylo v pořádku, ale když jsem na začátek funkce připsal
mnozina C;
C.prvky = (int *) malloc(3 * sizeof(int));
C.pocet = 3 * sizeof(int) * 8;tak mi to píše
c:\users\uživatel\documents\visual studio 2008\projects\mnoziny\mnoziny\main.c(49) : error C2143: syntax error : missing ';' before 'type'
u všech proměnných, nerozumím tomu, středníky jsou všechny správně
Vyřešeno, zapomněl jsem že VS kompilátor chce všechny proměnné na začátku funkce
Jinak to vysvětlení některých věcí popsaných v prvním příspěvku pořád platí, nerad bych něco pochopil špatně
Offline