• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

К какому типу данных относиться key ? Pascal.

  • Автор темы Автор темы mary yu
  • Дата начала Дата начала

mary yu

Новые
Регистрация
6 Янв 2010
Сообщения
14
Реакции
0
Баллы
0
К какому типу данных относиться key ? Pascal.

Код:
program sharik;
uses graph,crt;
var
x1,x2:integer;
y1,y2:real;
x,xx,xx1,xx2:real;
y,yy:real;
dx:real;
l,b,k,i:integer;
w,h:integer;
mx,my:real;
x0,y0:integer;
st:string;
key:char;
function f(x:real):real;
begin
f:=x*x*x;
begin
clrscr;
i:=0;
InitGraph(i,i,'i:\prg\tp\bgi');
textcolor(5);
gotoxy(22,8);
writeln('Laboratornay rabota 3');
readln;
clrscr;
setfillstyle(1,0);
floodfill(0,0,0);
settextstyle(0,0,1);
setcolor(2);
outtextxy(50,100,'Vvedite levju granitsy(>-5):');
textcolor(green);
gotoxy(8,8);
readln(x1);
setcolor(2);
outtextxy(50,150,'Vvedite pravju granitsy(<5):');
gotoxy(8,11);
readln(x2);
setcolor(4);
outtextxy(50,200,'Vvedite skoroct k:=1-10');
gotoxy(8,14);
readln(k);
k:=100*k;
k:=1000-k;
clrscr;
setfillstyle(1,0);
floodfill(0,0,0);
settextstyle(0,0,1);
dx:=0.01;
l:=10;
b:=420;
h:=440;
w:=600;

y1:=f(x1);
y2:=f(x2);
x:=x1;
   while x<=x2 do
     begin
       y:=f(x);
       if y<y1 then y1:=y;
       if y<21 then y2:=y;
       x:=x+dx;
     end;
my:=h/ abs(y2-y1)+50;
mx:=w/ abs(x2-x1)+50;

x0:=300;
y0:=220;
setcolor(3);
line(x0,b+h,x0,b-h);
line(x0-w,y0,x0+w,y0);
setcolor(4);
str(y2:5:1,st);
str(x1:5,st);
str(x2:5,st);

x:=x1;
  while x<=x2 do
   begin
     y:=f(x);
   Putpixel(x0+round(x*mx/2),y0-round(y*my/2),4);

x:=x+dx;
   end;
x:=x2;
  while x<=x2 do
   begin
   setcolor(0);
  circle(x0+round((x-dx)*mx/2),y0-round(f(x-dx)*my/2),8);
  setfillstyle(1,0);
  floodfill(x0+round((x-dx)*mx/2),y0-round(f(x-dx)*my/2),0);
  setcolor(4);
  setfillstyle(1,1);
  circle(x0+round(x*mx/2),y0-round(f(x)*my/2),8);
  floodfill(x0+round(x*mx/2),y0-round(f(x)*my/2),red);
  xx:=x1+x/2;
  xx2:=x;
   delay(k*10);
   while xx<=xx2 do
   begin
   yy:=f(xx);
   putpixel(x0+round(xx*mx/2),y0-round(yy*my/2),5);

   xx:=xx+dx;
   end;
   setcolor(3);
   line(x0,b+h,x0,b-h);
   line(x0-w,y0,x0+w,y0);
   setcolor(13);
   {str(y2;5;1,st);
   outtextxy(x0,5,st);
   str(y1:5:st);
   outtextxy(x0,y0-9,st);}
   str(x1:5,st);
   outtextxy(0,y0+2,st);
   str(x2:5,st);
   outtextxy(w-5,y0+5,st);
   setcolor(6);
   outtextxy(100,100,'Grafik y=x^3');
   {y:=f(x);
   putpixel(x0+round(x),y0-round(10),5);}
   x:=x+dx;end;readln;
   closegraph;
   gotoxy(10,10);
   write('Povtorit?(y/n)');
   readkey;
   if key ='y' then goto 1;
   end.
 
А зачем Вы приложили программу?
Кстати, она не рабочая.
 
выразила key:char; Правильно?
Но теперь не может определить 1 после goto.
 
выразила key:char; Правильно?
Но теперь не может определить 1 после goto.
Нет. Не правильно.
Надо не просто Readkey, а Key:=Readkey;
Кроме того, а где у Вас описана метка, к которой Вы пытаетесь перейти? Не вижу что-то. А еще не закрыта функция f (не поставлен end). Как у Вас при этом программа транслируется, ума не приложу.
P.S. Запускал я эту программу. Ну рисует кубическую параболу. И ради этого стоило столько воротить?
 
а шарик по параболе катиться?^^'
Если не затруднит, можете представить исправленный код?
 
а метку да, забыла поставить,торопилась на паре....
 
Если не затруднит, можете представить исправленный код?
Ну что Вы, право, какие пустяки - 2-3 часика работы, связанной в основном с разгадыванием смысла задания, и вот:

Код:
program sharik;
uses graph,crt;
var
 x1,x2:integer;
 y1,y2:real;
 x,xx,xx1,xx2:real;
 y,yy:real;
 dx:real;
 l,b,k,i:integer;
 w,h:integer;
 mx,my:real;
 x0,y0:integer;
 st:string;
 key:char;

function f(x:real):real;
begin
f:=x*x*x;
end;

begin
 i:=0;
 InitGraph(i,i,'i:\prg\tp\bgi');
 ClearDevice;
 SetColor(5);
 SetTextStyle(DefaultFont,HorizDir,3);
 SetTextJustify(CenterText,CenterText);
 OutTextXY((GetMaxX div 2),(GetMaxY div 2),'Laboratornaya rabota 3');
 Delay(1000);
 RestoreCRTMode;
 ClrScr;
 TextColor(2);
 Write('Vvedite levju granitsy(>-5): ');
 ReadLn(x1);
 Write('Vvedite pravju granitsy(<5): ');
 ReadLn(x2);
 Write('Vvedite skoroct k:=0-10 ');
 ReadLn(k);
 SetGraphMode(GetGraphMode);
 SetLineStyle(SolidLn,0,NormWidth);
 k:=1000-k*100;
 dx:=0.01;
 h:=440;
 w:=600;

 y1:=f(x1);
 y2:=f(x2);

 If (x1<0) and (x2>0) then
  mx:=w/abs(x2-x1) else
 If (x1<0) and (x2<0) then
  mx:=w/(-x1) else
  mx:=w/x2;
 If (y1<0) and (y2>0) then
  my:=h/abs(y2-y1) else
 If (y1<0) and (y2<0) then
  my:=h/(-y1) else
  my:=h/y2;

 If (x1<0) and (x2>0) then
  begin
   x0:=320-(w div 2)-Round(x1*mx);
   y0:=240-(h div 2)+Round(y2*my);
  end else
 If (x1<0) and (x2<0) then
  begin
   x0:=620;
   y0:=20;
  end else
  begin
   x0:=20;
   y0:=460;
  end;

 Repeat
  ClearDevice;
  setcolor(3);
  line(x0,((480-h) div 2),x0,((480+h) div 2));
  line(((640-w) div 2),y0,((640+w) div 2),y0);
  setcolor(4);

  x:=x1;
  while x<=x2 do
   begin
    y:=f(x);
    Putpixel(x0+round(x*mx),y0-round(y*my),4);
    x:=x+dx;
   end;
  SetTextStyle(DefaultFont,HorizDir,1);
  SetTextJustify(CenterText,TopText);
  SetColor(13);
  Str(x1,st);
  OutTextXY(x0+round(x1*mx),y0+4,st);
  Str(x2,st);
  OutTextXY(x0+round(x2*mx),y0+4,st);
  SetColor(6);
  OutTextXY(100,100,'Grafik y=x^3');

  x:=x1;
  while x<=x2 do
   begin
    setcolor(0);
    circle(x0+round((x-dx)*mx),y0-round(f(x-dx)*my),8);
    setfillstyle(1,0);
    floodfill(x0+round((x-dx)*mx),y0-round(f(x-dx)*my),0);
    setcolor(4);
    setfillstyle(1,1);
    circle(x0+round(x*mx),y0-round(f(x)*my),8);
    floodfill(x0+round(x*mx),y0-round(f(x)*my),red);
    xx:=x1;
    xx2:=x;
    delay(k);
    while xx<=xx2 do
     begin
      yy:=f(xx);
      putpixel(x0+round(xx*mx),y0-round(yy*my),5);
      xx:=xx+dx;
     end;
    setcolor(3);
    line(x0,((480-h) div 2),x0,((480+h) div 2));
    line(((640-w) div 2),y0,((640+w) div 2),y0);
    x:=x+dx;
   end;
   SetTextStyle(DefaultFont,HorizDir,2);
   SetTextJustify(CenterText,CenterText);
   OutTextXY(480,360,'Povtorit?(y/n)');
   Key:=ReadKey;
  Until (Key='n') or (Key='N');
end.

Исправил. А то в предыдущей версии асимметричные интервалы неправильно отрабатывались.
 
Vladimir_S ,спасибо, мой спаситель!
буду больше ботать, чтобы Вас не беспокоить
 
Vladimir_S ,спасибо, мой спаситель!
буду больше ботать, чтобы Вас не беспокоить
Ну... надеюсь, что Вы всё-таки будете больше работать, а не "ботать" (по фене):D. Но в любом случае - успехов!
 
Назад
Сверху