1 / 1 / 0
Регистрация: 29.12.2011
Сообщений: 13
1

Гистограмма

14.03.2012, 10:32. Показов 3585. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста помогите! Мне срочно нужно написать программу которая считывает числа в входном файле и строит гистограмму в выходном.

Входной файл: input.txt
Выходной файл: output.txt

Условие
Каждое число изображается прямоугольным столбцом с высотой, пропорциональной значению числа.
По данным целым числам a1, a2, …, aN требуется построить гистограмму. Гистограмма должна состоять из N столбцов, i-й столбец должен изображаться прямоугольником высотой ai и шириной в 3 символа.

Столбцы должны быть:
заполнены символом '#' (ASCII 35),
ограничены сверху и снизу символами '-' (ASCII 45),
ограничены слева и справа символами '|' (ASCII 124),
ограничены по углам символами '+' (ASCII 43).

Промежуток между столбцами, а также поля слева, справа и сверху гистограммы должны составлять один символ. В основании (нижней строке) гистограммы промежутки и поля должны изображаться символом '-' (ASCII 45), все остальные промежутки и поля — символом '.' (ASCII 46).

Формат входного файла
Входной файл содержит число N, за которым следуют числа a1, a2, …, aN.

Формат выходного файла
Выходной файл должен содержать max(ai) + 3 строк длиной 6 N + 1 символов каждая — изображение гистограммы.

Пример выходного файла:

....................
...........+---+.
..........|###|.
..........|###|.
..........|###|.
..........|###|.
.+---+.|###|.
.|###|.|###|.
-+---+-+---+-
Заранее всем спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2012, 10:32
Ответы с готовыми решениями:

Гистограмма
Всем доброго времени суток, подскажите есть ли в питоне средства для создания гистограммы...

Гистограмма
Диаграмма, в которой значения отображаются в виде разных по высоте столбиков, называется...

Гистограмма
Здравствуйте, моя программа выполняет 59 из 66 тестов. Подскажите, как её изменить. Гистограмма...

Гистограмма
написать программу, которая будет отображать гистограммы атрибута длины чашелистика отдельно для...

Вертикальная гистограмма
Добрый день! Есть горизонтальная гистограмма: 1 ₽₽₽₽₽ 5 2 ₽₽₽ 3 Как сделать вертикальную? ...

5
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
14.03.2012, 12:42 2
Для удобства (своего) изменил формат входного файла: в нем просто указаны числа.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python3
 
def get_numbers(f):
    return [int(line) for line in f]
 
 
def column(number, height):
    edge = '.' * (height - number) + '+' + '|' * number + '+'
    line = '.' * (height - number) + '-' + '#' * number + '-'
    sep = '.' * (height + 1) + '-'
 
    return map(lambda x: ''.join(x), zip(edge, line, line, line, edge, sep))
 
 
def histogram(numbers):
    height = max(numbers) + 1
 
    horizontal = ['.' * (height + 1) + '-'] + \
        [column(number, height) for number in numbers]
 
    return map(lambda *x: ''.join(x), *horizontal)
 
 
if __name__ == '__main__':
    try:
        from sys import exit
        
        with open('output.txt', 'w', encoding='utf-8') as fout, \
                open('input.txt', 'r', encoding='utf-8') as fin:
            
            numbers = get_numbers(fin)
            
            print(*histogram(numbers), sep='\n', file=fout)
 
    except Exception as e:
        exit(e)
Код
[nameless@desktop python]$ cat input.txt
5
8
1
10 
4
12
[nameless@desktop python]$ ./sample.py
[nameless@desktop python]$ cat output.txt
.....................................
...............................+---+.
...............................|###|.
...................+---+.......|###|.
...................|###|.......|###|.
.......+---+.......|###|.......|###|.
.......|###|.......|###|.......|###|.
.......|###|.......|###|.......|###|.
.+---+.|###|.......|###|.......|###|.
.|###|.|###|.......|###|.+---+.|###|.
.|###|.|###|.......|###|.|###|.|###|.
.|###|.|###|.......|###|.|###|.|###|.
.|###|.|###|.+---+.|###|.|###|.|###|.
.|###|.|###|.|###|.|###|.|###|.|###|.
-+---+-+---+-+---+-+---+-+---+-+---+-
[nameless@desktop python]$
1
1 / 1 / 0
Регистрация: 29.12.2011
Сообщений: 13
14.03.2012, 12:50  [ТС] 3
Ошибка в строке: print(line, file = fout)


Python
1
2
3
4
5
6
7
8
9
10
ith open('output.txt', 'w', encoding='utf-8') as fout, \
                open('input.txt', 'r', encoding='utf-8') as fin:
            
            numbers = get_numbers(fin)
            
            for line in histogram(numbers):
               print(line, file = fout)
 
    except Exception as e:
        exit(e)
помогите исправить, пожалуйста) язык я начала изучать совсем недавно, поэтому, пока в нем я практически ничего не понимаю
Заранее большое спасибо)
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
14.03.2012, 12:53 4
Цитата Сообщение от I'm Juliya Посмотреть сообщение
Ошибка в строке: print(line, file = fout)
и какая ошибка, мне видно нужно самому догадаться... Хотя, скорее всего, не совпадают версии интерпретаторов.
Цитата Сообщение от I'm Juliya Посмотреть сообщение
язык я начала изучать совсем недавно, поэтому, пока в нем я практически ничего не понимаю
это не отговорка: было бы желание — понимала бы.

Дам подсказку. Нужно посмотреть, каков формат оператора «print» во втором питоне, и немножко переписать программу
0
1 / 1 / 0
Регистрация: 29.12.2011
Сообщений: 13
14.03.2012, 15:15  [ТС] 5
Ошибка синтаксиса там. У меня версия интерпретатора 2.7.2
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
14.03.2012, 15:26 6
Цитата Сообщение от I'm Juliya Посмотреть сообщение
Ошибка синтаксиса там. У меня версия интерпретатора 2.7.2
еще раз:

Цитата Сообщение от Nameless One Посмотреть сообщение
Дам подсказку. Нужно посмотреть, каков формат оператора «print» во втором питоне, и немножко переписать программу
1
14.03.2012, 15:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2012, 15:26
Помогаю со студенческими работами здесь

Гистограмма в python
Доброго времени суток! подскажите пожалуйста как быть. Есть данные получаемые из таблицы excel по...

Гистограмма с накоплением
Диаграмма, в которой значения отображаются в виде разных по высоте столбиков, называется...

Стековая гистограмма
По определению Википедии, стековая гистограмма отображает зоны, представляющие свойства одной...

Гистограмма matplotlib
привет. нигде не найду русскую доку мо данной библиотеке. есть у меня такие данные. телефон,...

Гистограмма matplotlib.pyplot
Всем привет. Есть алфавит и текст, символы которого принадлежат алфавиту, необходимо построить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru