Нодо доделать программу, по графику СИНУСА - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Надо написать программу которая будет строить график Синуса. Я уже поработал над этим, но осталось пару моментов над которыми долго ломаю голову, Я организовал кнопки CLEAR и END, надо поработать над кнопкой NEW, чтобы при ее нажатии был запрос на новый вод параметра "а". Пока что у меня параметр "а" один - это a:=1.5; надо организовать ввод новых данных с клавиатуры для параметра "а", Красный пустой квадратик слева по середине отведен как раз для этого. Помогите пожалуйста буду очень признателен!!
ПОмогите очень надо!!
ПОмогите очень надо!!

Решение задачи: «Нодо доделать программу, по графику СИНУСА»

textual
Листинг программы
 program MyGraph;
uses Graph, Crt;
var xMax, yMax:integer;
a, x, y: extended;
i, x1, y1, k1, k2: integer;
S: string;
ch: char;
label 1,2;
procedure GraphInit;
var
  grDriver: integer;
  grMode: integer;
  ErrCode: integer;
 
begin
    grDriver := Detect;
    InitGraph(grDriver, grMode,'C:\Langs\bp\bgi\');
    ErrCode := GraphResult;
    if ErrCode <> grOk then
      begin
         Writeln('Graphics error:', GraphErrorMsg(ErrCode));
         repeat until KeyPressed;
          Halt;
      end;
      xMax:=GetMaxX;
      yMax:=GetMaxY;
end;
procedure Button(x1,y1,x2,y2:integer;st:string);
   begin
 
   SetfillStyle(1,4);
   Bar(x1,y1,x2,y2);
 
   OuttextXy(x1+5,y1+(y2-y1)div 2,st);
   end;
 
 
Begin
 GraphInit;
 Button(50,420,200,460,'   New');
 Button(250,420,400,460,'  Clear');
 Button(450,420,600,460,'  Exit');
 SetColor(red);
 Rectangle(0,0,xMax,yMax);
 Line(200,0,200,400);
 Line(0,400,xMax,400);
 Rectangle(20,50,180,320);
 Rectangle(20,330,180,390);
 SetColor(Green);
 Line(220,200,620,200);
 Line(620,200,610,190);
 Line(620,200,610,210);
 Line(400,20,400,380);
 Line(400,20,410,30);
 Line(400,20,390,30);
 SetColor(white);
 Button(100,50,180,70,'   Y');
 Button(20,50,100,70,'   X');
 Line(100,50,100,320);
 Setfillstyle(2,2);
 Button(20,20,180,40,'     Graphick');
 k1:=25;
 k2:=50;
 a:=1.5; x:=-6.75;
 
  for i:=1 to 135 do
  begin
    y:=a*Sin(x);
    x:=x+0.1;
    x1:=Round(k1*x);
    y1:=Round(k2*y);
    PutPixel(x1+400,-y1+200,yellow);
  end;
  for i:=1 to 30 do
  begin
    y:=a*Sin(x);
    x:=x+2;
    str(y:8:4,S);
    OutTextXY(100,70+8*i,S);
    str(x:8:4,S);
    OutTextXY(25,70+8*i,S);
  end;
  2:  ch:=readkey;
  case ch of
   'C','c':
    begin
      SetViewPort(201,1,xMax-1,399,clipon);
      ClearViewPort;
      SetViewPort(0,0,xMax,yMax,clipon);
      SetColor(Green);
      Line(220,200,620,200);
      Line(620,200,610,190);
      Line(620,200,610,210);
      Line(400,20,400,380);
      Line(400,20,410,30);
      Line(400,20,390,30);
      goto 2;
    end;
    'N','n':begin
            outtextXY(25,355,'a=');
            gotoXY(8,23);
            readln(a);
            x:=-6.75;
            {процедура рисования графика цветом фона}
            {процедура рисования графика в нормальных цветах}
            {просто для теста}
            for i:=1 to 135 do
             begin
              y:=a*Sin(x);
              x:=x+0.1;
              x1:=Round(k1*x);
              y1:=Round(k2*y);
              PutPixel(x1+400,-y1+200,yellow);
             end;
            for i:=1 to 30 do
             begin
              y:=a*Sin(x);
              x:=x+2;
              str(y:8:4,S);
              OutTextXY(100,70+8*i,S);
              str(x:8:4,S);
              OutTextXY(25,70+8*i,S);
             end;
            end;
    'E','e':Halt;
    else goto 2;
    end;
 
          repeat until KeyPressed;
 CloseGraph;
End.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы