● 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; }