📜  C / C ++程序使用“结构”将英寸英尺系统中给定的N个距离相加

📅  最后修改于: 2021-06-01 00:44:07             🧑  作者: Mango

给定一个数组nrr [],它包含N个英寸英尺系统的距离,因此该数组的每个元素都表示一个{inch,feet}形式的距离。任务是使用结构将所有N英寸英尺的距离相加。

例子:

方法:

  1. 遍历struct数组arr并找到给定的N个距离集的所有英寸的总和,如下所示:
    feet_sum = feet_sum + arr[i].feet;
    inch_sum = inch_sum + arr[i].inch;
    
  2. 如果所有英寸的总和(例如inch_sum )大于12,则将inch_sum转换为英尺,因为
    1 feet = 12 inches
    

    因此更新inch_suminch_sum%12。然后找到N个距离的所有英尺的总和(例如, foot_sum ),并将inchs_sum / 12加到该总和。

  3. 分别打印foot_suminch_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是英寸英寸英尺的距离。