给定一个数组nrr [],它包含N个英寸英尺系统的距离,因此该数组的每个元素都表示一个{inch,feet}形式的距离。任务是使用结构将所有N英寸英尺的距离相加。
例子:
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
方法:
- 遍历struct数组arr并找到给定的N个距离集的所有英寸的总和,如下所示:
feet_sum = feet_sum + arr[i].feet; inch_sum = inch_sum + arr[i].inch;
- 如果所有英寸的总和(例如inch_sum )大于12,则将inch_sum转换为英尺,因为
1 feet = 12 inches
因此更新inch_sum到inch_sum%12。然后找到N个距离的所有英尺的总和(例如, foot_sum ),并将inchs_sum / 12加到该总和。
- 分别打印foot_sum和inch_sum 。
下面是上述方法的实现:
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
时间复杂度: O(N) ,其中N是英寸英寸英尺的距离。