Related Articles

# C/C++ program to add N distances given in inch-feet system using Structures

• Last Updated : 21 May, 2020

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.20

Input: arr[] = { { 1, 1.7 }, { 1, 1.5 }, { 6, 8 } };
Output:
Feet Sum: 8
Inch Sum: 11.20

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

1. 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;
```
2. 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.

3. 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); ` ` `  `    ``// 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); ` ` `  `    ``// Function Call ` `    ``findSum(arr, N); ` ` `  `    ``return` `0; ` `} `

Output:

```Feet Sum: 27
Inch Sum: 5.20
```

Time Complexity: O(N), where N is the number inch-feet distances.

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up