График курса доллара, нужна помощь |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
График курса доллара, нужна помощь |
Рэнэ |
Сообщение
#1
|
Гость |
Написать программу, которая выводит на экран графики динамики изменения максимального, минимального и среднего курсов
доллара за заданное количество дней. Показать градацию осей. Исходные данные сформировать в текстовом файле. Построение графика оформить в виде процедур. Параметры процедуры: массив дат, количество дней, массивы максимальных, минимальных и средних значений курса доллара. Изображение должно занимать большую часть. Программа не должна опираться на конкретные значения экрана. Даже не знаю с чего начать, хоть подкиньте какую-нибудь похожую программу... так сказать для примера |
Рэнэ |
Сообщение
#2
|
Гость |
С процедурами я вроде бы разобралась, но вот сам вывод графика что-то не получается... точки он выводит верно, но вот линии от одной точки до другой выводяться неправильно, но что хуже он рисует от последней выведенной точки линию вниз к оси (но ее быть не должно)... время поджимает, а никак понять не могу в чем тут дело?
Цитата Program Grafic; Uses Crt, Graph; Const n=20; Type MasData = Array[1..n] of Integer; MasMax = Array[1..35] of Real; MasMin = Array[1..35] of Real; MasSred = Array[1..35] of Real; Var x: integer; b: MasData; d: MasData; e: MasData; c : MasMax; k:MasMin; l: MasSred; y:real; St : String[4]; A,i, Mx, Mx01, Mx09, Msx, My, My09, My005, Msy : Integer; F1: Text; {-------Выход из графического режима----------} PROCEDURE grafika_off; BEGIN closegraph; END; {-------Переход в графический режим----------} PROCEDURE grafika_on; var Ga, Gm, Error : Integer; BEGIN Ga := Detect; Gm := Detect; InitGraph (Ga, Gm, 'c:\bp\bgi'); Error := GraphResult; If Error <> Grok Then Begin Writeln('Ошибка!Графический драйвер не найден',#10#13,GraphErrorMSG (Error)); Halt; End; End; {-------Вывод данных из файла----------} Procedure Vivod(var b: MasData;c: MasMax;d: MasData;k:MasMin;e: MasData;l: MasSred); Begin Assign (F1, 'c:\Vivod.txt'); Reset (F1); While Not EOF (F1) do begin For i:=1 to n do Read(F1,b[i],c[i]); LineTo(round(Mx01+Msx*b[i]), round(My09-Msy*c[i]),100); Read(F1,d[i],k[i]); LineTo(round(Mx01+Msx*d[i]), round(My09-Msy*k[i]),10); Read(F1,e[i],l[i]); LineTo(round(Mx01+Msx*e[i]), round(My09-Msy*l[i]),10); end; Close (F1); End; {-------Определение используемых значений----------} procedure Opredelenie; Begin Mx := GetMaxX; Mx01 := Round (0.1* Mx); Mx09 := Round (0.9* Mx); My := GetMaxY; My09 := Round (0.9*My); My005 := Round (0.05* My); SetColor (12); end; {-------Вывод осей координат----------} procedure osikoord; begin Line (20, My09, Mx-10, My09); Line (Mx01, My005, Mx01, My-9); {Risovanie strelok} Line (Mx-20, My09-3, Mx-10, My09); Line (Mx-20, My09+3, Mx-10, My09); Line (Mx01, My005, Mx01-3, My005+10); Line (Mx01, My005, Mx01+3, My005+10); {Nadpisi po osam X u Y} SetTextStyle (0, 0, 2); SetColor(14); OutTextXY (Mx01-40, My005, ' Y '); OutTextXY (Mx-40, My09-25, ' X '); SetTextStyle (0, 0, 1); SetColor(12); End; {-------Разметка осей----------} procedure Razmetka; begin {Разметка оси Y} Msy := Round (My09 / 40); y := 1; While y<=35 Do Begin Str (Y, St); A := Round (My09 - Msy * y); Line (Mx01+2, A, Mx01-2, A); OutTextXY (Mx01-40, A-2, St); y := y+1; End; {Разметка оси x} Msx := Round (Mx09 / 20); x := 1; While x<=n Do Begin Str (x+1, St); A := Round (Mx01 + Msx * x); Line (A, My09+3, A, My09-3 ); OutTextXY (A, My09+5, St); x := x + 1; end; SetColor(2); end; {-------Вывод графика----------} Procedure VivodGraph; Begin Opredelenie; osikoord; Razmetka; Vivod(b,c,d,k,e,l); readln; End; {-------Основная программа----------} BEGIN grafika_on; VivodGraph; grafika_off; END. Сообщение отредактировано: Рэнэ - |
Текстовая версия | 18.04.2024 8:28 |