# test - Dynamic Arrays ## Team Team name: Date: Members | Role | Name | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| | **Facilitator** keeps track of time, assigns tasks and makes sure all the group members are heard and that decisions are agreed upon. | | | **Spokesperson** communicates group’s questions and problems to the teacher and talks to other teams; presents the group’s findings. | | | **Reflector** observes and assesses the interactions and performance among team members. Provides positive feedback and intervenes with suggestions to improve groups’ processes. | | | **Recorder** guides consensus building in the group by recording answers to questions. Collects important information and data. | | ## Activities Make sure to have the activities signed off regularly to ensure progress is tracked. Set up a project in CLion to write the small programs needed in some of the activities. ### Activity 1: Random access ````c #include <stdio.h> #define COUNT (50) void fill_fibonacci(unsigned long long * storage, int count) { *storage = 0; *(storage + 1) = 1; for (int i = 2; i < count; i++) { *(storage + i) = *(storage + i - 1) + *(storage + i - 2); } } int main(void) { unsigned long long array[COUNT]; fill_fibonacci(array, COUNT); for (int i = 1; i < COUNT; i++) { printf("f(%d) = %llu\n", i, array[i]); } } ```` ### Activity 2: Array definition This is how you include code listings in your markdown document: ```C typedef struct array { size_t capacity; size_t count; float *data; } array_t; ``` Record your answer here ### Activity 3: Correct initialization ```C array_t *array_init(array_t *pArray, size_t capacity); ``` Record your answer here ### Activity 4: Cleaning up ```c int main(void) { } ``` Record your answer here ### Activity 5: Resizing an array ```c void array_reserve(array *p_array, size_t min_capacity) { size_t capacity = p_array->capacity; while (capacity < min_capacity) { capacity = (capacity + 1) * ... } /* reallocate memory, update capacity of array, etc. */ } ``` Record your answer here ### Activity 6: Appending values ```c void array_append(array * arr, float value); ``` Record your answer here ### Activity 7: Inserting values ```c void array_insert(array * arr, int index, float value); ``` Record your answer here ### Activity 8: Removing by index ```c void array_remove(array * arr, int index); ``` Record your answer here ### Activity 9: Finding a value ```c int array_find(const array * arr, float value); ``` Record your answer here ### Activity 10: Constant time complexity Record your answer here ### Activity 11: Worst-case time complexity | Operation | Worst-case time complexity | | --------------- | -------------------------- | | Insert | | | Remove | | | Find | | | Lookup / access | | Record your answer here ### Activity 12: Complexity of *append* Record your answer here ### Activity 13: Storing grades in a dynamically growing array Record your answer here ## Looking back ### What we've learnt Formulate at least one lesson learned. ### What were the surprises Fill in... ### What problems we've encountered Fill in... ### What was or still is unclear Fill in... ### How did the group perform? How was the collaboration? What were the reasons for hick-ups? What worked well? What can be improved next time? > Written with [StackEdit](https://stackedit.io/).