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

Гистограмма

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

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

Входной файл: 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
Ответы с готовыми решениями:

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

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

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

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

5
Эксперт С++
5826 / 3477 / 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
Эксперт С++
5826 / 3477 / 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
Эксперт С++
5826 / 3477 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
14.03.2012, 15:26 6
Цитата Сообщение от I'm Juliya Посмотреть сообщение
Ошибка синтаксиса там. У меня версия интерпретатора 2.7.2
еще раз:

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

Двойная (2+) гистограмма со строковыми значениями по оси X
Основная задача - по оси X - имена, а по Y - какая-то цифра. Например колл. золотых и серебряных...

Гистограмма
Помогите, есть задача: с клавиатуры вводится число n < 20, заполнить массив длинной n рандомными...

Гистограмма
Подобрать такой числовой ряд 0-100, чтобы гистограмма выравнивалась экспонентом. Гистограмму я...

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

Гистограмма
Программирую на C# использую VS 2008 Для моей программы нужно построить гистограмму. В которой...

Гистограмма
Дано предложение.Нарисовать вертикальную гистограмму символов этого предложения.


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

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

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