Skip to main content

LandMeasure class and sum function

Short answer

The sum function adds corresponding units, carrying from Dam to Paisa (4:1), Paisa to Ana (4:1), and Ana to Ropani (16:1). For inputs 2 10 3 3 and 1 7 2 2, the sum is 4 Ropani, 2 Ana, 2 Paisa, 1 Dam.

Write a program to create a class LandMeasure that reads Ropani, Ana, Paisa and Dam as data members. Write a function to pass two objects of type Land Measure and return their sum. (16 Ana = 1 Ropani, 4 Paisa = 1 Ana, 4 Dam = 1 Paisa)

Conversion rules: 4 Dam = 1 Paisa, 4 Paisa = 1 Ana, 16 Ana = 1 Ropani. In the sum, add each unit and carry from Dam upward: Dam carries to Paisa at 4, Paisa to Ana at 4, Ana to Ropani at 16.

#include <iostream>
using namespace std;

class LandMeasure
{
    int ropani, ana, paisa, dam;
public:
    void read()
    {
        cout << "Enter Ropani, Ana, Paisa, Dam: ";
        cin >> ropani >> ana >> paisa >> dam;
    }
    void display()
    {
        cout << ropani << " Ropani " << ana << " Ana "
             << paisa << " Paisa " << dam << " Dam" << endl;
    }
    // takes two objects and returns their sum
    friend LandMeasure sum(LandMeasure, LandMeasure);
};

LandMeasure sum(LandMeasure a, LandMeasure b)
{
    LandMeasure t;
    t.dam = a.dam + b.dam;
    t.paisa = a.paisa + b.paisa + t.dam / 4;
    t.dam = t.dam % 4;
    t.ana = a.ana + b.ana + t.paisa / 4;
    t.paisa = t.paisa % 4;
    t.ropani = a.ropani + b.ropani + t.ana / 16;
    t.ana = t.ana % 16;
    return t;
}

int main()
{
    LandMeasure l1, l2, l3;
    l1.read();
    l2.read();
    l3 = sum(l1, l2);
    cout << "Sum = ";
    l3.display();
    return 0;
}

Sample run

Enter Ropani, Ana, Paisa, Dam: 2 10 3 3
Enter Ropani, Ana, Paisa, Dam: 1 7 2 2
Sum = 4 Ropani 2 Ana 2 Paisa 1 Dam

Check: Dam 3+2 = 5 gives 1 Dam, carry 1. Paisa 3+2+1 = 6 gives 2 Paisa, carry 1. Ana 10+7+1 = 18 gives 2 Ana, carry 1. Ropani 2+1+1 = 4.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Object Oriented Programming chapter 4 questions →