ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Turbo Pascal. Круговая диаграмма
  #1  
Старый 15.02.2010, 11:34
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию Turbo Pascal. Круговая диаграмма

Пишу курсовик. Надо построить круговую диаграмму.
Сектора строятся правильно, а вот надписи к ним ставятся под каким-то непонятным углом.
Код:
	on:array [1..100] of string[20];
	oc:array [1..100] of integer;
...
Код:
	{ Вывести on[..] и oc[..] в порядке убывания oc }
	angle_pred:=0;
	clrscr;
  DetectGraph(Device, Mode);
	InitGraph(Device, Mode, 'EGAVGA.BGI');
  SetTextStyle(3, HorizDir, 2);
  SetFillStyle(11, 11);
	repeat
		f := false;
		m := -1; { Текущее наибольшее значение oc }
		for i := 1 to 100 do
		begin
			if oc[i] > m then
			begin
				i2 := i;
				m := oc[i];
				f := true;
			end;
		end;
		if (f = true) then
		begin
      if (oc[i2] > 0) then
      begin
        { Вывести часть диаграммы }
        angle := angle_pred + Trunc(oc[i2] / c * 360);
				setcolor(12);
				for a:=0 to 45 do
				begin
					Line(200, 200, 200 + Trunc(120 * cos(a)), 200 + Trunc(120 * sin(a)));
				end;
{
				Str(angle, tmp);
				outtextxy(200 + Trunc(120 * cos(angle)), 200 + Trunc(120 * sin(angle)), tmp);
}
				setcolor(i2);
				setfillstyle(i2, i2);
				setlinestyle(0, 0, 1);
				PieSlice(200, 200, angle_pred, angle-1, 100);
      	angle_pred := angle;
      end;
			oc[i2] := -1;
		end;
	until (f = false) or ((i=100) and (oc[i2]=0));
	ReadKey;
	CloseGraph;
	RestoreCrtMode;
собственно проблема отмечена красным. По идее должен рисоваться сектор, закрашенный красным, а на практике получается что красные линии раскиданы равномерно по всей диаграмме.
Может быть надо какой-то флаг компилятора включить или что?

Последний раз редактировалось ZagZag; 15.02.2010 в 11:37..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи. Turbo Pascal Richard С/С++, C#, Delphi, .NET, Asm 13 18.05.2009 21:13
turbo pascal sadfeel С/С++, C#, Delphi, .NET, Asm 0 28.02.2009 19:37
СРОЧНО!!! Turbo Pascal MAG0t Разное - Покупка, продажа, обмен 3 23.12.2008 18:36
TURBO PASCAL 7 1.0 Daemond С/С++, C#, Delphi, .NET, Asm 1 03.12.2008 22:32



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ