Given an array arr[] containing N distances of inch-feet system, such that each element of the array represents a distance in the form of {inch, feet}. The task is to add all the N inch-feet distances using structures.
Examples:
Input: arr[] = { { 10, 3.7 }, { 10, 5.5 }, { 6, 8.0 } };
Output:
Feet Sum: 27
Inch Sum: 5.20Input: arr[] = { { 1, 1.7 }, { 1, 1.5 }, { 6, 8 } };
Output:
Feet Sum: 8
Inch Sum: 11.20
Approach:
- Traverse the struct array arr and find the summation of all the inches of the given set of N distances as:
feet_sum = feet_sum + arr[i].feet; inch_sum = inch_sum + arr[i].inch;
- If the sum of all the inches (say inch_sum) is greater than 12, then convert the inch_sum into feet because
1 feet = 12 inches
Therefore update inch_sum to inch_sum % 12. Then find the summation of all the feets(say feet_sum) of N distances and add inches_sum/12 to this sum.
- Print the feet_sum and inch_sum individually.
Below is the implementation of the above approach:
C
// C program for the above approach   #include "stdio.h"   // Struct defined for the inch-feet system struct InchFeet {       // Variable to store the inch-feet     int feet;     float inch; };   // Function to find the sum of all N // set of Inch Feet distances void findSum(struct InchFeet arr[], int N) {       // Variable to store sum     int feet_sum = 0;     float inch_sum = 0.0;       int x;       // Traverse the InchFeet array     for (int i = 0; i < N; i++) {           // Find the total sum of         // feet and inch         feet_sum += arr[i].feet;         inch_sum += arr[i].inch;     }       // If inch sum is greater than 11     // convert it into feet     // as 1 feet = 12 inch     if (inch_sum >= 12) {           // Find integral part of inch_sum         x = (int)inch_sum;           // Delete the integral part x         inch_sum -= x;           // Add x%12 to inch_sum         inch_sum += x % 12;           // Add x/12 to feet_sum         feet_sum += x / 12;     }       // Print the corresponding sum of     // feet_sum and inch_sum     printf("Feet Sum: %d\n", feet_sum);     printf("Inch Sum: %.2f", inch_sum); }   // Driver Code int main() {       // Given set of inch-feet     struct InchFeet arr[]         = { { 10, 3.7 },             { 10, 5.5 },             { 6, 8.0 } };       int N = sizeof(arr) / sizeof(arr[0]);       // Function Call     findSum(arr, N);       return 0; } |
C++
// C++ program for the above approach #include "iostream" using namespace std;   // Struct defined for the inch-feet system struct InchFeet {       // Variable to store the inch-feet     int feet;     float inch; };   // Function to find the sum of all N // set of Inch Feet distances void findSum(InchFeet arr[], int N) {       // Variable to store sum     int feet_sum = 0;     float inch_sum = 0.0;       int x;       // Traverse the InchFeet array     for (int i = 0; i < N; i++) {           // Find the total sum of         // feet and inch         feet_sum += arr[i].feet;         inch_sum += arr[i].inch;     }       // If inch sum is greater than 11     if (inch_sum >= 12) {           // Find integral part of inch_sum         int x = (int)inch_sum;           // Delete the integral part x         inch_sum -= x;           // Add x%12 to inch_sum         inch_sum += x % 12;           // Add x/12 to feet_sum         feet_sum += x / 12;     }       // Print the corresponding sum of     // feet_sum and inch_sum     cout << "Feet Sum: "         << feet_sum << '\n'         << "Inch Sum: "         << inch_sum << endl; }   // Driver Code int main() {       // Given a set of inch-feet     InchFeet arr[]         = { { 10, 3.7 },             { 10, 5.5 },             { 6, 8.0 } };       int N = sizeof(arr) / sizeof(arr[0]);       // Function Call     findSum(arr, N);       return 0; } |
Feet Sum: 27 Inch Sum: 5.20
Time Complexity: O(N), where N is the number inch-feet distances.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
