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++;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.