IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> секторная диаграмма
Ульяна
сообщение 13.12.2005 19:51
Сообщение #1


Гость






Помогите пожалуйста с програмкой! У меня 20 зачет по программированию mega_chok.gif , а я незнаю как решить!

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

Даны семь действительных положительных чисел. Построить секторную диаграмму для этих значений. Заданные числа разместить во внешнем файле (последовательный доступ).

Я начала решать но ничего не выходит. Вот мое решение:

Код

uses Graph;

const
   r = 120;
var
   a : array [1..100] of integer;
   i : integer;
   s : real;
   alfa : array [1..100] of real;
   x, y : array [1..100] of integer;
   Gd, Gm : Integer;
   Radius : Integer;
begin
   writeln ('введите 7 действительных чисел - ');
   for i := 1 to 7 do
      readln (a[i]);
   Gd := Detect;
   InitGraph(Gd, Gm, ' ');
      if GraphResult <> grOk then
     Halt(1);
   Circle(320, 240,r);
   s := pi*r*r;
   for i := 1 to 7 do
      alfa[i] := 2*a[i] / (r*r);
   line (320,240,320,120);
   i := 7;
   while i>0 do begin
      i := i-1;
      x[i] := trunc(320 + r*cos(alfa[i]));
      y[i] := trunc(240 + r*sin(alfa[i]));
      line (320,240,x[i],y[i]);
   end;
   Readln;
   CloseGraph;
end.
 К началу страницы 
+ Ответить 
volvo
сообщение 13.12.2005 20:14
Сообщение #2


Гость






Я бы делал так (пока числа читаются с клавиатуры... Чтение из файла не должно вызвать проблем...):
uses Graph;

const
numSectors = 12;
var
grads: array[0 .. numSectors] of integer;

var
a : array [1..100] of integer;
i, p, x, y : integer;
s: real;
ac: ArcCoordsType;

Gd, Gm : Integer;
begin
writeln('enter the numbers (7): ');
for i := 1 to 7 do begin
write('#', i:2, ' = '); readln (a[i]);
s := s + abs(a[i]);
end;

grads[0] := 0;
for i := 1 to 7 do
grads[i] := grads[i-1] + Trunc((360 / s) * a[i]);

Gd := Detect;
InitGraph(Gd, Gm, ' ');
if GraphResult <> grOk then Halt(1);

x := 200; y := 200;
Ellipse(x, y, 0, 360, 103, 53);

For p := 1 To 7 Do Begin
SetColor(White);
Ellipse(x, y, Grads[Pred(p)], Grads[p], 100, 50);

GetArcCoords(ac);
With ac Do Begin
Line(x, y, xStart, yStart);
Line(x, y, xEnd, yEnd);

SetFillStyle(SolidFill, p);
FloodFill( (xStart+xEnd) div 2,
(yStart+yEnd) div 2, White);
End;
End;
Readln;
CloseGraph;
end.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"