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

Гистограмма массива

04.02.2010, 12:30. Показов 2232. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите что мне надо изменить в процедуре что бы в диаграмме показывались и отрицательные значения?

Pascal
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
procedure diagramma;
 var i,x1,x2,y1,y2,dx,q:integer;
     ky:real;
     max:real;
begin
 window(1,3,80,25);
 textbackground(0);
 clrscr;
 max:=a[1];
  for i:=2 to n do
   if a[i]>max then
    max:=a[i];
    ky:=18/max;
    dx:=(60-n) div n;
    x1:=1;
    y2:=25;
    c:=1;
     for i:=1 to n do
      begin
       x2:=x1+dx;
       y1:=y2-round(a[i]*ky);
       window(x1,y1,x2,y2);
       textbackground(c);
       clrscr;
       write(a[i]);
       inc(c);
       if c=8 then c:=1;
       x1:=x2+1;
      end;
 end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2010, 12:30
Ответы с готовыми решениями:

Гистограмма успеваемости
Написать программу, которая выводит на экран гистограмму успеваемости студентов группы, например,...

Массив гистограмма
Кто может написать прогу, которая строит из массива случайных чисел вертикальную гистограмму?

Столбчатая диаграмма (гистограмма)
Столбчатая диаграмма (гистограмма) представляет собой набор прямоугольников, основания которых...

Гистограмма в графическом режиме.
ВВести три числа.Построить по ним гистограмму на языке Pascal.

3
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.02.2010, 12:37 2
lav88, Может суть задания напишешь и всю программу покажешь? А так одна процедура вообще не работает.

Добавлено через 2 минуты
А вообще нужно ось Х пускать не на линии 25, а или просто по середине и считать не только максимальное, но и минимальное, а масштаб по оси У брать с учетом макс-мин. Значения положительные рисовать вверх, отрицательные вниз, как на обычном графике. Просто гистограммы обычно рисуют для положительных чисел.
0
2 / 2 / 0
Регистрация: 29.01.2010
Сообщений: 59
04.02.2010, 12:49  [ТС] 3
Pascal
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
37
38
39
40
41
42
43
44
45
46
47
48
uses crt;
const n=15;
var a:array[1..n] of integer;
 nechet,k,c,i,s,q:integer;
procedure diagramma;
 var i,x1,x2,y1,y2,dx,q:integer;
     ky:real;
     max:real;
begin
 window(1,3,80,25);
 textbackground(0);
 clrscr;
 max:=a[1];
  for i:=2 to n do
   if a[i]>max then
    max:=a[i];
    ky:=18/max;
    dx:=(60-n) div n;
    x1:=1;
    y2:=25;
    c:=1;
    for i:=1 to n do
      begin
       x2:=x1+dx;
       y1:=y2-round(a[i]*ky);
       window(x1,y1,x2,y2);
       textbackground(c);
       clrscr;
       write(a[i]);
       inc(c);
       if c=8 then c:=1;
       x1:=x2+1;
      end;
 end;
BEGIN
 clrscr;
  randomize;
   for i:=1 to n do
    begin
     a[i]:=random(200)-150;
     write(a[i]:4,' ');
      end;
      diagramma;
      writeln;
       readkey;
 
 end.
 end.
вот сама программа
А нужно одномерный массив показать в виде диаграммы и что бы показывались и полож и отрицательные значения
В данный момент у меня показываются только положительные
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.02.2010, 14:01 4
Вот так посмотрите.
Pascal
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
uses crt;
const n=15;
var a:array[1..n] of integer;
 nechet,k,c,i,s,q:integer;
procedure diagramma;
 var i,x1,x2,y1,y2,dx,q,k:integer;
     ky:real;
     max,min:integer;
begin
 window(1,3,80,25);
 textbackground(0);
 clrscr;
 max:=a[1];min:=a[1];
 for i:=1 to n do
   begin
    if a[i]>max then max:=a[i];
    if a[i]<min then min:=a[i];
   end;
 if max>abs(min) then  ky:=9/max else ky:=9/abs(min);
 dx:=(60-n) div n;
 x1:=1;
 y2:=13;
 for i:=1 to n do
  begin
   x2:=x1+dx;
   k:=i mod 8;
   if k in[0,7] then k:=k+3;
   if a[i]>=0 then
    begin
     y1:=y2-round(a[i]*ky);
     window(x1,y1,x2,y2);
     textbackground(k);
     clrscr;
     write(a[i]:3);
    end
   else
    begin
     y1:=y2-round(a[i]*ky);
     window(x1,y2+1,x2,y1+1);
     textbackground(k);
     clrscr;
     gotoXY(1,abs(round(a[i]*ky)));
     write(a[i]);
    end;
  x1:=x2+1;
 end;
end;
BEGIN
clrscr;
randomize;
for i:=1 to n do
 begin
  a[i]:=random(200)-100;
  write(a[i]:4);
 end;
diagramma;
readkey;
end.
1
04.02.2010, 14:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2010, 14:01
Помогаю со студенческими работами здесь

Паскаль-массивы, матрицы , гистограмма.
1.Построить гистограмму для действительных положительных чисел а1, а2...а7. раскрасив ...

Гистограмма
Столбчатая диаграмма (гистограмма) представляет собой набор прямоугольников, основания которых...

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

гистограмма
помогите сделать легенду и чтобы квадратики были широкие uses crt; Var a,b:array of byte; ...


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

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

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