Good Afternoon,

I'm reviewing structs, but don't get the concept very well.
Assume the following structure declaration is given

``````struct Rectangle
{
int length;
int width;
};
``````

write a function that returns a Rectangle structure. The function should store the user's input in the members of the structure before returning.
So far I have this but it doesn't work.

``````int input(struct Rectangle*rect)
{
int l,w, area;
cout<<"Enter a length:";
cin>>l;
cout <<"enter a width:";
cin>>w;
area = l*w;
return area;
}
``````
3
Contributors
4
Replies
11
Views
6 Years
Discussion Span
Last Post by poloblue

Your code doesn't seem to match your description at all. You said the function should return a Rectangle, but the function in the code actually takes a rectangle (that it never uses) and returns an int.

Your function also calculates the area of the rectangle that the user entered which your description didn't say anything about. The calculation of the area should really happen in its own function.

PS: In C++ you don't need the struct keyword when declaring variables or parameters of a struct type.

Observant, good suggestion to separate calculation and printing
``````struct Rectangle
{
int lenght, height, area;
}
``````

And input code should be:

``````Rectangle* input()
{
Rectangle rg;
cout << "Length: ";
cin >> rg.Length;
cout << "Height: ";
cin >> rg.Height;
rg.area = rg.Length * rg.Height;

return &rg;
}
``````

Or should be:

``````int input(Rectangle *rg)
{
cout << "Length: ";
cin >> rg->length;
cout << "Height: ";
cin >> rg->height;

rg->area = rg->length * rg->height;
}
``````

@Fulctrum Your first input function is broken - it returns the address of a local variable.