Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

void set_flag(unsigned int flag_holder[], int flag_position); void unset_flag(un

ID: 3670724 • Letter: V

Question

void set_flag(unsigned int flag_holder[], int flag_position); void unset_flag(unsigned int flag_holder[], int flag_position); int check_flag(unsigned int flag_holder[], int flag_position); void display_32_flags_as_array(unsigned int flag_holder); void display_flags(unsigned int flag_holder[], int size); //This is the main inside the client int main(int argc, char* argv[]) { unsigned int flag_holder[5] = { 0 };//Set the first integer to zero and all others to zero by default. set_flag(flag_holder, 3); set_flag(flag_holder, 16); set_flag(flag_holder, 31); set_flag(flag_holder, 87); display_flags(flag_holder, 5); printf(" "); unset_flag(flag_holder, 31); unset_flag(flag_holder, 3); set_flag(flag_holder, 99); set_flag(flag_holder, 100); display_flags(flag_holder, 5); return 0; } Here I have changed the functions so that they take an array of integers instead of just one integer. This allows me to imagine that I have a long array of bits instead of an array of integers. The functions can now set, unset, check and display flags for any bit in the array of 5 integers that I have made (and should work for any size array as long as your bit index is in bounds of your array). I also changed the display behavior. Daily 4 displayed the flags as you would see them in a binary number but since this program is moving away from the idea of a binary number to store bits and moving toward the idea of having an array of bits the display_32_flags_as_array function will display the [0] bit first then [1] and so on up to 31 whereas the display_32_flags function in daily 4 displays the [31] bit first and down to [0]. Similarly the display_flags function now takes an array of integers and displays one integer per line using the display_32_flags_as_array function. . Your output should look exactly like the following 0001 0000 0000 0000 1000 0000 0000 0001 0000 0000 0000 0000 0000

Explanation / Answer

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
//#include <string.h>
// #include <conio.h>
#include <bitset.h>
enum bits {
   bit1 = 0x01,
   bit2 = 0x02,
   bit4 = 0x04,
   bit8 = 0x08,
   bit10 = 0x10,
   bit20 = 0x20,

};

void set_flag(unsigned int flag_holder[], int flag_position);
void unset_flag(unsigned int flag_holder[], int flag_position);
int check_flag(unsigned int flag_holder[], int flag_position);
void display_32_flags_as_array(unsigned int flag_holder);
void display_flags(unsigned int flag_holder[], int size);
void set_flag(unsigned int flag_holder[], int flag_position)   {
flag_holder[1] = 0;
flag_holder[2] = 0;
flag_holder[3] = 0;
flag_holder[4] = 1;
flag_holder[5] = 0;
flag_holder[6] = 0;
flag_holder[7] = 0;
flag_holder[8] = 0;
flag_holder[9] = 0;
flag_holder[10] = 0;
flag_holder[11] = 0;
flag_holder[12] = 0;
flag_holder[13] = 0;
flag_holder[14] = 0;
flag_holder[15] = 0;
flag_holder[16] = 0;
flag_holder[17] = 1;
flag_holder[18] = 0;
flag_holder[19] = 0;
flag_holder[20] = 0;
flag_holder[21] = 0;
flag_holder[22] = 0;
flag_holder[23] = 0;
flag_holder[24] = 0;
flag_holder[25] = 0;
flag_holder[26] = 0;
flag_holder[27] = 0;
flag_holder[28] = 0;
flag_holder[29] = 0;
flag_holder[30] = 0;
flag_holder[31] = 0;
flag_holder[32] = 1;
flag_holder[33] = 0;
flag_holder[34] = 0;
flag_holder[35] = 0;
flag_holder[36] = 0;
flag_holder[37] = 0;
flag_holder[38] = 0;
flag_holder[39] = 0;
flag_holder[40] = 0;
flag_holder[41] = 0;
flag_holder[42] = 0;
flag_holder[43] = 0;
flag_holder[44] = 0;
flag_holder[45] = 0;
flag_holder[46] = 0;
flag_holder[47] = 0;
flag_holder[48] = 0;
flag_holder[49] = 0;
flag_holder[50] = 0;
flag_holder[51] = 0;
flag_holder[52] = 0;
} // end set_flag

//This is the main inside the client


int main(int argc, char* argv[]) {
unsigned int flag_holder[5] = { 0 };
//Set the first integer to zero and all others to zero by default.
set_flag(flag_holder, 3); set_flag(flag_holder, 16);
set_flag(flag_holder, 31); set_flag(flag_holder, 87);
display_flags(flag_holder, 5); printf(" ");
unset_flag(flag_holder, 31); unset_flag(flag_holder, 3);
set_flag(flag_holder, 99); set_flag(flag_holder, 100);
display_flags(flag_holder, 5);

int j[4];
   std::bitset<7> j;

   j[1] = 1;
   j[2] = 0;

   cout << endl << j << endl;

return 0; // exit
} // end of main()