0

Hi there.
I am producing a bar graph which uses values from a array.
I have tried many different ways of getting a fixed size bar graph.
Currently it prints the graph correctly with bars both above and below the x axis it also prints the reverse if the user inputted value is negative.
The problem i have is that at the moment if the user enters a large value say 100 the graph step down 100 lines to the x axis making the graph over 100 lines big (as negative bar graph is also included).
I have tried to use an equation inside the main for loop however it plays up with the graph.
Thanks for your sugesstions.

double array1[61];
double val1;
int q;
double input;

double array1[61];
double val1;
int q;
double input;

for (val1 = 50; val1 >= 0; val1--)
    {
	  cout << setw(6) << input--;

        for (q = 0; q <= 60; q++)
        {
            if (array1[q] >= val1)
            {
                cout << "#";
            }
            else
            {
                cout << " ";
            }
        }
        cout << endl;
    }



    for (val1 = 0; val1 >= -50; val1--)
    {
        cout << setw(6) << input--;                  

        for (q = 0; q <= 60; q++)
        {
            if (array1[q] >= val1)
            {
                cout << " ";
            }
            else
            {
                cout << "#";
            }
        }
        cout << endl;
    }

    cout << endl;

}
2
Contributors
4
Replies
5
Views
7 Years
Discussion Span
Last Post by meanace
0

Do you want to?

- clip extreme values, say if ( x > 25 ) x = 25 ?
- scale the graph (max=100), so px = x * 25 / max

0

Hi
Id like to scale the graph so that if the user inputs a value the graph is shown at a reasonable size which works with both negative and positive inputted values.
Thank you.

0

OK, so start by calculating the input ranges, then you can create scale factors to map the input range to the output range.

0

Ive tried to make an equation in the for loop which decreases at a even scale but the graph plays up.

This article has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.