|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
17.02.2010, 22:45 | #1 (permalink) |
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. |
17.02.2010, 22:45 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Сперва лучше всего заняться прочтением похожих обсуждений, которые были созданы ранее Pascal Pascal Pascal Программка со строковым типом данных, Turbo Pascal На Pascal Pascal |
17.02.2010, 23:26 | #5 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Надо не просто Readkey, а Key:=Readkey; Кроме того, а где у Вас описана метка, к которой Вы пытаетесь перейти? Не вижу что-то. А еще не закрыта функция f (не поставлен end). Как у Вас при этом программа транслируется, ума не приложу. P.S. Запускал я эту программу. Ну рисует кубическую параболу. И ради этого стоило столько воротить? |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
18.02.2010, 14:08 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну что Вы, право, какие пустяки - 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. |
18.02.2010, 21:30 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|