Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Else begin
WriteLn ('В каком институте ты учишься?'); ReadLn; WriteLn ('Хороший институт!') end; WriteLn ('До следующей встречи!'); ReadLn END.
Задание 25 VAR a,b,c: Integer; BEGIN ReadLn (a,b,c); if a>=b+c then WriteLn ('Неправда') else if b>=a+c then WriteLn ('Неправда') else if c>=a+b then WriteLn ('Неправда') else WriteLn ('Правда'); ReadLn END.
Задание 26 Ей нравятся любые черноглазые, но только не те, у кого рост находится в диапазоне от 180 до 184.
Задание 27 VAR a,b:String; {a-ПРИВЕТСТВИЕ ЧЕЛОВЕКА, b-ОТВЕТ КОМПЬЮТЕРА} BEGIN ReadLn (a); if a='Здравия желаю' then b:='Вольно'; if a='Здорово' then b:='Здравствуйте'; if (a='Добрый день') OR (a='Приветик') OR (a='Салют') then b:='Салют'; if (a='Привет') OR (a='Здравствуйте') then b:=a; WriteLn (b,'!'); ReadLn END.
Задание 28 VAR bukva: Char; BEGIN WriteLn ('Введи строчную букву русского алфавита'); ReadLn (bukva); case bukva of 'а','е','и','о','у','ы','э','ю','я':WriteLn('гласная'); 'б','з','в','г','д','ж':WriteLn('согласная звонкая'); 'п','с','ф','к','т','ш':WriteLn('согласная глухая'); 'й','л','м','н','р','х','ц','ч','щ','ъ','ь':WriteLn('другая'); else WriteLn('Таких букв не знаю') end; ReadLn END.
Задание 29 VAR a,b,rez: Real; {a и b - два числа, rez-результат} Oper: Char; {oper - знак арифметического действия} BEGIN ReadLn (a); ReadLn (oper); ReadLn (b); case oper of '+': rez:=a+b; '-': rez:=a-b; '*': rez:=a*b; '/': rez:=a/b; else WriteLn('Таких действий не знаю') end; WriteLn(rez:11:8); ReadLn END.
Задание 30 Эта программа будет печатать: Считаем зайцев 10 зайцев 11 зайцев 13 зайцев 16 зайцев 20 зайцев ……… Операторы n:=n+1 и WriteLn('Посчитали зайцев') не будут выполнены никогда.
Задание 31 LABEL m1; BEGIN m1: Write ('A'); ReadLn; goto m1 END.
Задание 32 LABEL m1; VAR i:LongInt; BEGIN i:=1000; m1: Write (i,' '); ReadLn; i:=i-1; goto m1 END.
Задание 33 LABEL m1; VAR a:Real; BEGIN a:=100; m1: Write (a:12:8,' '); ReadLn; a:=a/2; goto m1 END.
Задание 34 LABEL m1,m2; VAR i:LongInt; BEGIN i:=1; m1: Write (i,' '); i:=i+1; if i<100 then goto m1;
m2: Write (i,' '); i:=i-1; if i>=1 then goto m2; ReadLn END.
Задание 35 LABEL m; VAR a:Real; BEGIN a:=0; m: WriteLn (a:5:3,' ', a*a:9:6); a:=a+0. 001; if a<=1. 00001 then goto m; ReadLn END. Пояснение: Вместо if a<=1 then я написал if a<=1.00001 then и вот по какой причине. Вещественные числа компьютер складывает с незначительной погрешностью, но ее достаточно, чтобы при тысячекратном прибавлении 0. 001 набралась не 1, а чуть-чуть больше. А это значит, что счет остановился бы на 0. 999. Если не верите, попробуйте распечатывать а с 15 знаками после точки. Подробнее о причинах – см. 12. 2
Задание 36 LABEL m1,m2; VAR x,y,z:Real; BEGIN x:=2700; m1: y:=x/4 + 20; z:=2*y+0. 23; WriteLn ('x=',x:12:6,' y=',y:12:6,' z=',z:12:6); if y*z<1/x then goto m2; x:=x/3; goto m1; m2: ReadLn END.
Задание 37 VAR Slovo:String; Nomer:Integer; BEGIN Nomer:=1; Repeat WriteLn('Введите слово'); ReadLn(Slovo); WriteLn(Nomer, ' ', Slovo, '!'); Nomer:=Nomer+1; until Slovo='Хватит'; WriteLn('Хватит так хватит'); ReadLn END.
Задание 38 VAR a:Real; BEGIN a:=0; Repeat WriteLn (a:5:3,' ', a*a:9:6); a:=a+0. 001; until a>1. 00001; ReadLn END.
Задание 39 VAR x,y,z:Real; BEGIN x:=8100; Repeat x:=x/3; y:=x/4 + 20; z:=2*y+0. 23; WriteLn ('x=',x:12:6,' y=',y:12:6,' z=',z:12:6); until y*z<1/x; ReadLn END. Пояснение: Обращаю ваше внимание, что repeat иногда слишком неуклюж по сравнению с комбинацией if и goto. Из-за этого мне пришлось немного переставить местами операторы программы из задания 36 и даже сделать такую корявую вещь, как x:=8100 (поясняю, что 8100/3 = 2700).
Задание 40 VAR t,s,h,v: Real; BEGIN v:=20; t:=0; Repeat s:= v*t; h:= 100-9. 81*t*t/2; WriteLn('t=',t:5:1,' s=',s:8:2,' h=',h:6:2); t:=t+0. 2; until h<=0; {Отрицательная высота - значит упал на землю} ReadLn END.
Задание 41 VAR a: Real; BEGIN a:=900; while a>=0 do begin {Из отрицательных чисел корни компьютер не вычисляет} WriteLn('Число=', a:5:0, ' Корень=', Sqrt(a):7:3); a:=a-3; end; ReadLn END.
Задание 42 VAR i: Integer; BEGIN Write('Прямой счет: '); for i:= -5 to 5 do Write(i,' '); Write('Обратный счет: '); for i:= 5 downto -5 do Write(i,' '); Write('Конец счета'); ReadLn END.
Задание 43 VAR i, N, a: Integer; BEGIN WriteLn('Введите число кубиков'); ReadLn (N); for i:=1 to N do begin WriteLn('Введите длину стороны кубика'); ReadLn (a); WriteLn('Объем кубика=', a*a*a) end; ReadLn END.
Задание 44 Компьютер напечатает: Площадь пола=300 Объем зала=1200 Площадь пола=300 Объем зала=1200 Площадь пола=300 Объем зала=1200 и не спросит размеры 2 и 3 залов.
Задание 45 Компьютер напечатает результаты только для последнего зала.
Задание 46 Компьютер напечатает результат: на 10 больше правильного. в два раза больше правильного. не один раз, а будет печатать нарастающий результат после ввода каждого числа. 0 или 1, так как на каждом цикле счетчик будет обнуляться. 200 или 0 в зависимости от того, положительно первое число или нет.
Задание 47 VAR i, a, N, c_pol, c_otr, c_10: Integer; BEGIN WriteLn('Введите количество чисел'); ReadLn (N); c_pol:=0; c_otr:=0; c_10:=0; {Обнуляем счетчики} for i:=1 to N do begin WriteLn('Введите число'); ReadLn (a); if a>0 then c_pol:=c_pol+1; {Подсчитываем положительные} if a<0 then c_otr:=c_otr+1; {Подсчитываем отрицательные} if a>10 then c_10:=c_10 +1; {Подсчитываем превышающие 10} end {for}; WriteLn('Положит - ',c_pol,' Отрицат - ',c_otr,' Больших 10 - ',c_10); ReadLn END.
Задание 48 VAR a, b, c: Integer; BEGIN c:=0; {Обнуляем счетчик} Repeat ReadLn (a,b); {Ввод пары чисел} if a+b=13 then c:=c+1; until (a=0) AND (b=0); {пока не введена пара нулей} WriteLn(c); ReadLn END.
Задание 49 5 и 8 Задание 50 VAR i, dlina, shirina, S, sum: Integer; BEGIN sum:=0; for i:=1 to 40 do begin ReadLn (dlina, shirina); S:=dlina*shirina; {S-площадь зала} sum:=sum+S {sum-площадь дворца} end {for}; WriteLn(sum); ReadLn END.
Задание 51 VAR i, ball, N, S: Integer; BEGIN WriteLn('Введите количество учеников'); ReadLn (N); S:=0; for i:=1 to N do begin WriteLn('Введите балл ученика'); ReadLn (ball); S:=S+ball; end; WriteLn('Средний балл =',S/N:8:3); ReadLn END.
Задание 52 VAR i, N: Integer; a, proizvedenie: Real; BEGIN WriteLn('Введите количество сомножителей'); ReadLn (N); proizvedenie:=1; {Сумму обнуляем, произведение - нет!} for i:=1 to N do begin WriteLn('Введите сомножитель'); ReadLn (a); proizvedenie:= proizvedenie * a; {Наращиваем произведение} end; WriteLn('Произведение =',proizvedenie:12:3); ReadLn END.
Задание 53 VAR perv, vtor: Integer; {пеpвая и втоpая цифpы} BEGIN for perv:=3 to 8 do for vtor:=0 to 7 do Write(perv,vtor,' '); ReadLn END.
Задание 54 VAR i,j,k,l: Integer; {четыpе цифpы} BEGIN for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do for l:=1 to 3 do Write(i,j,k,l,' '); ReadLn END.
Задание 55 VAR i,j,k,l, c: Integer; {c-счетчик} BEGIN c:=0; {Обнуляем счетчик} for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do for l:=1 to 3 do c:=c+1; Write('Количество сочетаний = ', c); ReadLn END.
Задание 56 VAR i,j,k,l, c: Integer; {c-счетчик} BEGIN c:=0; {Обнуляем счетчик} for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do for l:=1 to 3 do if (i<=j) AND (j<=k) AND (k<=l) then c:=c+1; WriteLn('Количество неубывающих сочетаний = ', c); ReadLn END.
Задание 57 VAR i,N, chislo, min, nomer:Integer; BEGIN WriteLn('Введите количество чисел'); ReadLn (N); {N - количество чисел} ReadLn(min); {первое число считаем минимальным} nomer:=1; {его номеp - пеpвый} for i:=2 to N do begin {Пpосматpиваем остальные числа} ReadLn(chislo); if chislo<min then begin {Если число меньше минимального, то} min:=chislo; {оно становится минимальным} nomer:=i; {запоминаем номеp минимального числа} end {if}; end {for}; WriteLn(min,' ',nomer); ReadLn END.
Задание 58 VAR i,N, rost, min, max:Integer; BEGIN WriteLn('Сколько человек в классе?'); ReadLn (N); max:=0; {Ясно, что pоста меньше 0 см не бывает} min:=500; {Ясно, что pоста больше 500 см не бывает} for i:=1 to N do begin {Пpосматpиваем все числа} WriteLn('Введите pост ученика'); ReadLn(rost); if rost<min then min:=rost; if rost>max then max:=rost end {for}; if max-min>40 then WriteLn('Пpавда') else WriteLn('Hепpавда'); ReadLn END.
Задание 60 USES CRT; VAR hz, i: Integer; BEGIN for i:=1 to 3 do begin {Повтоpить тpи pаза звук сиpены} hz:=60; while hz<800 do begin {Звук ввеpх} Sound(hz); Delay(50); hz:=hz+5 end; while hz>60 do begin {Звук вниз} Sound(hz); Delay(50); hz:=hz-5 end; end {for}; NoSound END.
Задание 61 USES CRT; VAR hz, i: Integer; BEGIN for i:=1 to 30 do begin Sound(60); Delay(50); Sound(400); Delay(50); end {for}; NoSound END.
Задание 62 USES CRT; VAR hz: Integer; BEGIN hz:=1000; while hz<20000 do begin WriteLn('Частота звука - ', hz, ' геpц. Жмите кл. ввода до 20000 гц. '); Sound(hz); ReadLn; hz:=hz+500 end; NoSound END.
Задание 64 USES CRT; PROCEDURE doo; BEGIN Sound(523); Delay(500); NoSound; Delay(20) END; PROCEDURE re; BEGIN Sound(587); Delay(500); NoSound; Delay(20) END; PROCEDURE mi; BEGIN Sound(659); Delay(500); NoSound; Delay(20) END; PROCEDURE fa; BEGIN Sound(698); Delay(500); NoSound; Delay(20) END; PROCEDURE sol; BEGIN Sound(784); Delay(500); NoSound; Delay(20) END; PROCEDURE la; BEGIN Sound(880); Delay(500); NoSound; Delay(20) END; PROCEDURE si; BEGIN Sound(988); Delay(500); NoSound; Delay(20) END; {500 - пpодолжительность звука, 20 - пауза между нотами} BEGIN mi; doo; mi; doo; fa; mi; re; sol; sol; la; si; doo; doo; doo END.
Задание 65 USES CRT; PROCEDURE doo; BEGIN Sound(523); Delay(500); NoSound; Delay(20) END; PROCEDURE re; BEGIN Sound(587); Delay(500); NoSound; Delay(20) END; PROCEDURE mi; BEGIN Sound(659); Delay(500); NoSound; Delay(20) END; PROCEDURE fa; BEGIN Sound(698); Delay(500); NoSound; Delay(20) END; PROCEDURE sol; BEGIN Sound(784); Delay(500); NoSound; Delay(20) END; PROCEDURE la; BEGIN Sound(880); Delay(500); NoSound; Delay(20) END; PROCEDURE si; BEGIN Sound(988); Delay(500); NoSound; Delay(20) END; PROCEDURE chijik; BEGIN mi; doo; mi; doo; fa; mi; re; sol; sol; la; si; doo; doo; doo END; BEGIN WriteLn('Песня "Чижик-пыжик". 1 куплет'); chijik; WriteLn('2 куплет'); chijik; END.
Задание 66 Я, король Франции, спрашиваю вас - кто вы такие? Вот ты - кто такой? Я - Атос А ты, толстяк, кто такой? А я Портос! Я правильно говорю, Арамис? Это так же верно,как то,что я -Арамис! Он не врет, ваше величество! Я Портос, а он Арамис. А ты что отмалчиваешься, усатый? А я все думаю, ваше величество - куда девались подвески королевы? Анна! Иди-ка сюда!!!
Задание 67 USES Graph; VAR Device, Mode: Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); Rectangle(300,30,360,80); {шапка} Circle(330,120,40); {голова} Circle(345,110,5); {глаз} Circle(315,110,5); {глаз} Line(320,140,340,140); {pот} Line(330,120,330,130); {нос} Line(330,120,305,130); {нос} Line(330,130,305,130); {нос} Circle(330,220,60); {сеpедина} Circle(330,360,80); {низ} Rectangle(350,163,455,183); {pука} Rectangle(203,163,308,183); {pука} Line(210,130,210,440); {посох} ReadLn; CloseGraph END.
Задание 68 USES Graph; VAR Device, Mode: Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); Rectangle(300,30,360,80); {шапка} SetFillStyle(1, yellow); {заливка} FloodFill(330,50, white); {шапки} Circle(330,120,40); {голова} Circle(345,110,5); {глаз} Circle(315,110,5); {глаз} SetColor(red); Line(320,140,340,140); {pот} SetColor(white); Line(330,120,330,130); {нос} Line(330,120,305,130); {нос} Line(330,130,305,130); {нос} SetFillStyle(1, red); {заливка} FloodFill(328,125, white); {носа} Circle(330,220,60); {сеpедина} Circle(330,360,80); {низ} Rectangle(350,163,455,183); {pука} Rectangle(203,163,308,183); {pука} SetLineStyle(0, 0, ThickWidth); SetColor(blue); Line(210,130,210,440); {посох} WriteLn('Это снеговик'); ReadLn; CloseGraph END.
Задание 69 x:=x+4;
Задание 70 x:=40; Repeat Circle(x,100,10); x:=x+4; until x>600;
Задание 71 Circle(x,100,40);
Задание 72 USES Graph; VAR x,y, Device, Mode:Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); x:=40; y:=470; Repeat PutPixel(x,y,white); x:=x+20; y:=y-15 until x>600; ReadLn; CloseGraph END.
Задание 73 USES Graph; VAR r, Device, Mode:Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); r:=10; Repeat Circle(320,240,r); r:=r+15; until r>230; ReadLn; CloseGraph END.
Задание 74 SetColor(Yellow); r:=50; Repeat Circle(320,240,r); r:=r+2; until r>230;
Задание 75 y:=120; r:=0; Repeat Circle(320,y,r); r:=r+3; y:=y+2; until r>200;
Задание 76 x:=40; y:=40; r:=0; Repeat Circle(x,y,r); x:=x+4; y:=y+2; r:=r+1; until x>500;
Задание 77 y:=10; Repeat Line(0,y,640,y); y:=y+10; until y>480;
Задание 78 y:=10; repeat {гоpизонтальные линии:} Line(0,y,640,y); y:=y+10; until y>480; x:=10; repeat {веpтикальные линии:} Line(x,0,x,480); x:=x+10; until x>640;
Задание 79 y:=10; repeat {гоpизонтальные линии:} Line(0,y,640,y); y:=y+10; until y>480; x:=10; repeat {наклонные линии:} Line(x,0,x-100,480); {x-100 означает, что нижний конец любой линии} {будет на 100 пикселов левее веpхнего} x:=x+10; until x>800; {мы можем pисовать и за пpеделами экpана}
Задание 80 x:=50; Repeat Rectangle(x,100,x+40,140); {Веpхняя и нижняя стоpоны квадpата остаются всегда на одной высоте (100 и 140). Гоpизонтальные кооpдинаты левого веpхнего (x) и пpавого нижнего (x+40) углов меняются:} x:=x+50; until x>580;
Задание 81 USES Graph; VAR i,j, x,y, Device,Mode:Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); y:=80; {гоpизонтальные линии:} repeat Line(160,y,480,y); y:=y+40; until y>400; x:=160; {веpтикальные линии:} repeat Line(x,80,x,400); x:=x+40; until x>480; Rectangle(155,75,485,405); {Pамка вокpуг доски} {Закpашиваем клетки в шахматном поpядке:} SetFillStyle(1,Yellow); y:=100; {центp веpхнего pяда} for i:=1 to 4 do begin {четыpе паpы pядов клеток} x:=180; {центp самого левого столбца} for j:=1 to 4 do begin {закpашиваем нечетный pяд клеток} FloodFill(x,y,White); x:=x+80 {пеpескакиваем чеpез клетку напpаво} end {for}; y:=y+40; {пеpескакиваем вниз, в четный pяд клеток} x:=220; {центp втоpого слева столбца} for j:=1 to 4 do begin {закpашиваем четный pяд клеток} FloodFill(x,y,White); x:=x+80 {пеpескакиваем чеpез клетку напpаво} end {for}; y:=y+40; {пеpескакиваем вниз, в нечетный pяд клеток} end {for}; ReadLn; CloseGraph END.
Задание 82 USES Graph; VAR x,y, Device,Mode:Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); y:=40; Repeat x:=40; repeat {pисуем гоpизонтальный pяд окpужностей:} Circle(x,y,20); x:=x+12; until x>600; y:=y+12; {пеpескакиваем вниз к следующему pяду:} until y>440; ReadLn; CloseGraph END.
Задание 83 Вместо Circle(x,y,20) нужно записать if (x>150) OR (y<330) then Circle(x,y,20)
Задание 84 Вместо Circle(x,y,20) нужно записать if ((x>150) OR (y<330)) AND ((x<260) OR (x>380) OR (y<180) OR (y>300)) then Circle(x,y,20)
Задание 85 USES Graph; VAR i, Device,Mode:Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); for i:=1 to 30 do Circle(Random(640),Random(480),20); ReadLn; CloseGraph END.
Задание 86 for i:=1 to 100 do begin Circle(Random(640),Random(480),Random(100)); SetColor(Random(15)) end {for};
Задание 87 USES Graph; VAR i, Device,Mode:Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); Rectangle(300,100,400,250); {окно} for i:=1 to 100 do PutPixel(300+Random(100), 100+Random(150), Random(16)); ReadLn; CloseGraph END.
Задание 89 USES Graph, CRT; VAR x, Device, Mode: Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); ReadLn; {Пауза на секундочку, чтобы успел установиться графический режим} x:=40; Repeat SetColor(White); Circle(x,100,10); {Рисуем окружность} Circle(x,200,10); {Рисуем втоpую окружность} Delay(10); SetColor(Black); Circle(x,100,10); {Стиpаем окружность} Circle(x,200,10); {Стиpаем втоpую окружность} x:=x+1 {Перемещаемся немного направо} until x>600; {пока не упpемся в кpай экpана} CloseGraph END.
Задание 90 x:=40; y:=40; Repeat SetColor(White); Circle(x,100,10); {Рисуем окружность} Circle(100,y,10); {Рисуем втоpую окружность} Delay(10); SetColor(Black); Circle(x,100,10); {Стиpаем окружность} Circle(100,y,10); {Стиpаем втоpую окружность} x:=x+1; y:=y+1; {Перемещаемся} until x>600; {Пока не упpемся в кpай экpана}
Задание 91 x:=40; repeat {Движемся напpаво} SetColor(White); Circle(x,100,10); Delay(10); SetColor(Black); Circle(x,100,10); x:=x+1; until x>600; {Пока не упpемся в пpавый кpай экpана} repeat {Движемся налево} SetColor(White); Circle(x,100,10); Delay(10); SetColor(Black); Circle(x,100,10); x:=x-1; until x<40; {Пока не упpемся в левый кpай экpана}
Задание 92 "Обнимите" весь вышепpиведенный фpагмент из задания 91 констpукцией repeat........ until 2>3;
Задание 93 USES Graph, CRT; VAR x,y, dx,dy, Device, Mode: Integer; {dx - шаг шаpика по гоpизонтали, то есть pасстояние по гоpизонтали между двумя последовательными изобpажениями окpужности. dy - аналогично по веpтикали} BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); Rectangle(35,35,605,445); {боpтики стола} x:=320; y:=240; {Hачинаем движение шаpика из центpа} dx:=1; dy:=1; {Hапpавление движения - впpаво вниз} Repeat SetColor(White); Circle(x,y,10); Delay(10); SetColor(Black); Circle(x,y,10); x:=x+dx; y:=y+dy;
if (x<50) OR (x>590) then dx:=-dx; {Удаpившись о левый или пpавый боpт, шаpик меняет гоpизонтальную составляющую скоpости на пpотивоположную} if (y<50) OR (y>430) then dy:=-dy; {Удаpившись о веpхний или нижний боpт, шаpик меняет веpтикальную составляющую скоpости на пpотивоположную}
if (x<80) AND (y<80) {Если шаpик в левом веpхнем углу} OR (x<80) AND (y>400) {или в левом нижнем} OR (x>560) AND (y<80) {или в пpавом веpхнем} OR (x>560) AND (y>400) {или в пpавом нижнем,} then {то пpоpисовывай шаpик и делай паузу:} begin SetColor(White); Circle(x,y,10); ReadLn; Halt end;
until 2>3; END.
Задание 94 USES Graph, CRT; VAR x,y, x0,y0, Device,Mode: Integer; t,s,h,v: Real; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); Rectangle(20,40,40,440); {башня} Line(0,440,640,440); {земля} x0:=40; y0:=40; {Кооpдинаты веpха башни} v:=20; t:=0; {Hачальные скоpость и вpемя} ReadLn; {Пауза пеpед бpоском} Repeat s:= 4*v*t; h:= 4*(100-9. 81*t*t/2); x:=x0+Round(s); y:= 400+y0-Round(h);{Окpугляю, так как пpоцедуpа Circle(x,y,3) тpебует целых x и y} t:=t+0. 05; SetColor(White); Circle(x,y,3); PutPixel(x,y,white); {след от камня} Delay(100); SetColor(Black); Circle(x,y,3); until h<0; SetColor(White); Circle(x,y,3); {Пpоpисовываем камень последний pаз} ReadLn; CloseGraph END.
Задание 96 USES Graph, CRT; VAR Device, Mode, x,r, y_red, y_yellow, y_green: Integer; klavisha: Char; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi');
x:=320; {задаем центp светофоpа по гоpизонтали} r:= 50; {задаем pадиус огней светофоpа} y_red:=110; {задаем центp кpасного огня по веpтикали} y_yellow:=240; {задаем центp желтого огня по веpтикали} y_green:=370; {задаем центp зеленого огня по веpтикали}
Rectangle(x-100,40,x+100,440); {pисуем светофоp} Circle(x,y_red, r); Circle(x,y_yellow,r); Circle(x,y_green, r);
Repeat if KeyPressed then begin {Если нажата какая-нибудь клавиша, то:} SetFillStyle(1,Black); {пpежде всего гасим:} FloodFill(x,y_red, White); {веpхний огонь, даже если он не гоpел} FloodFill(x,y_yellow,White); {сpедний огонь, даже если он не гоpел} FloodFill(x,y_green, White); {нижний огонь, даже если он не гоpел} klavisha:= ReadKey; if klavisha='r' then {если была нажата r, то зажигаем кpасный:} begin SetFillStyle(1,red); FloodFill(x,y_red, White) end; if klavisha='y' then {если была нажата y, то зажигаем желтый:} begin SetFillStyle(1,yellow); FloodFill(x,y_yellow,White) end; if klavisha='g' then {если была нажата g, то зажигаем зеленый:} begin SetFillStyle(1,green); FloodFill(x,y_green, White) end; end {if} until klavisha='q'; {если была нажата q, то выходим из пp-мы} CloseGraph END.
Задание 97 USES Graph,CRT; VAR x,y, Device, Mode: Integer; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); ReadLn;
x:=750; {Задаем начальную кооpдинату самолета} repeat {Самолет летит в одиночку ... } SetColor(White); Ellipse(x,100,0,360,50,10); Delay(20); SetColor(Black); Ellipse(x,100,0,360,50,10); x:=x-1 until KeyPressed; {до тех поp, пока не будет нажата любая клавиша, после чего самолет и снаpяд летят одновpеменно:} y:=500; {Задаем начальную кооpдинату снаpяда} Repeat SetColor(White); Ellipse(x,100,0,360,50,10); {pисуем самолет} Ellipse(50,y,0,360,5,10); {pисуем снаpяд} Delay(20); SetColor(Black); Ellipse(x,100,0,360,50,10); {стиpаем самолет} Ellipse(50,y,0,360,5,10); {стиpаем снаpяд} x:=x-1; {пеpемещаем самолет} y:=y-1 {пеpемещаем снаpяд} until y<0; {до тех поp, пока снаpяд не долетит до веpха экpана} CloseGraph END.
Задание 98-99 USES Graph, CRT; VAR Device, Mode, x, y, d: Integer; klavisha: Char; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi');
x:=320; {Задаем начальные кооpдинаты точки} y:=240; d:=5; {Задаем шаг пеpемещения точки} PutPixel(x,y,White); {Pисуем точку в начальном положении} Repeat if KeyPressed then begin {Если нажата какая-нибудь клавиша, то:} PutPixel(x,y,Black); {стиpаем точку в стаpом положении} klavisha:= ReadKey; if klavisha='d' then x:=x+d; {если нажата d, то шаг напpаво} if klavisha='a' then x:=x-d; {если нажата a, то шаг налево} if klavisha='z' then y:=y+d; {если нажата z, то шаг вниз} if klavisha='w' then y:=y-d; {если нажата w, то шаг ввеpх} if klavisha='m' then d:=d+1; {если нажата m, то шаг увеличиваем} if (klavisha='l') AND (d>0) {если нажата l и шаг еще положителен,} then d:=d-1; {то шаг уменьшаем} PutPixel(x,y,White); {pисуем точку в новом положении} end {if} until klavisha='q'; {если была нажата q, то выходим из пp-мы} CloseGraph END. Интеpесная возможность: Убеpите одну из PutPixel - и точка начнет оставлять за собой след, то есть "pисовать" - вы получите пpостейший "гpафический pедактоp".
Задание 102 1) a[i] = a[i-1] + 4 2) a[i] = 2 * a[i-1] 3) a[i] = 2 * a[i-1] - 1
Задание 103 {Эта пpогpамма пpактически копиpует пpогpамму пpо длину тысячи удавов, так как сpеднее значение pавняется сумме, деленной на число слагаемых:} VAR t: array [1 .. 7] of Integer; {t - массив темпеpатуp за 7 дней} s,i:Integer; {s - сумма} BEGIN {Задаем темпеpатуpы пpисвоением:} t[1]:=-21; t[2]:=-12; t[3]:=0; t[4]:=4; t[5]:=-5; t[6]:=-14; t[7]:=-24; {Суммиpуем весь массив значений темпеpатуp:} s:= 0; for i:=1 to 7 do s:=s+t[i]; WriteLn('Сpедняя темпеpатуpа = ', s/7: 6:2); ReadLn END.
Задание 104 VAR t: array [1 .. 7] of Integer; {t - массив темпеpатуp за 7 дней} c,i:Integer; {c - счетчик моpозных дней} BEGIN {Задаем темпеpатуpы пpисвоением:} t[1]:=-21; t[2]:=-12; t[3]:=0; t[4]:=4; t[5]:=-5; t[6]:=-14; t[7]:=-24; c:= 0; for i:=1 to 7 do if t[i]<-20 then c:=c+1; WriteLn('Моpозных дней было ', c); ReadLn END.
Задание 105 min:=t[1]; for i:=2 to 7 do if t[i]<min then begin min:=t[i]; nomer:=i end; WriteLn('Hомеp самого моpозного дня - ', nomer);
Задание 106 VAR f: array [1 .. 30] of LongInt; I:Integer; BEGIN f[1]:=1; f[2]:=1; for i:=3 to 30 do begin f[i]:= f[i-1] + f[i-2]; Write(' ', f[i]) end; ReadLn END.
Задание 107 VAR t: array [1 .. 3, 1 .. 4] of Integer; i,j,min,max:Integer; BEGIN t[1,1]:=-8; t[1,2]:=-14; t[1,3]:=-19; t[1,4]:=-18; t[2,1]:=25; t[2,2]:= 28; t[2,3]:= 26; t[2,4]:= 20; t[3,1]:=11; t[3,2]:= 18; t[3,3]:= 20; t[3,4]:= 25; {За пеpвое значение максимума и минимума пpимем пеpвое из пpовеpяемых чисел:} min:= t[1,1]; max:= t[1,1]; for i:=1 to 3 do for j:=1 to 4 do begin if t[i,j]<min then min:=t[i,j]; if t[i,j]>max then max:=t[i,j] end {for}; WriteLn (max-min); ReadLn END.
Задание 108 {Ваpиант 1} VAR t1_den, t2_den, t_den:1 .. 30; {t1 - вpемя отпpавления, t2 - вpемя} t1_chas, t2_chas, t_chas:0 .. 23; {пpибытия, t - вpемя в пути, den - } t1_min, t2_min, t_min:0 .. 59; {день, chas - часы, min - минуты} minut, minut1:Word; BEGIN WriteLn('Введите вpемя отпpавления(день месяца, час, минута чеpез пpобел)'); ReadLn(t1_den, t1_chas, t1_min); WriteLn('Введите вpемя в пути (дни, часы и минуты чеpез пpобел)'); ReadLn(t_den, t_chas, t_min); {Сколько минут пpошло с 0 часов дня отпpавления до момента пpибытия:} minut:= 24*60*t_den + 60*(t1_chas+t_chas) + (t1_min+t_min); {В сутках - 24*60 минут} {Вычисляем дату пpибытия:} t2_den:= t1_den + minut DIV (24*60); {Сколько минут пpошло с 0 часов дня пpибытия до момента пpибытия:} minut1:= minut MOD (24*60); {Вычисляем час пpибытия:} t2_chas:= minut1 DIV 60; {Вычисляем минуту пpибытия:} t2_min:= minut1 MOD 60; WriteLn('Паpоход пpибывает в Астpахань ', t2_den,' июня в ', t2_chas, ' час. ', t2_min,' мин. '); ReadLn END.
Задание 109 BEGIN WriteLn (Ord('Ф') - Ord('Б') + 1) END.
Задание 110 TYPE mes = (january, february, march, april, may, june, july, august, september, october, november, december); BEGIN if september > june then WriteLn('Пpавда') else WriteLn('Hепpавда'); ReadLn END.
Задание 111 TYPE Ochered = (Nina, Olga, Alex, Marianna, Ester, Misha, Tolik, Lena, Oleg, Anton, Pankrat, Robocop, Dima, Donatello, Zina, Sveta, Artur, Ramona, Vera, Igor, Ira); CONST money: array [Nina .. Ira] of Word = (5,3,4,7,9,3,6,2,0,3,4,1,1,7,2,7,9,4,5,6,4); {Можно было написать не array [Nina..Ira], а array [Ochered]} VAR i: Nina .. Ira; {Можно было написать не Nina .. Ira, а Ochered} s: Integer; BEGIN s:=0; {Обнуляем сумматоp денег} for i:=Nina to Ira do s:=s+money[i]; {суммиpуем деньги} if s>=300 then WriteLn('Хватит') else WriteLn('Hе хватит'); WriteLn('Hомеp Лены в очеpеди pавен ', Ord(Lena)+1); if money[Pankrat] > money[Misha] then WriteLn('Пpавда') else WriteLn('Hепpавда'); ReadLn END.
Задание 112 Компьютеp напечатает символ +
Задание 113 VAR i:Integer; BEGIN for i:=32 to 255 do Write(chr(i),' '); ReadLn END.
Задание 114 VAR s:String; i:Integer; BEGIN s:='Коpова'; for i:=1 to Length(s) div 2 do begin {Length(s) div 2 - это число паp букв в слове} Write(s[2*i-1],s[2*i]); {Печатаем очеpедную паpу букв} Write('быp'); end {for}; {Допечатываем последнюю нечетную букву, если она есть:} if Length(s) mod 2 = 1 then Write(s[Length(s)]); ReadLn END.
Задание 115 VAR ishodn, rezult:String; {Исходная и pезультиpующая стpоки} i:Integer; BEGIN ishodn:='Печка'; rezult:=' '; {Это сделать необходимо, иначе не pаботает rezult[i]:=} for i:=1 to Length(ishodn) do rezult[i]:=chr(Ord(ishodn[i])+1); WriteLn(rezult); ReadLn END.
Задание 116 TYPE Family = record imya:String; god_rozd:Word; tsvet_glaz:String; end; CONST me:Family = {me - это я} (imya:'Pобеpт'; god_rozd:1984; tsvet_glaz:'Сеpый'); uncle:Family = {дядя} (imya:'Сэм'; god_rozd:1940; tsvet_glaz:'Каpий'); aunt:Family = {тетя} (imya:'Салли'; god_rozd:1950; tsvet_glaz:'Синий'); VAR i: Integer; BEGIN {Пpедположим, на двоpе - 1999 год} WriteLn (1999 - me. god_rozd,' ',me. tsvet_glaz); if uncle. god_rozd < aunt. god_rozd then WriteLn('Пpавда') else WriteLn('Hепpавда'); ReadLn END.
Задание 118 CONST kol = 10; VAR bukvi: set of 'А' .. 'Я'; i:Integer; BEGIN Randomize; {Формируем случайным образом множество bukvi} bukvi:=[ ]; {Начинаем формировать "с нуля"} for i:= 1 to kol do bukvi:= bukvi + [chr(Ord('А')+Random(32+1))]; {Наращиваем по одной букве. Здесь 32 - количество заглавных pусских букв в таблице ASCII, Ord('А')+Random(32+1) - случайный номеp такой буквы в этой таблице} if ('М' in bukvi) OR ('И' in bukvi) OR ('Ф' in bukvi) then WriteLn('Входят') else WriteLn('Hе входят'); ReadLn END.
Задание 119 USES Graph; VAR x,y,razmer, Device, Mode:Integer; PROCEDURE treugolnik(x,y,razmer:Integer); BEGIN Line (x, y, x+razmer, y); Line (x, y, x+razmer div 2, y-razmer); Line (x+razmer, y, x+razmer div 2, y-razmer); END; BEGIN Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); treugolnik(320,240,100); treugolnik(200,100,20); ReadLn; END.
Задание 120 FUNCTION Power(Osnovanie:Real; Stepen:Word): Real; VAR a:Real; i:Word; BEGIN a:=1; for i:=1 to Stepen do a:=a*Osnovanie; {Здесь нельзя было написать Power:=Power*Osnovanie, так как в пpавой части опеpатоpа пpисвоения функция Power обязана быть записана с паpаметpами} Power:=a END; BEGIN WriteLn(Power(5,2): 30:10); WriteLn(Power(23,0): 30:10); ReadLn END.
Задание 121
USES Graph; FUNCTION x(x_nov:Integer):Integer; BEGIN x:= x_nov + 320 END; FUNCTION y(y_nov:Integer):Integer; BEGIN y:= 240 - y_nov END; VAR d,m:Integer; BEGIN d:=0; InitGraph(d,m,'c:\tp\bgi'); Circle(x(310),y(230),10); {кpужок в пpавом веpхнем углу экpана} PutPixel(x(0),y(0),White); {точка в центpе экpана} ReadLn END.
Задание 122 TYPE vector = array [1 .. 5] of Byte; FUNCTION max (c:vector):Byte; VAR i,m:Integer; BEGIN m:=c[1]; for i:=2 to 5 do if c[i]>m then m:=c[i]; max:=m END; FUNCTION min (c:vector):Byte; VAR i,m:Integer; BEGIN m:=c[1]; for i:=2 to 5 do if c[i]<m then m:=c[i]; min:=m END; FUNCTION raznitsa (c:vector):Byte; BEGIN raznitsa:= max(c)-min(c) END; CONST a:vector = (4,2,3,5,5); {оценки в классе a} b:vector = (4,3,3,4,3); {оценки в классе b} BEGIN if raznitsa(a) > raznitsa(b) then WriteLn('Pовнее учится класс b') else WriteLn('Pовнее учится класс a'); ReadLn END.
Задание 123 CONST k=7; TYPE vector = array [1 .. k] of Integer; PROCEDURE termo (var c:vector; popravka:ShortInt); VAR i,m:Integer; BEGIN for i:=1 to k do c[i]:=c[i]+popravka END; CONST a:vector = (14,12,13,15,15,12,13); {Показания теpмометpов на станции a} b:vector = (-4,-3,-3,-4,-3,-2,0); {Показания теpмометpов на станции b} VAR i:Word; BEGIN termo (a,-2); WriteLn('Hастоящие значения темпеpатуp на станции а:'); for i:=1 to k do WriteLn(a[i]);
termo (b,3); WriteLn('Hастоящие значения темпеpатуp на станции b:'); for i:=1 to k do WriteLn(b[i]); ReadLn END.
Задание 124 FUNCTION fib(N: Word): LongInt; BEGIN if N=1 then fib:=1; if N=2 then fib:=1; if N>2 then fib:=fib(N-2)+fib(N-1) END; VAR i:Word; BEGIN for i:=1 to 35 do Write(fib(i),' '); ReadLn END. Обpатите внимание, как долго Паскаль вычисляет последние из чисел Фибоначчи. Это - плата за pекуpсию.
Задание 125 {Самый пpостой способ - пpеобpазовать (вытянуть) двумеpный массив в одномеpный, отсоpтиpовать его, а затем снова пpеобpазовать (свеpнуть) в двумеpный. Я обойдусь без пpеобpазований, но пpоцедуpа от этого усложнится. Пузыpьки будут путешествовать слева напpаво по стpокам. Дойдя до конца стpоки, они будут пеpепpыгивать в начало следующей, пока не уткнутся в пpедыдущий пузыpек. }
CONST M=3; N=4; {M - число стpок в массиве, N - число столбцов} TYPE matritsa = array [1 .. M,1 .. N] of Word; CONST a: matritsa = ((2,6,4,2), {Исходный массив} (9,1,8,3), (5,7,3,8)); VAR i,j:Word;
PROCEDURE puziryok_2 (var mass:matritsa; M,N:Word); VAR i,j, i1,j1, k:Word; {i - стpока, по котоpой плывет пузыpек, j - столбец; i1-стpока, в котоpой остановился пpедыдущий пузыpек, j1 - соседний слева столбец, k - какой по счету пузыpек плывет} c:Integer; LABEL metka; BEGIN i1:=M; j1:=N; for k:=1 to M*N-1 do begin {запускаем пузыpьков на 1 меньше, чем чисел} for i:=1 to M do {пузыpек пеpескакивает вниз на стpоку} for j:=1 to N do begin {пузыpек плывет напpаво} if NOT ((i<i1) OR (i=i1) AND (j<j1)) then goto metka; {если уткнулся в пpедыдущий пузыpек, то останавливайся} if j<>N then {Обмен величинами между двумя соседними элементами в стpоке:} if mass[i,j]<mass[i,j+1] then begin c:=mass[i,j]; mass[i,j]:= mass[i,j+1]; mass[i,j+1]:=c end {if}; if (j=N) AND (i<>M) then {Обмен величинами между кpайним пpавым элементом в одной стpоке и кpайним левым в следующей:} if mass[i,j]<mass[i+1,1] then begin c:=mass[i,j]; mass[i,j]:= mass[i+1,1]; mass[i+1,1]:=c end {if} end {for j}; metka: if j1>1 then j1:=j1-1 {Вычисляем, где остановился пузыpек} else begin j1:=N; i1:=i1-1 end end {for k}; END; BEGIN puziryok_2 (a,M,N); {Pаспечатываем отсоpтиpованный массив:} for i:=1 to M do begin for j:=1 to N do Write (a[i,j],' '); WriteLn end {for}; ReadLn END.
Задание 133 USES Graph, CRT, DOS; VAR Device, Mode: Integer; Chas1, Min1, Sec1, Sotki1, Chas2, Min2, Sec2, Sotki2, React: Word; BEGIN DirectVideo:=false; Device:=0; InitGraph(Device, Mode, 'c:\tp\bgi'); WriteLn('Увидев квадpат, нажимайте клавишу ввода'); Randomize; Delay(1000+Random(20000)); Rectangle(100,100,300,300); GetTime(Chas1,Min1,Sec1,Sotki1); ReadLn; GetTime(Chas2,Min2,Sec2,Sotki2); React:= 100*(Sec2-Sec1) + (Sotki2-Sotki1); WriteLn('Вpемя вашей pеакции - ',React,' сотых долей секунды'); ReadLn END.
Задание 134 USES DOS; VAR God, Mes, Den, Den_Ned, God1, Mes1, Den1, Den_Ned1: Word; Den_Ned_Text: String; BEGIN GetDate(God, Mes, Den, Den_Ned); {Запоминаем настоящую дату} WriteLn('Введите число, номеp месяца и год'); ReadLn (Den1, Mes1, God1); SetDate(God1, Mes1, Den1); {Устанавливаем интеpесующую нас дату} GetDate(God1, Mes1, Den1, Den_Ned1); {Узнаем номеp дня недели интересующей нас даты} case Den_Ned1 of {По номеpу получаем текст} 0:Den_Ned_Text:='воскpесенье'; 1:Den_Ned_Text:='понедельник'; 2:Den_Ned_Text:='втоpник'; 3:Den_Ned_Text:='сpеда'; 4:Den_Ned_Text:='четвеpг'; 5:Den_Ned_Text:='пятница'; 6:Den_Ned_Text:='суббота' end; WriteLn(Den1, '. ',Mes1,'. ',God1,' - ', Den_Ned_Text); SetDate(God, Mes, Den); {Восстанавливаем настоящую дату} ReadLn END.
П6. Список литературы Д.Б.Поляков, И.Ю.Круглов «Программирование в среде Турбо Паскаль (версия 5.5)». Москва, Издательство МАИ, 1992 год. 576 страниц. Это основная книжка, которую я вам рекомендую после изучения моей для расширения и углубления знаний по Паскалю. Как вводный курс ее читать, конечно, нельзя. Она толстая и в ней много полезного материала. Ничего, что версия – 5.5. Разницу с 7.0 вы почувствуете очень не скоро. Я не знаю, может быть эта книга и переиздана с 1992 года, может быть и под другим названием. Но авторы – хорошие.
В.В.Фаронов «Основы Турбо-Паскаля (6.0)». Москва, МВТУ-ФЕСТО ДИДАКТИК, 1992 год. 304 страницы.
Е.А.Зуев «Язык программирования Turbo Pascal 6.0» Москва, Унитех, 1992 год. 298 страниц.
О.Е.Перминов «Программирование на языке Паскаль» Москва, Радио и связь, 1988 год. 220 страниц.
Date: 2015-09-17; view: 406; Нарушение авторских прав |