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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2009, 08:54   #1
Devil55
Новичок
Джуниор
 
Регистрация: 18.02.2009
Сообщений: 2
По умолчанию Посмотрите что не так, я весь мозг сломал...

Здравствуйте!!! Преветствую всех!
Хотел бы узнать что я не правильно написал в коде программ:
Дело в том что есть две задачи:
1)Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат.
2) Построить график y=cos2x+sinx, для вычисления значения y составить подпрограмму-функцию.
Так вот...я раньше не работал в паскале а приходится,написал под 2ое задание прогу а она не работет, подскажите что не так. Пишет "Cannot Graph...." ну что то на подобе... Посмотри на код может поможете?
И может посмотрите, может какие ошибк есть, это все таки моя первая прога на паскале.... на счет первого я не понял как такое можно сделать..
(2)
Код:
Program UniversalGraph;
Uses Graph;

Type Fun = Function(X:Real):Real;

Procedure Graphic(F:Fun; XBeg,XEnd:Real);
Var
Max, Min,
I,
Step,
GradX,
GradY: Real;
GraphicX,
GraphicY: Integer;
Flag: Boolean;

Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real);
Var GradX, GradYX: Real;
X, Y: Integer;
Color: Word;
Begin
  Color:=GetColor;
  SetColor (7);
  GradX :=GetMaxX/(CoordYEnd-CoordYBeg);
  GradYX:=GetMaxY/(CoordHMax-CoordHMin);
  If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg));
  If CoordYEnd<0 Then Y:=GetMaxY;
  If CoordYBeg>0 Then Y:=1;
  If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax));
  If CoordHMin>0 Then X:=GetMaxY;
  If CoordHMax<0 Then X:=1 ;
  Line (1,X,GetMaxX,X);
  Line (GetMaxX-4,X+5,GetMaxX,X);
  Line (GetMaxX-4,X-5,GetMaxX,X);
  Line (Y,1,Y,GetMaxY);
  Line (Y-5,5,Y,1);
  Line (Y+5,5,Y,1);
  SetColor (Color);
End;


Begin
  Step:=(XEnd-XBeg)/(GetMaxY-40);
  I:=XBeg;
  Max:=F(XBeg);
  Min:=F(XBeg);
  While I<=(XEnd+Step) Do
    Begin
      If Max<F(I) Then Max:=F(I);
        If Min>F(I) Then Min:=F(I);
  I:=I+Step;
    End;
  GradX:=GetMaxX/(XEnd-XBeg);
  GradY:=GetMaxY/(Max-Min);
  Coord (XBeg, XEnd, Min, Max);
  Flag:=True;
  I:=XBeg;
  While I<=(XEnd+Step) Do
    Begin
      GraphicX:=Round(GradX*(I-XBeg));
      GraphicY:=Round(GradY*(Max-F(I)));
      If Flag Then
        MoveTo (GraphicX,GraphicY);
      LineTo(GraphicX,GraphicY);
      I:=I+Step;
      Flag:=False;
    End;

End;

Function F1(X:Real):Real;
  Begin
     F1:=Sin(x)+COS(2x);
End;

Procedure GraphicIni;
Var
Mode, DriverDet: Integer;
Begin
Mode:=0;
DriverDet:=Detect;
InitGraph(Mode,DriverDet,'C:\Program Files\TURBO PASCAL 7.1\UNITS\');
SetColor(15);
End;

Begin 
GraphicIni; 
Graphic(F1,-10,10); 
ReadLn; 
CloseGraph; 
End.

Последний раз редактировалось rpy3uH; 18.02.2009 в 08:59.
Devil55 вне форума Ответить с цитированием
Старый 18.02.2009, 10:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А путь без пробелов пробовал? или просто пустую строку уж коли драйвер автодетектом ставиш.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.02.2009, 14:45   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Видимо у Вас в папке BIN нет модуля Graph.tpu. Переместите его туда(скопируйте) из папки UNITS. Кроме того пару синтактических ошибок и неверно описан функциональный тип. Вот поправил, у меня нормально работает.
Код:
Program UniversalGraph;
Uses Graph;

Type Fun = Function(X:Real):Real;
{$F+}
Function F1(X:Real):Real;
  Begin
     F1:=Sin(x)+COS(2*x);
End;
{$F-}
Procedure Graphic(F:Fun; XBeg,XEnd:Real);
Var
Max, Min,
I,
Step,
GradX,
GradY: Real;
GraphicX,
GraphicY: Integer;
Flag: Boolean;

Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real);
Var GradX, GradYX: Real;
X, Y: Integer;
Color: Word;
Begin
  Color:=GetColor;
  SetColor (7);
  GradX :=GetMaxX/(CoordYEnd-CoordYBeg);
  GradYX:=GetMaxY/(CoordHMax-CoordHMin);
  If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg));
  If CoordYEnd<0 Then Y:=GetMaxY;
  If CoordYBeg>0 Then Y:=1;
  If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax));
  If CoordHMin>0 Then X:=GetMaxY;
  If CoordHMax<0 Then X:=1 ;
  Line (1,X,GetMaxX,X);
  Line (GetMaxX-4,X+5,GetMaxX,X);
  Line (GetMaxX-4,X-5,GetMaxX,X);
  Line (Y,1,Y,GetMaxY);
  Line (Y-5,5,Y,1);
  Line (Y+5,5,Y,1);
  SetColor (Color);
End;


Begin
  Step:=(XEnd-XBeg)/(GetMaxY-40);
  I:=XBeg;
  Max:=F(XBeg);
  Min:=F(XBeg);
  While I<=(XEnd+Step) Do
    Begin
      If Max<F(I) Then Max:=F(I);
        If Min>F(I) Then Min:=F(I);
  I:=I+Step;
    End;
  GradX:=GetMaxX/(XEnd-XBeg);
  GradY:=GetMaxY/(Max-Min);
  Coord (XBeg, XEnd, Min, Max);
  Flag:=True;
  I:=XBeg;
  While I<=(XEnd+Step) Do
    Begin
      GraphicX:=Round(GradX*(I-XBeg));
      GraphicY:=Round(GradY*(Max-F(I)));
      If Flag Then
        MoveTo (GraphicX,GraphicY);
      LineTo(GraphicX,GraphicY);
      I:=I+Step;
      Flag:=False;
    End;

End;



Procedure GraphicIni;
Var
Mode, DriverDet: Integer;
Begin
Mode:=0;
DriverDet:=Detect;
InitGraph(Mode,DriverDet,'C:\Program Files\TURBO PASCAL 7.1\UNITS\');
SetColor(15);
End;

Begin 
GraphicIni; 
Graphic(F1,-10,10);
ReadLn; 
CloseGraph; 
End.
puporev вне форума Ответить с цитированием
Старый 18.02.2009, 18:31   #4
Devil55
Новичок
Джуниор
 
Регистрация: 18.02.2009
Сообщений: 2
По умолчанию

Спасибо!!! Огромное спасибо всем!!!
Devil55 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так? Viento Microsoft Office Excel 3 30.01.2009 14:38
посмотрите, пожалуста, что у меня не работает Grief Помощь студентам 2 26.01.2009 21:01
Что то не так с переменными.. adwaer Помощь студентам 1 19.06.2008 08:42
плиз форумчане посмотрите что здесь не правильно _Solomon_ Помощь студентам 6 07.06.2007 13:54
Что-то не так Radiofuck Помощь студентам 2 16.01.2007 22:06