Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define natural unsigned short
- void Vector_bites();
- void Rights_admin();
- int main() {
- natural option;
- do {
- printf("0. Iesire.\n");
- printf("1. Vector de biti.\n");
- printf("2. Drepturi de utilizator.\n");
- printf("Introduce-ti optiunea dorita: "); scanf("%hu", &option);
- system("cls");
- switch (option)
- {
- case 0:
- printf("Sper ca te ai distrat.\n");
- system("pause");
- exit(0);
- break;
- case 1:
- Vector_bites();
- break;
- case 2:
- Rights_admin();
- break;
- default:
- printf("A-ti introdus valori gresite\n");
- break;
- }
- } while (1);
- }
- void Read_elem(char *vect){
- natural i, x, numberElem;
- printf("Introduceti numarul de elemente: "); scanf("%hu", &numberElem);
- for (i = 0; i < numberElem; i++) {
- printf("v[%d] = ", i + 1); scanf("%hu", &x);
- vect[x / 8] |= 1 << x % 8;
- }
- }
- void Verif_elem(char *vect) {
- natural x;
- printf("Introduceti numarul cautat: "); scanf("%hu", &x);
- if (vect[x / 8] & (1 << x % 8))
- printf("Numarul se afla in vector\n\n");
- else
- printf("Numarul nu se afla in vector\n\n");
- }
- void Vector_bites() {
- char vect[126];
- natural i, ok;
- for (i = 0; i < 125; i++)
- vect[i] = 0;
- Read_elem(&vect[0]);
- do {
- Verif_elem(vect);
- printf("Mai cautati alt numar? 0/1 : "); scanf("%hu", &ok);
- } while (ok);
- }
- typedef enum{Read = 1, Write = 2, Delete = 4, Rename = 8, Copy = 16, All = 31}rights;
- void Add_rights(char *user, rights Right) {
- *user |= Right;
- }
- void Remove_rights(char *user, rights Right) {
- *user &= ~Right;
- }
- void Show_rights(char user, natural i) {
- if (user == 31)
- printf("Utilizatorul %hu are drepturi depline.\n", i + 1);
- else if (user == 0)
- printf("Utilizatorul %hu nu are drepturi asupra acestui fiser.\n", i + 1);
- else {
- printf("Utilizatorul %hu are drepturile: ", i + 1);
- if (user & Read)
- printf("Citire, ");
- if (user & Write)
- printf("Scriere, ");
- if (user & Delete)
- printf("Stergere, ");
- if (user & Rename)
- printf("Redenumire, ");
- if (user & Copy)
- printf("Copiere, ");
- printf("\b\b. \n");
- }
- }
- void Rights_admin() {
- natural numberUsers, i, option, option2;
- char *users;
- do {
- printf("Introduceti numarul de utilizatori: "); scanf("%hu", &numberUsers);
- } while (!numberUsers);
- users = (char *)malloc(sizeof(char) * numberUsers);
- for (i = 0; i < numberUsers; i++) users[i] = 0;
- Add_rights(&users[0], All);
- do {
- printf("\nPrimul utilizator are drepturi depline.\n\n");
- printf("0. Introarcere in main.\n");
- printf("1. Adaugare de drepturi.\n");
- printf("2. Scoatere de drepturi.\n");
- printf("3. Afisarare drepturilor utilizatorilor.\n");
- printf("Introduceti optiunea dorita: "); scanf("%hu", &option);
- system("cls");
- switch (option)
- {
- case 1:
- printf("Utilizatorul caruia i se adauga: "); scanf("%hu", &i);
- i--;
- if (!i) {
- printf("\nPrimul utilizator nu se poate modifica.\n\n");
- continue;
- }
- printf("\nIntroduceti cifrele corspunzatoare drepturilor dorite!\n");
- printf("1. Citire.\n");
- printf("2. Scriere.\n");
- printf("3. Stergere.\n");
- printf("4. Redenumire.\n");
- printf("5. Copiere.\n");
- printf("6. Toate.\n");
- printf("Introduceti optiunea dorita: "); scanf("%hu", &option2);
- do {
- switch (option2 % 10) {
- case 1: Add_rights(&users[i], Read);
- break;
- case 2: Add_rights(&users[i], Write);
- break;
- case 3: Add_rights(&users[i], Delete);
- break;
- case 4: Add_rights(&users[i], Rename);
- break;
- case 5: Add_rights(&users[i], Copy);
- break;
- default :
- break;
- }
- if (option2 % 10 == 6) {
- Add_rights(&users[i], All);
- break;
- }
- option2 /= 10;
- } while (option2);
- break;
- case 2:
- printf("Utilizatorul caruia i se scoate: "); scanf("%hu", &i);
- i--;
- if (!i) {
- printf("Primul utilizator nu se poate modifica\n");
- continue;
- }
- printf("\nIntroduceti cifrele corspunzatoare drepturilor dorite!\n");
- printf("1. Citire.\n");
- printf("2. Scriere.\n");
- printf("3. Stergere.\n");
- printf("4. Redenumire.\n");
- printf("5. Copiere.\n");
- printf("6. Toate\n");
- printf("Introduceti optiunea dorita: "); scanf("%hu", &option2);
- do {
- switch (option2 % 10) {
- case 1: Remove_rights(&users[i], Read);
- break;
- case 2: Remove_rights(&users[i], Write);
- break;
- case 3: Remove_rights(&users[i], Delete);
- break;
- case 4: Remove_rights(&users[i], Rename);
- break;
- case 5: Remove_rights(&users[i], Copy);
- break;
- default:
- break;
- }
- if (option2 % 10 == 6) {
- Remove_rights(&users[i], All);
- break;
- }
- option2 /= 10;
- } while (option2);
- break;
- case 3:
- for (i = 0; i < numberUsers; i++)
- Show_rights(users[i], i);
- break;
- default:
- printf("Date introduse gresit!\n");
- break;
- }
- } while (option);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement