как построить гистограмму в с - PullRequest
1 голос
/ 01 октября 2010

как построить гистограмму в c из 2 массивов?

Ответы [ 3 ]

1 голос
/ 01 октября 2010

Для гистограммы выложил на бок ...

Я предлагаю использовать printf ("*") для каждого приращения и printf ("\ n"), чтобы начать вывод новой строки. (Изменение ориентации является упражнением для читателя).

1 голос
/ 01 октября 2010

Немного подумав о проблеме, я не уверен, что «дубликат», который я указал в комментариях, действительно отзывчив. Поэтому я скажу несколько слов.

Если вы остановились на художественном подходе ASCII, у вас есть только одно решение: вертикальные или горизонтальные полосы. Горизонтально легко: просто определитесь с масштабированием, а затем напечатайте bin_contents*scale символов для каждой корзины. Ссылка на код-гольф действительно полезна в качестве модели , что делать, даже если это не хороший пример , как написать ее.

Однако во многих полях есть ожидание вертикальной черты в представлении гистограмм. Это немного сложнее, но рассмотрим псевдокод

sacle = find_scale(input_array)
max_height = find_max(input_array) * scale
for (i=max_height; i>=0; i--) 
   if (some condition)
      print_in_N_digits(round(i/scale)) // to label the scale
   else
      print_in_N_digits()               // lines with no labels
   print " |"                           // set up the vertical axis
   for (j=first_bin to lat_bin)
      if (input[j]*scale >= i)
         print("#")
      else
         print(" ")
      print_new_line
print_in_N_digits(0)
print(" +")
for (j=first_bin to last_bin)
   print("-")
print_new_line
print_in_N_digits()
print(" 0")
for (j=first_bin to last_bin)
   if (some other condition)
      print_bin_label

Это просто перебирает страницу, используя столбец для каждой корзины и на каждом уровне печатает либо " ", либо "#" для каждого столбца. Часть печати гистограммы действительно очень проста. Вся сложность возникает из-за управления осью и метками.

0 голосов
/ 01 октября 2010

Вы можете использовать ascii art для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...