Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Paskal] Задачи по графике


Автор: Caragius 8.6.2008, 12:36
Помогите решить задачку на Паскале 


Столбчатая диаграмма (гистограмма) представляет собой набор прямоугольников, основания которых равны, а высоты пропорциональны числовым величинам, взятым из некоторой совокупности. Прямоугольники диаграммы обычно закрашивают в разные цвета. Даны семь действительных положительных чисел а1,…,а7. Построить гистограмму для этих значений.

user posted image

Автор: Caragius 8.6.2008, 13:11
Кто-нибудь может помочь ? Пожалуйста ...

Автор: THandle 8.6.2008, 14:27
Языка такого не знаю даже близко(Paskal). Быть может правильно Pascal?

Автор: ama_kid 8.6.2008, 15:53
Caragius, что считать максимумом для гистограммы? От какой величины брать относительное значение?

Автор: Caragius 8.6.2008, 16:53
THandle, , прости , описался ...


ama_kid, никакие величины не указаны, тоесть могут быть любые 

Автор: ama_kid 8.6.2008, 21:18
Код
uses crt,graph;
const
 MAXBYTE = 255;
 MAXNUMBER = 100;
var
 gd,gm:integer;
 NumCount :byte;
 i:integer;
 FillInfo:FillSettingsType;
 A:array[1..MAXBYTE] of longint;
 iDivider:real;

function IntToStr(I: Longint): String;
var
 S: string[11];
begin
 Str(I, S);
 IntToStr := S;
end;

begin
 clrscr;
 write('Input count of numbers =');
 readln(NumCount);
 for i:=1 to NumCount do
  begin
   repeat
    write('Input ',i,'-th number =');
    readln(A[i]);
   until (A[i]>=0)and(A[i]<=MAXNUMBER);
  end;
 InitGraph(gd,gm,'');
 if GraphResult<>grOk then
  begin
   writeln('Graphic not initialized. Probably *.bgi file not found.');
   exit;
  end;
 randomize;
 GetFillSettings(FillInfo);
 SetColor(white);
 Rectangle(20-2,100-20,620+2,400+2);
 iDivider:=600/NumCount;
 SetTextStyle(SmallFont, HorizDir, 4);
 for i:=1 to NumCount do
  begin
   SetFillStyle(FillInfo.Pattern,Random(15)+1);
   Bar(20+trunc((i-1)*iDivider),400,20+trunc((i-1)*iDivider)+trunc(iDivider) - 5,400-A[i]*3);
   OutTextXY(20+trunc((i-1)*iDivider),400-A[i]*3-20,IntToStr(A[i]));
  end;
 readkey;
 CloseGraph;
end.

Автор: Caragius 8.6.2008, 21:27
Спасибо !!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)