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

Столбчатая диаграмма

31.05.2010, 02:35. Показов 1737. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте помогите чайнику, вот код программы, она выводит одномерный массив и по нему столбчатаю диограмму, диограмма выводит только положительные числа а надо что бы еще и отрицательные, и если можно что бы диограмма была горизонтальная а не вертикальная спасибо!
вот код

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
uses Crt;
const
DiagTop = 10;
DiagBot = 25;
DiagLeft = 20;
DiagRight = 70;
var
N,t,i, j, SizeX, SizeY, M,y, X : Integer;
 dX, dY, MaxData: Real;
A: array[1..10] of Integer;
 
begin
ClrScr;
write('n=');
readln(n);
writeln('vvedite elementy');
for i:=1 to n do
read(a[i]);
writeln('massiv');
for i:=1 to n do
writeln(a[i]);
for i:=1 to n do
 
 for j:=2 to n do
if a[j]>a[j-1] then begin
t:=a[j];
a[j]:=a[j-1];
a[j-1]:=t;
end;
writeln('sortirovka');
for i:=1 to n do
write(a[i]);
readln;
 
 
GoToXY(28,1);
WriteLn('Диаграмма  ');
{рисуем оси}
  for i:=DiagTop to DiagBot do begin GoToXY(DiagLeft,i);Write(Chr(179)); end;
  for i:=DiagLeft to DiagRight do begin GoToXY(i,DiagBot);Write(Chr(196)); end;
  GoToXY(DiagLeft,DiagBot);
  Write(Chr(192));
 
  {размеры диаграмы}
  SizeY := DiagBot - DiagTop;
  SizeX := DiagRight - DiagLeft;
 
  {ищем максимальный осадок}
  MaxData := 0;
  for i:=1 to N do if MaxData < A[i] then MaxData := A[i];
 
  {масштабные коэффициенты}
  dY := SizeY/MaxData;
  dX := SizeX/N;
 
  for i:=1 to N do begin
    M := Round((-A[i]*0.95+MaxData)*dY + DiagTop);
    X := Round((i-0.5)*dX)+DiagLeft;
 
    GoToXY(X-3,M-1);
    Write(a[i]);      {значение величины}
 
    {столбики}
    for j:=M to DiagBot-1 do begin
      GoToXY(X,j);
      Write(Chr(219));
    end;
    GoToXY(X,DiagBot);
    Write(Chr(223));
 
    {шкала Х}
    GoToXY(X,DiagBot+1);
    Write(i);
  end;
  GoToXY(1,1);
  ReadLn; {чтобы посмотреть}
end.






Top, Bot, Left, Right это границы области диаграммы в знакоместах. Правый верхний угол имеет координаты (1,1)
SizeX и SizeY - размеры области диаграммы. Понадобятся в дальнейшем.
dX, dY - масштабные коэффициенты, чтобы независимо от значения данных, они поместились в область диаграммы.
Х и М приведенное значение величины данных в координатах экрана.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2010, 02:35
Ответы с готовыми решениями:

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

Круговая диаграмма
1. Построить круговую диаграмму, отображающую процентное соотношение отличников, хорошистов и...

Круговая Диаграмма
Здравствуйте! Имеются машины 6 различных марок (Opel, Renault, Seat, Fiat, Volvo, Toyota) нужно...

Graph. Секторная диаграмма
Доброго времени суток дорогие форумчане. Нужна помощь в написании программы: Секторная...

1
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
31.05.2010, 07:09 2
Вот пример гистограммы с положительными и отрицательными значениями, дальше сами, нужно же учиться думать и писать код.
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.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2010, 07:09
Помогаю со студенческими работами здесь

Записи и графика (столбцовая диаграмма)
Доброго времени суток :) Есть задача, которая выводит успеваемость студентов: Program Lab14_10;...

Дискретная математика диаграмма Хассе
Помогите нарисовать диаграмму Хассе для упорядоченности делителей множества М =...

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

Столбчатая диаграмма (гистограмма)
даны семь действительных чисел а1...а7. Построить гистограмму для этих значений. для большей...


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

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

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