📖 Scenario: You are managing a list of daily temperatures recorded in a weather station. Sometimes, the last recorded temperature needs to be removed if it was recorded by mistake.
🎯 Goal: Build a program that stores a fixed list of temperatures in an array, keeps track of the number of valid entries, and deletes the last temperature entry by reducing the count.
📋 What You'll Learn
Create an integer array called temperatures with exactly these values: 30, 32, 31, 29, 28
Create an integer variable called count and set it to the number of elements in temperatures
Write code to delete the last element by reducing count by 1
Print the remaining elements in temperatures up to count separated by spaces
💡 Why This Matters
🌍 Real World
Managing lists of data where the last entry might need to be removed, such as undoing the last action or correcting input errors.
💼 Career
Understanding how to manage arrays and their sizes is fundamental for programming tasks in embedded systems, game development, and performance-critical applications.
Progress0 / 4 steps
1
Create the temperatures array
Create an integer array called temperatures with exactly these values: 30, 32, 31, 29, 28
DSA C
Hint
Use curly braces to list the values inside the array declaration.
2
Set the count variable
Create an integer variable called count and set it to 5, the number of elements in temperatures
DSA C
Hint
Count should be an integer variable equal to the number of elements in the array.
3
Delete the last element by reducing count
Write code to delete the last element by reducing count by 1
DSA C
Hint
Subtract 1 from count to remove the last element logically.
4
Print the remaining elements
Use a for loop with variable i from 0 to less than count to print the elements of temperatures separated by spaces
DSA C
Hint
Use a for loop and printf to print each element followed by a space.
Practice
(1/5)
1. What happens to the size of an array when you delete an element from the end in a typical static array implementation?
easy
A. The size decreases by one
B. The size stays the same
C. The size increases by one
D. The size becomes zero
Solution
Step 1: Understand array size after deletion
Deleting an element from the end means removing the last element, so the total number of elements reduces by one.
Step 2: Effect on array size
The size variable or count of elements decreases by one to reflect the removal.
Final Answer:
The size decreases by one -> Option A
Quick Check:
Deleting last element reduces size by 1 [OK]
Hint: Deleting end element reduces size by one [OK]
Common Mistakes:
Thinking size stays same after deletion
Assuming size increases after deletion
Confusing deletion with insertion
2. Which of the following is the correct way to delete the last element from an array arr of size n in C?
easy
A. free(arr[n-1]);
B. arr[n] = 0;
C. n = n - 1;
D. arr = arr - 1;
Solution
Step 1: Understand array deletion in C
In static arrays, deleting means reducing the size count. So, decreasing n by 1 removes last element logically.
Step 2: Analyze options
n = n - 1; correctly reduces size. arr[n] = 0; tries to set element but doesn't change size. free(arr[n-1]); is invalid as free is for dynamic memory. arr = arr - 1; is invalid pointer arithmetic.
Final Answer:
n = n - 1; -> Option C
Quick Check:
Decrease size variable to delete last element [OK]
Hint: Reduce size variable to delete last element [OK]
Common Mistakes:
Using free() on static array elements
Trying to set last element to zero without changing size
Incorrect pointer arithmetic
3. What will be the output of the following C code?
int arr[5] = {10, 20, 30, 40, 50};
int n = 5;
n = n - 1;
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
medium
A. 10 20 30 40 50
B. 10 20 30 40
C. 20 30 40 50
D. 10 20 30
Solution
Step 1: Understand size after deletion
Initially, n is 5. After n = n - 1;, n becomes 4, so loop runs from 0 to 3.
Step 2: Loop prints elements from index 0 to 3
Elements printed are arr[0]=10, arr[1]=20, arr[2]=30, arr[3]=40.
Final Answer:
10 20 30 40 -> Option B
Quick Check:
Loop runs n=4 times, prints first 4 elements [OK]
Hint: After reducing size, loop prints fewer elements [OK]
Common Mistakes:
Printing all 5 elements ignoring updated size
Starting loop from 1 instead of 0
Confusing array indices
4. Identify the error in the following code snippet that attempts to delete the last element of an array arr of size n.
void deleteEnd(int arr[], int n) {
arr[n] = 0;
n = n - 1;
}
medium
A. Accessing arr[n] is out of bounds
B. Size variable n should not be changed
C. Setting arr[n] to 0 deletes the element
D. Function should return the new size
Solution
Step 1: Check array index usage
Array indices go from 0 to n-1. Accessing arr[n] is out of bounds and causes undefined behavior.
Step 2: Understand deletion logic
To delete last element, reduce size n by 1. Setting arr[n] to 0 is invalid and does not delete element.
Final Answer:
Accessing arr[n] is out of bounds -> Option A
Quick Check:
Array index must be less than size [OK]
Hint: Array last index is n-1, not n [OK]
Common Mistakes:
Using arr[n] instead of arr[n-1]
Assuming setting element to zero deletes it
Not updating size correctly
5. Given a dynamic array implemented with a pointer int *arr and current size n, which of the following correctly deletes the last element and updates the array size safely in C?
hard
A. free(arr[n-1]); n = n - 1;
B. arr[n-1] = 0; n = n - 1;
C. arr = arr - 1; n = n - 1;
D. n = n - 1; arr = realloc(arr, n * sizeof(int));
Solution
Step 1: Understand dynamic array deletion
To delete last element, reduce size n by 1 and resize memory using realloc to avoid wasted space.
Step 2: Analyze options
n = n - 1; arr = realloc(arr, n * sizeof(int)); correctly reduces size and resizes memory. arr[n-1] = 0; n = n - 1; sets element to zero but wastes memory. free(arr[n-1]); n = n - 1; incorrectly uses free on element. arr = arr - 1; n = n - 1; does invalid pointer arithmetic.
Final Answer:
n = n - 1; arr = realloc(arr, n * sizeof(int)); -> Option D
Quick Check:
Reduce size and resize memory with realloc [OK]
Hint: Use realloc after reducing size for dynamic arrays [OK]
Common Mistakes:
Not resizing memory after deletion
Using free() on array elements
Incorrect pointer arithmetic
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.