1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Построение линейной диаграммы (данные из файла), Как изминить процедуру построения линии
Доброе время суток. Помогите люди добрые Составить (очень желательно изминить имеющуюся) программу, которая прочитает данные из файла и интерпретирует их в виде линейной диаграммы. Нужно как-то изминить процедуру построения линии , чтоб координата конца 1 линии была координатой начала 2 линии, и т.д. (5 значений в файле, 4 линии) Ниже имеется измученная мной прога,
Program lineynay; Uses Crt,Graph; Const x=50; y=450; { х и у - горизонтальная и вертикальная графические координаты левого нижнего угла диаграммы } var x1 ,x2, grdr, grmd, st,i:integer; f:text; s1,s2,s3,s4,s5:integer;
Procedure Lin(c,k:integer; s:string; var xl,x2:integer);
{ данная процедура для каждой категории строит линию в диаграмме и добавляет соответствующую запись в легенду; с - цвет текущей линии, k - число, относящееся к текущей линии, s - переменная, содержащая текст записи, которая заносится в легенду; x1 - горизонтальная координата правой границы предыдущей линии, x2 - верхняя граница текущей записи в легенде } begin SetColor( c ); {цвет линии}
x1:=x1+50; {смещение начала следующей линии в диаграммы} SetColor(15); {цвет легенды} OuttextXY(x2,460,s); {надпись легенды} x2:=x2+50; {смещение след надписи легеды} end;
begin ClrScr; {чистим экран} assign(f,'GRAFIK.TXT'); {связывает f с файлом 'GRAFIK.TXT'} reset(f); {открывает для чтения файл f} while not eof(f) do {делать пока не конец файла} Begin readln(f,s1,s2,s3,s4,s5);end; {считывает из f во вспомогательные переменные} close(f); grdr:=detect; {автоопределение графического адаптера} InitGraph(grdr, grmd,'');{иницыализация графики} x1:=x-30; {координаты первого столбца по х} x2:=55; {координаты первой легенды по у} Line(x,y,x+325,y) ;{горизонтальная линия} Line(x,100,x,y); {вертикальная линия} OuttextXY(x-20,y,'0'); Line(x-3,y-100,x+3,y-100); OuttextXY(x-20,y-100,'5'); Line(x-3,y-200,x+3,y-200); OuttextXY(x-20,y-200,'10'); Line(x-3,y-300,x+3,y-300); OuttextXY(x-20,y-300,'15');
СПАСИБО за помощь вот окончательно замученная прога. Правда может с "орфографией" не очень, но зато работает.
Program Grafik_ALL; Uses Crt,Graph; label metka1,metka2,metka3; Const x=50; y=450; var x1,x2,grdr,grmd,st,i,ugol,y3,sum,s1,s2,s3,s4,s5,v:integer; f:text; s : array[1..5] of integer;
begin ClrScr; Writeln('Вас приветствует программа деловая графика.'); Writeln('Выбирите желаемый график для представления числовых данных из файла.'); Writeln('1)-Линейный'); Writeln('2)-Круговой'); Writeln('3)-Столбиковый'); Readln(v); {Выбор пользователя} Case v of 1: Goto metka1; 2: Goto metka2; 3: Goto metka3; end; Begin; metka1: ClrScr; {чистим экран} assign(f,'GRAFIK.TXT'); {связывает f с файлом 'GRAFIK.TXT'} reset(f); {открывает для чтения файл f} for i:=1 to 5 do ReadLn(f, s[i]);{считывает из f во вспомогательные переменные s[i]} close(f); grdr:=detect; {автоопределение графического адаптера} InitGraph(grdr, grmd,'');{иницыализация графики}
x1:=x-30; {координаты первой линии по х} x2:=45; {координаты первой легенды по у} Line(x,y,x+325,y) ;{горизонтальная линия} Line(x,100,x,y); {вертикальная линия} OuttextXY(x-20,y,'0');{надпись цены деления} Line(x-3,y-100,x+3,y-100); {черта цены деления} OuttextXY(x-20,y-100,'5'); Line(x-3,y-200,x+3,y-200); OuttextXY(x-20,y-200,'10'); Line(x-3,y-300,x+3,y-300); OuttextXY(x-20,y-300,'15');{надпись цены деления}
{построение графика по данным из файла} Lin(yellow, s[1],s[2], 'A1', x1, x2); Lin(magenta, s[2],s[3], 'A2', x1, x2); Lin(green, s[3],s[4], 'A3', x1, x2); Lin(lightred, s[4],s[5], 'A4', x1, x2); OuttextXY(x2,460,'A5'); {вывод легенды для 5-го значения}
{*************} begin metka2: ClrScr; assign(f,'GRAFIK.TXT'); {связывает f с файлом 'GRAFIK.TXT'} reset(f); {открывает для чтения файл f} while not eof(f) do {делать пока не конец файла} Begin readln(f,s1,s2,s3,s4,s5); {считывает из f во вспомогательные переменные} end; close(f); grdr:=detect; InitGraph(grdr, grmd, '');
{******************} begin metka3: ClrScr; {чистим экран} assign(f,'GRAFIK.TXT'); {связывает f с файлом 'GRAFIK.TXT'} reset(f); {открывает для чтения файл f} while not eof(f) do {делать пока не конец файла} Begin readln(f,s1,s2,s3,s4,s5); {считывает из f во вспомогательные переменные} end; close(f);
grdr:=detect; InitGraph(grdr, grmd,'');{определение видео режима} x1:=x-29; {координаты первого столбца по х} x2:=55; {координаты первой легенды по у} Line(x,y,x+325,y) ;{горизонтальная линия} Line(x,100,x,y); {вертикальная линия} OuttextXY(x-20,y,'0'); Line(x-3,y-100,x+3,y-100); OuttextXY(x-20,y-100,'5'); Line(x-3,y-200,x+3,y-200); OuttextXY(x-20,y-200,'10'); Line(x-3,y-300,x+3,y-300); OuttextXY(x-20,y-300,'15');