Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 17.02.2010, 22:45   #1 (permalink)
mary yu
Member
 
Регистрация: 06.01.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию К какому типу данных относиться 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.
mary yu вне форума   Ответить с цитированием

Старый 17.02.2010, 22:45
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Сперва лучше всего заняться прочтением похожих обсуждений, которые были созданы ранее

Pascal
Pascal
Pascal
Программка со строковым типом данных, Turbo Pascal
На Pascal
Pascal

Старый 17.02.2010, 22:57   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от mary yu Посмотреть сообщение
К какому типу данных относиться key?
К литерному. Значением переменной Key может быть ОДИН символ - буква, цифра, знак, пробел и т.п.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.02.2010, 23:02   #3 (permalink)
DDS
Member
 
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
По умолчанию

А зачем Вы приложили программу?
Кстати, она не рабочая.
DDS вне форума   Ответить с цитированием
Старый 17.02.2010, 23:16   #4 (permalink)
mary yu
Member
 
Регистрация: 06.01.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

выразила key:char; Правильно?
Но теперь не может определить 1 после goto.
mary yu вне форума   Ответить с цитированием
Старый 17.02.2010, 23:26   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от mary yu Посмотреть сообщение
выразила key:char; Правильно?
Но теперь не может определить 1 после goto.
Нет. Не правильно.
Надо не просто Readkey, а Key:=Readkey;
Кроме того, а где у Вас описана метка, к которой Вы пытаетесь перейти? Не вижу что-то. А еще не закрыта функция f (не поставлен end). Как у Вас при этом программа транслируется, ума не приложу.
P.S. Запускал я эту программу. Ну рисует кубическую параболу. И ради этого стоило столько воротить?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 17.02.2010, 23:42   #6 (permalink)
mary yu
Member
 
Регистрация: 06.01.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а шарик по параболе катиться?^^'
Если не затруднит, можете представить исправленный код?
mary yu вне форума   Ответить с цитированием
Старый 17.02.2010, 23:42   #7 (permalink)
mary yu
Member
 
Регистрация: 06.01.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а метку да, забыла поставить,торопилась на паре....
mary yu вне форума   Ответить с цитированием
Старый 18.02.2010, 14:08   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от mary yu Посмотреть сообщение
Если не затруднит, можете представить исправленный код?
Ну что Вы, право, какие пустяки - 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 вне форума   Ответить с цитированием
Старый 18.02.2010, 21:06   #9 (permalink)
mary yu
Member
 
Регистрация: 06.01.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Vladimir_S ,спасибо, мой спаситель!
буду больше ботать, чтобы Вас не беспокоить
mary yu вне форума   Ответить с цитированием
Старый 18.02.2010, 21:30   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от mary yu Посмотреть сообщение
Vladimir_S ,спасибо, мой спаситель!
буду больше ботать, чтобы Вас не беспокоить
Ну... надеюсь, что Вы всё-таки будете больше работать, а не "ботать" (по фене). Но в любом случае - успехов!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:07.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.