Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 18:29   #1
Harle
 
Регистрация: 10.01.2010
Сообщений: 3
По умолчанию Подскажите как исправить отображение пузырьков в столбик, так что бы они отображались в строчку и...

Думаю название темы теперь подходит если нет подскажи как еще назвать, а то фантазия у меня бедная и больная...
Помогите немного курсовую переделать, а то сроки поджимают надо вторую делать по С++
Сейчас она имеет вид: (0- пузырь)
% %
0 0
% %
0 0
, ,
А надо сделать так:
0 % 0 ,
% 0 % ,
0 % 0 ,
% 0 % , Тоесть надо выводить их не в столбик, а в строчку и проценты чередовать, то сверху то снизу...
Кому это легко подскажите что и где исправить... Буду очень благодарен
Текст программы
//
//Курсавая работа
//Программа Рисования Пузырьковой Процентной Диаграммы
uses GraphABC,Events;
var
masd,masp:array[1..100]of real; //Массив данных,Массив процентов
mascolor:array[1..200]of integer;//Массив цветов
i,ic,j,kd,xmax,ymax:integer; //Переменные циклов,счетчики,размеры окна для урезания окна
sd:real; //Сумма данных
f:text; //Файловая Переменная
c:char; //Символьная переменная необходимая для считывания данных с файла
st:string; //Строковая переменная необходимая для считывания данных с файла
{
Функция FlagDraw это функция проверки возможности рисования
Входные данные: x,y,rc - координаты центра окружности и радиус этой окружности
Выходные данные: Логическое значение True - возможность нарисовать окружность
False - не возможность ресования
}
function FlagDraw(x,y,rc:integer):boolean;
var
xi,yi,r,di,lim,s,ss:integer;
label 1,2,3,4,5,6,7;
begin
result:=true;
r:=rc;
xi:=0; yi:=r; di:=2*(1-r); lim:=0;
1: if (getPixel(xi+x,yi+y)<>clwhite)then result:=false;
if (getPixel(xi+x,-yi+y)<>clwhite)then result:=false;
if (getPixel(-xi+x,yi+y)<>clwhite)then result:=false;
if (getPixel(-xi+x,-yi+y)<>clwhite)then result:=false;
if yi<lim then goto 4;
if di<0then goto 2;
if di>0then goto 3;
if di=0 then goto 6;
2: s:=2*di+2*yi-1;
if s<=0then goto 5;
if s>0then goto 6;
3: s:=2*di+2*xi-1;
if s<=0then goto 6;
if s>0then goto 7;
5:xi:=xi+1;
di:=di+2*xi+1;
goto 1;
6:xi:=xi+1;
yi:=yi-1;
di:=di+2*xi-2*yi+2;
goto 1;
7:yi:=yi-1;
di:=di-2*yi+1;
goto 1;
4:
end;
procedure DrawCircle(var xd,yd,rd:integer);forward;//Объявление что процедура DrawCircle будет описанна позже

{
Процедура HelpDrawCircle вызывает процедуру рисования DrawCircle
Входные данные: arrpr,n - Массив процентов,Размер массива процентов
}
procedure HelpDrawCircle(var arrpr:array[1..100]of real;n:integer);
var
x,y,r,rt,winx,winy:integer;
begin
for i:=1 to n do
begin
winx:=windowwidth;
winy:=windowheight;
if (winy*2)>(winx) then
rt:=round(winx/6)
else
rt:=round(winy/3);
r:=round((round(arrpr[i]))+rt/5);//Определение радиуса окружности
x:=r;
y:=r+20;
DrawCircle(x,y,r);
{
Вызов процедуры Рисования Окружности с параметрами
x,y,r - Центр окружности и её радиус
}
end;
SetWindowWidth(xmax+r+20);
SetWindowHeight(ymax+r+20);
{
Установка размеров окна
xmax и ymax - Переменные хронящие максимальные значения координаты
Центра окружности,вычисляемые при рисовании окружностей
}
end;
{
Процедура Redraw сробатывает при изменении размера окна
Процедура очищяет окно,обнуляет щетные переменные
И вызывает процедуру HelpDrawCircle с параметрами
masp,kd - Глобальный Массив процентов,Глабальная переменная хранящая число данных
}
procedure Redraw;
begin
if ((WindowWidth>400)and(WindowHeight> 150))then
begin
clearwindow;
ic:=1;xmax:=0;ymax:=0;
HelpDrawCircle(masp,kd);
end;
end;
{
Процедура DrawCircle это процедура рисования окружностей
Входные данные: xd,yd,rd - Центр окружности и её радиус
Результат работы процедуры Одна Окружность нарисованная в графическом окне
В свободном месте
}
procedure DrawCircle(var xd,yd,rd:integer);
var
s:string;
rt,winx,winy:integer;
flag:boolean;
begin
s:='';
flag:=true;
s:=inttostr(round(masp[i]))+'%';// s - Строка в которой хранится
Harle вне форума Ответить с цитированием
Старый 11.01.2010, 18:29   #2
Harle
 
Регистрация: 10.01.2010
Сообщений: 3
По умолчанию

Процентное значение для каждого данного
while flag do
begin
if (FlagDraw(xd,yd,rd)=true)and(FlagDr aw(xd,yd,rd+20)=true)and(FlagDraw(x d,yd,rd+10)=true) then
{
Наиважнейшее условие рисование окружности
Вызов функции проверки возможности рисования FlagDraw с парамитрами xd,yd,rd
Центр окружности и её радиус
Также проверяется rd+20,rd+10 радиус окружности больше на 10 и 20 пикселей
Для возможности вывода Информации о процентнах
}
begin
circle(xd,yd,rd); //Рисование Окружности
floodfill(xd,yd,mascolor[ic]); //Заливка окружности цветом из Глобального Массива Цветов
textout(xd-10,yd-rd-17,s); //вывод Информации о Процентном значении
flag:=false;
ic:=ic+1;
end
else
begin
yd:=yd+20;
if (xd>=WindowWidth)and(yd>=WindowHeig ht)then
begin
xd:=0;yd:=0;
rd:=round((round(masd[i]))-rt/5);
ClearWindow;
HelpDrawCircle(masp,kd);
flag:=false;
end;
if (yd>=WindowHeight)then
begin
xd:=xd+10;
yd:=0;
end;
end;
end;
if (xd>xmax)then xmax:=xd;
if (yd>ymax)then ymax:=yd;
end;
{ОСНОВНАЯ ПРОГРАММА}
Begin
setwindowsize(400,300); //Установка Размеров окна
CenterWindow; //Центрирование Окна
st:='';
j:=1;
xmax:=0;ymax:=0;
Assign(f,'fd.txt'); //Связь файловой переменной с Файлом на диске
//====Проверка Сушествования файла на диске===
if (FileExists('fd.txt')=false) then
begin
textout(round(WindowHeight/2)-30,130,'Фаил с Данными на диске не найден!');
halt;
end
else
reset(f);//Открытие файла
//====Проверка формата файла=============
while not(eof(f)) do
begin
read(f,c);
if ((c<>' ')and(c<>'.')and ((ord(c)<48)or(ord(c)>57)))then
begin
textout(round(WindowHeight/2)-30,130,'Фаил имеет не правильный формат!');
close(f);
halt;
end;
end;
close(f); //Закрытие файла
reset(f); //Открытие файла
//=====Опроделение кол-ва данных==
while c<>' ' do
begin
read(f,c);
if c<>' ' then
st:=st+c;
end;
kd:=strtoint(st);
st:='';
c:=#0;
//======Создание Массива Цветов==
for ic:=1 to kd do
mascolor[ic]:=rgb(random(255),random(255),rando m(255));
{
Генерация Случайного Значения кода цвета для процедуры rgb()
Запись кода цвета возвращяемого процедурой rgb() в Глобальный Массив Цветов
}
ic:=1;
//=====Создание Массива Данных==
while not(eof(f)) do
begin
while c=' ' do
read(f,c);
c:=#0;
while not(eof(f))and (c<>' ') do
begin
read(f,c);
st:=st+c;
end;
if st<>' ' then
begin
masd[j]:=strtofloat(st);
j:=j+1;
end;
st:='';
c:=#0;
end;
//====Подсчет суммы данных==
for i:=1 to j-1 do
sd:=sd+masd[i];
//====Создание массива процентов==
for i:=1 to j-1 do
begin
masp[i]:=(masd[i]*100)/sd;
end;
HelpDrawCircle(masp,kd); //Вызов процедуры HelpDrawCircle
OnResize:=redraw; //Событие срабатывающие при изменениях окна
close(f); //Закрытие файла
end.
Harle вне форума Ответить с цитированием
Старый 12.01.2010, 20:21   #3
Harle
 
Регистрация: 10.01.2010
Сообщений: 3
По умолчанию

Что нет умных что ли...
Harle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт выводит в столбик а надо в строчку zander PHP 2 04.01.2010 21:53
Как сделать так, чтобы в корректно отображались русские буквы(С) Александр Елис Помощь студентам 0 06.11.2009 19:39
Подскажите! как сделать так что бы при выборе какого либо наименования в раскрывающемся списке в соседней xниколай Microsoft Office Excel 1 14.10.2009 17:10
Как сделать так,чтобы в StatusBar-е отображались некоторые сведения из БД???? Alexij БД в Delphi 1 16.06.2008 07:53
Как сделать так, чтобы в TLabel отображались текущее системное время? Bill Gates Общие вопросы Delphi 3 03.01.2008 01:12