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

Note: REVIEW. Please answer all coding questions with valid C code. You may assu

ID: 3800061 • Letter: N

Question

Note: REVIEW. Please answer all coding questions with valid C code. You may assume for any question that the appropriate includes have been made and that i, j and k are declared and ready to use as integer variables (as loop indexes).

Part I - Dynamic Memory Allocation

For each of the following questions, you may assume that both size1 and size2 are integer variables that have been assigned to values prior to the line of code you are to write.

1) Write a single line of code that dynamically allocates an array of size1 variables of type double. Assign the memory allocated to a pointer called nums.

2) Write a single line of code that frees the memory allocated in question 1.

3) Write a segment of code that dynamically allocates a two dimensional array of characters based on a set of integers read in from standard input. In particular, the first integer, size1, will represent the number of strings the array will store. The following size1 integers will represent the lengths of each of the strings, in order. For example, if the input were 3, 8, 5 and 10, then array ought to be prepared to store three strings of length 8, 5 and 10, respectively. Assign the memory allocated to a pointer called words. Please leave room for the null character.

________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________

4) Write a segment of code that frees the memory allocated in question 3.

________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________

5) Consider a situation where we have a variable, myclass, of type struct student** that is pointing to an array of size1 pointers of type struct student*, each of which is pointing to a single struct student. In addition, assume that within each struct, both name and gradePtr are pointing to memory that is dynamically allocated. Write a segment of code to free all of the memory pointed to by the double pointer myclass. (Note: Look on the overhead to see a picture of what the allocated memory looks like.) The struct is defined below.

};

_____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

6) Using a binary search on a sorted array of 16,000,000 items, how many comparisons are necessary to determine whether or not a value is stored in the array? (Note: 220 ~ 1,000,000.) Briefly explain your reasoning.

7) Write a function that takes in a sorted array, list, of length distinct integers and prints out each positive integer in between 1 and 1,000,000 that does NOT appear on the list. It's guaranteed that all of the values stored in list are in between 1 and 1,000,000, inclusive.

}

Explanation / Answer

Ans 1:

int *num=malloc(size1*sizeof(double));

Ans 2:

free(num);

Ans 3:

we need to create array of character pointer one for each string

char **Arr= malloc(totalstrings * sizeof(char *));

int i,l,len;

//we assurme that int l store the no string and len[] store length of each string

for(i=0;i<l;i++){

}

Ans 4:

free(Arr);

Ans 5:

struct student** obj;

free(obj);

Ans 6:

Binary search alway require log 2 NO OF ELEMENT

Therefore log 2 16000000

= ~ 23 (worst case)

Ans 7

int i;

bool vis={false};

for(i=0;i<length;i++){

if(list[i]<1000000){

vis[list[i]]=true;

}

// Print missing element
i = 0;
while (i < 1000000)
{
// If i is missing
if (vis[i] == false)
{
// Find if there are more missing elements after i
int j = i+1;
while (j < 1000000 && vis[j] == false)
j++;

// Print missing single or range
(i+1 == j)? printf("%d ", i): printf("%d-%d ", i, j-1);

// Update u
i = j;
}
else
i++;
}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote