DeWard
DeWard

Reputation: 15

c++ Getting the Summation of numbers using an array and pointers

So I was doing a program where i need to find the total area of all floors, where the floors are determined by the user. I think I'm correct on the part to use the pointers, so to check if the code was correct I tried it doing it with basic addition. but even with basic addition it seems to have already some problems. I tried looking for similar questions in here and I can't find anything that might help me, so I hope you guys can help me. Thank you in advance.

float *Length=NULL, *Width=NULL, *Area=NULL, TotalArea, templ, tempw;
int floors, count;
    cout << "Input the number of floors to proceed\n";
    cout << ":";
    cin >> floors;
    
    Length = new float[floors];
    Width = new float[floors];
    Area = new float[floors];
   for (int loop = 0; loop < floors; loop++)
    {
        cout << "\n\nFloor " << loop + 1 << endl;
        cout << "Input the Length: \n";
        cin >> templ;
        cout << "Input the Width: \n";
        cin >> tempw;
        *(Length + loop) = templ;

        *(Width + loop) = tempw;
        *(Area + loop) = (*Length + loop) + (*Width + loop);

        count = loop;
        for (int count = 0; count < floors; count++)
        {
            TotalArea = TotalArea + *Area+count;
        }
    }
    cout << TotalArea  << endl;

I tried inputting the following: floor:2

floor 1 length: 1 width: 1 floor 2 length: 1 width: 1

The answer should be 4, but the output ends up with 10.

Upvotes: 0

Views: 56

Answers (2)

DeWard
DeWard

Reputation: 15

I tried making some changes based on you guys comments and here is what I did. There are some warnings I don't really know why but It seems to be working

float* Length = NULL, * Width = NULL, TotalArea, tempw, templ, * Area = NULL;
int floors, loop = 0;

    cout << "Input the number of floors to proceed\n";
    cout << ":";
    cin >> floors;


    for (int loop = 0; loop < floors; loop++)
    {
        Length = new float[floors];
        Width = new float[floors];
        Area = new float[floors];
        cout << "\n\nFloor " << loop + 1 << endl;
        cout << "Input the Length: \n";
        cin >> templ;
        cout << "Input the Width: \n";
        cin >> tempw;
        *(Length +loop) = l;
        *(Width+loop) = w;
        Area[floors] = (*(Length+loop)) * (*(Width+loop));
        TotalArea += a[floors];
    }

    cout << TotalArea  << endl;

This is what I came u with, it seems to be working, the output is also correct now.

Upvotes: 0

Stef
Stef

Reputation: 15505

You don't need arrays and pointers. Since you are looping through the floors and summing the areas of each floor, you can "forget" about previously encountered lengths, widths and areas, and only remember the total area encountered so far.

float length;
float width;
float area;
float totalArea;

int floors;
std::cout << "Input the number of floors to proceed\n";
std::cout << ":";
std::cin >> floors;

totalArea = 0;
for (int loop = 0; loop < floors; loop++)
{
    std::cout << "\n\nFloor " << loop + 1 << std::endl;
    std::cout << "Input the Length: " << std::endl;
    std::cin >> length;
    std::cout << "Input the Width: " << std::endl;
    std::cin >> width;
    area = length * width;
    totalArea += area;
}
std::cout << totalArea  << std::endl;

Notice how I added these annoying std:: everywhere? If you wonder why, see this other question: Why is “using namespace std;” considered bad practice?

Upvotes: 1

Related Questions