#include <stdio.h>
typedef enum {
USER,
GROUP,
OTHER
} Grupa;
typedef enum {
R,
W,
X
} Prawo;
void przyznaj_prawo(int *prawa, Grupa grupa, Prawo prawo) {
int maska = 1 << (grupa * 3 + prawo);
*prawa |= maska;
}
void zabierz_prawo(int *prawa, Grupa grupa, Prawo prawo) {
int maska = ~(1 << (grupa * 3 + prawo));
*prawa &= maska;
}
void wyswietl_prawa(int prawa) {
char znaki[] = {'r', 'w', 'x'};
for (int grupa = USER; grupa <= OTHER; grupa++) {
for (int prawo = R; prawo <= X; prawo++) {
int maska = 1 << (grupa * 3 + prawo);
if (prawa & maska) {
} else {
}
}
}
}
int main() {
int prawa = 0;
przyznaj_prawo(&prawa, OTHER, R);
przyznaj_prawo(&prawa, USER, X);
wyswietl_prawa(prawa);
przyznaj_prawo(&prawa, USER, R);
przyznaj_prawo(&prawa, USER, W);
przyznaj_prawo(&prawa, GROUP, R);
przyznaj_prawo(&prawa, GROUP, X);
wyswietl_prawa(prawa);
zabierz_prawo(&prawa, USER, W);
zabierz_prawo(&prawa, GROUP, X);
wyswietl_prawa(prawa);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIGVudW0gewogICAgVVNFUiwKICAgIEdST1VQLAogICAgT1RIRVIKfSBHcnVwYTsKCnR5cGVkZWYgZW51bSB7CiAgICBSLAogICAgVywKICAgIFgKfSBQcmF3bzsKCnZvaWQgcHJ6eXpuYWpfcHJhd28oaW50ICpwcmF3YSwgR3J1cGEgZ3J1cGEsIFByYXdvIHByYXdvKSB7CiAgICBpbnQgbWFza2EgPSAxIDw8IChncnVwYSAqIDMgKyBwcmF3byk7CiAgICAqcHJhd2EgfD0gbWFza2E7Cn0KCnZvaWQgemFiaWVyel9wcmF3byhpbnQgKnByYXdhLCBHcnVwYSBncnVwYSwgUHJhd28gcHJhd28pIHsKICAgIGludCBtYXNrYSA9IH4oMSA8PCAoZ3J1cGEgKiAzICsgcHJhd28pKTsKICAgICpwcmF3YSAmPSBtYXNrYTsKfQoKdm9pZCB3eXN3aWV0bF9wcmF3YShpbnQgcHJhd2EpIHsKICAgIGNoYXIgem5ha2lbXSA9IHsncicsICd3JywgJ3gnfTsKICAgIGZvciAoaW50IGdydXBhID0gVVNFUjsgZ3J1cGEgPD0gT1RIRVI7IGdydXBhKyspIHsKICAgICAgICBmb3IgKGludCBwcmF3byA9IFI7IHByYXdvIDw9IFg7IHByYXdvKyspIHsKICAgICAgICAgICAgaW50IG1hc2thID0gMSA8PCAoZ3J1cGEgKiAzICsgcHJhd28pOwogICAgICAgICAgICBpZiAocHJhd2EgJiBtYXNrYSkgewogICAgICAgICAgICAgICAgcHV0Y2hhcih6bmFraVtwcmF3b10pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcHV0Y2hhcignLScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcHV0Y2hhcignXG4nKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgcHJhd2EgPSAwOwogICAgcHJ6eXpuYWpfcHJhd28oJnByYXdhLCBPVEhFUiwgUik7CiAgICBwcnp5em5hal9wcmF3bygmcHJhd2EsIFVTRVIsIFgpOwogICAgd3lzd2lldGxfcHJhd2EocHJhd2EpOwoKICAgIHByenl6bmFqX3ByYXdvKCZwcmF3YSwgVVNFUiwgUik7CiAgICBwcnp5em5hal9wcmF3bygmcHJhd2EsIFVTRVIsIFcpOwogICAgcHJ6eXpuYWpfcHJhd28oJnByYXdhLCBHUk9VUCwgUik7CiAgICBwcnp5em5hal9wcmF3bygmcHJhd2EsIEdST1VQLCBYKTsKICAgIHd5c3dpZXRsX3ByYXdhKHByYXdhKTsKCiAgICB6YWJpZXJ6X3ByYXdvKCZwcmF3YSwgVVNFUiwgVyk7CiAgICB6YWJpZXJ6X3ByYXdvKCZwcmF3YSwgR1JPVVAsIFgpOwogICAgd3lzd2lldGxfcHJhd2EocHJhd2EpOwoKICAgIHJldHVybiAwOwp9Cg==