Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdint.h>
- #define elemCount 4
- enum flags{
- FLAG1 = 0x00000001,
- FLAG2 = 0x00000002
- };
- int32_t g_testArray_1[elemCount];
- int32_t g_testArray_2[elemCount];
- int32_t g_flag_1;
- int32_t g_flag_2;
- uint32_t i;
- void resetVal()
- {
- memset (g_testArray_1, 0, sizeof *g_testArray_1 * elemCount);
- memset (g_testArray_2, 0, sizeof *g_testArray_2 * elemCount);
- g_flag_1 = -1;
- g_flag_2 = -1;
- }
- /*
- find the first matching index for g_testArray_1,FLAG1 and g_testArray_2,FLAG2
- if there is none, find first for g_testArray_1,FLAG1 and first for g_testArray_2,FLAG2
- */
- void checkIndexes()
- {
- for( i=0; i < elemCount; ++i )
- {
- if( g_testArray_1[i] & FLAG1 && g_testArray_2[i] & FLAG2 )
- {
- g_flag_1 = i;
- g_flag_2 = i;
- return;
- }
- if( g_flag_1 == -1 )
- {
- if( g_testArray_1[i] & FLAG1) g_flag_1 = i;
- }
- if( g_flag_2 == -1 )
- {
- if( g_testArray_2[i] & FLAG2) g_flag_2 = i;
- }
- }
- }
- void printRezult()
- {
- //pass only if g_flag_1 and g_flag_2 not -1
- if( g_flag_1 == -1 || g_flag_2 == -1 )
- {
- printf("did not pass\n");
- if( g_flag_1 == -1) printf("g_flag_1, index not found.\n");
- if( g_flag_2 == -1) printf("g_flag_2, index not found.\n");
- }
- else
- {
- printf("has passed\n");
- printf("g_flag_1 index: %d\n", g_flag_1);
- printf("g_flag_2 index: %d\n", g_flag_2);
- }
- }
- int main()
- {
- //Test 1
- printf("Test 1: ");
- resetVal();
- g_testArray_1[0] = 1;
- g_testArray_2[0] = 2;
- checkIndexes();
- printRezult();
- //Test 2
- printf("Test 2: ");
- resetVal();
- g_testArray_1[0] = 1;
- g_testArray_2[1] = 2;
- g_testArray_1[3] = 1;
- g_testArray_2[3] = 2;
- checkIndexes();
- printRezult();
- //Test 3
- printf("Test 3: ");
- resetVal();
- g_testArray_1[0] = 1;
- g_testArray_2[0] = 2;
- g_testArray_1[3] = 1;
- g_testArray_2[3] = 2;
- checkIndexes();
- printRezult();
- //Test 4
- printf("Test 4: ");
- resetVal();
- g_testArray_1[1] = 1;
- g_testArray_2[2] = 2;
- checkIndexes();
- printRezult();
- //Test 5
- printf("Test 5: ");
- resetVal();
- g_testArray_1[0] = 1;
- g_testArray_2[1] = 1;
- checkIndexes();
- printRezult();
- return 0;
- }
- /*
- output:
- Test 1: has passed
- g_flag_1 index: 0
- g_flag_2 index: 0
- Test 2: has passed
- g_flag_1 index: 3
- g_flag_2 index: 3
- Test 3: has passed
- g_flag_1 index: 0
- g_flag_2 index: 0
- Test 4: has passed
- g_flag_1 index: 1
- g_flag_2 index: 2
- Test 5: did not pass
- g_flag_2, index not found.
- */
Add Comment
Please, Sign In to add comment