● Allame Helli5 Computer Term Exam- Problem6 - Bar graph
شنبه, ۷ دی ۱۳۹۲، ۱۰:۵۶ ق.ظ
از آنجا که دوشنبه امتحان ترم اوّل آمار در دبیرستان علامه حلّی5 برگزار خواهد شد، به عنوان تمرین می خواهیم یک سری داده از ورودی دریافت کرده و نمودار میله ای آنها را چاپ کنیم. (تعداد داده ها n و فراوانی هر داده Fi است.)
input
5
3 4 6 2 1
output
* * ** *** **** *****
ورودی:
در خط اوّل یک عدد صحیح n حداکثر 72 (چون در صفحه ی خروجی شکل مناسب تری پیدا می کند، بیشتر از 72 توصیه نمی شود) که نشان دهنده ی تعداد داده هاست، دریافت شده و در خط دوّم n عدد که هر کدام فراوانی عنصر i ام، یا همان Fi است دریافت می شود. (بین آنها space فاصله است)
خروجی:
نمودار میله ای را اینگونه رسم کنید که خط افقی نشان دهنده ی داده ها و خط عمودی نشان دهنده ی فراوانی ها باشد. این تضمین شده است که در ورودی اعداد منفی مشاهده نخواهد شد. (حداقل داده ها 0 است)
// A Drop of the Programming Sea - adops.blog.ir
#include <iostream>
using namespace std;
int findmax(int* a, int n)
{
int max = -1;
for(int i=0; i<n; i++) if(a[i] > max) max = a[i];
return max;
}
int main()
{
int n;
cin >> n;
int* input = new int[n];
for(int i=0; i<n; i++) cin >> input[i];
int mx = findmax(input, n);
int tmp = mx;
for(int i=0; i<tmp; i++)
{
for(int j=0; j<n; j++) if(input[j] == mx)
{
input[j]--;
cout << '*';
}
else cout << ' ';
mx--;
cout << '\n';
}
return 0;
}

مهدی مظاهری