A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

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

نظرات  (۱)

۰۹ دی ۹۲ ، ۰۸:۴۹ مهدی مظاهری
سلام امیرحسین

یک راه ساده تر بود: همه را بصورت ردیفی در یک آرایه دوبعدی می گذاشتی و هر ستون را از آخر چاپ کنیم.

با احترام
پاسخ:
سلام،

من فکر کنم ماکزیمم پیدا کردن ساده تر باشه، اولین ایده ای بود که به ذهن هرکس می رسید! تازه نیازی نبود findmax رو خودمون بنویسیم ولی برای اینکه ابهامی ایجاد نشه کامل نوشتم.

به هر حال راه حل که زیاده، مهم اینه که خودمون با کدوم راحت تر باشیم که من با این روش راحت تر بودم.

ممنون

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی