Question: THIS IS CODE IN C ASSIGNMENT: ** I KNOW THIS CODE WORKS, BUT IT NEEDS TO BE MORE EFFICIENT*** 1.What does the function calculate_modified do?
THIS IS CODE IN C
ASSIGNMENT:
** I KNOW THIS CODE WORKS, BUT IT NEEDS TO BE MORE EFFICIENT***
1.What does the function calculate_modified do?
2.What problems/issue DO YOU SEE WITH TTHE CODE?
3. Modified it to BE MORE EFFICIENT .
4.improvements and the benefits?
#include
#include
#include
#include
#include
typedef int int32;
typedef char int8;
static void unite_arrays(int8 *output, int8 *input_1, const int8 *input_2, int32 length)
{
int32 i = 0;
for(i=0; i
{
output[i] = (int8)(input_1[i] ^ input_2[i]);
}
return;
}
static void itoa( int32 num, int8 *alpha, int32 radix )
{
if( radix == 10 )
{
sprintf(alpha, "%i", num);
}
else if( radix == 16 )
{
sprintf(alpha, "%X", num);
}
}
int8 *calculate_modified(int8 modifier, const int8 *input_1, int32 length)
{
int8 leading[3];
int32 i_leading;
int8 * temp_string = NULL;
int8 * ret;
int32 i = 0;
itoa(modifier/2, leading, 10);
//atoi converts string to integer
i_leading = atoi(leading);
temp_string = (int8 *) malloc(8);
//malloc allocates memory block returns to pointer at begginning of block
ret = (int8 *) malloc(length);
//memset fills block of memory
memset(temp_string, 0, 8);
temp_string[0] = 0;
if( (modifier+1)%2 == 0 ) {
temp_string[0] = (int8)((i_leading<<4) + 8);
}
else {
temp_string[0] = (int8)(i_leading<<4);
}
for(i=0; i<(length>>3); i++)
{
unite_arrays(ret+i*8, temp_string, input_1+i*8, 8);
}
free(temp_string);
return ret;
}
// Do not change anything in main
// main only contains example input
// Change anything else
int main(int argc, char **argv)
{
int8 data[] = {0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57};
int8 *resp = calculate_modified(0x10, data, sizeof(data));
free(resp);
return 0;
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
