#include #include #include #define TAILLE 20 int myRand(void) { return rand() * (RAND_MAX + 1) + rand(); } void initialiserAvec0x00(unsigned char* t, size_t n) { for (size_t i = 0; i < n * n * n; i++) { t[i] = 0x00; } } void initialiserAvec0x00et0xFF(unsigned char* t, size_t n, int m) { initialiserAvec0x00(t, n); for (int i = 0; i < m; i++) { int i1; int i2; int i3; unsigned char* uc; do { i1 = myRand() % n; i2 = myRand() % n; i3 = myRand() % n; uc = &t[i1 * n * n + i2 * n + i3]; } while (*uc == 0xFF); *uc = 0xFF; } } void compter0x00et0xFF(unsigned char* t, size_t n, size_t m, size_t p, int *nb0x00,int *nb0xFF) { unsigned char* ptr = t; *nb0x00 = 0; *nb0xFF = 0; for (size_t i = 0; i < n * m * p; i++) { switch (*ptr) { case 0x00: { (*nb0x00)++; } break; case 0xFF: { (*nb0xFF)++; } break; } ptr++; } } int main(void) { srand(0); unsigned char t1[TAILLE][TAILLE][TAILLE]; initialiserAvec0x00((unsigned char*) t1, TAILLE); unsigned char t2[TAILLE][TAILLE][TAILLE]; int m = 4000; initialiserAvec0x00et0xFF((unsigned char*) t2, TAILLE,m); int nb0x00; int nb0xFF; compter0x00et0xFF((unsigned char*) t1, TAILLE, TAILLE, TAILLE, &nb0x00, &nb0xFF); printf("%6d 0x00 et %6d 0xFF\n", nb0x00, nb0xFF); compter0x00et0xFF((unsigned char*) t2, TAILLE, TAILLE, TAILLE, &nb0x00, &nb0xFF); printf("%6d 0x00 et %6d 0xFF\n", nb0x00, nb0xFF); return 0; }