Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

066536 / 336Г, 420, 496Б, 846Г, 961, 463

.doc
Скачиваний:
30
Добавлен:
09.06.2015
Размер:
136.7 Кб
Скачать

Оглавление

Задание 1. Вычислить 3

Задание 2. Даны натуральное n, символьная квадратная матрица порядка n. Получить последовательность b1,…., bn из нулей и единиц, где bi – тогда и только тогда, когда в i-й строке число символов * не меньше числа пробелов. 4

Задание 1. Вычислить

n- Натуральное число, x-действительное число

Составим блок-схему алгоритма

Составим программу на языке Pascal

program lr1;

var a:real;

n,m,k:integer;

x:real;

begin

writeln('Input x:');

readln(x);

writeln('Input n:');

readln(n);

a:=0;

for k:=1 to n do

for m:=k to n do begin

a:=(x+k)/m+a;

end;

writeln ('Ответ:',a:10:3);

end.

Результат выполнения программы:

Input x:

123

Input n:

10

Ответ: 1262.500

Задание 2. Даны натуральное n, символьная квадратная матрица порядка n. Получить последовательность b1,…., bn из нулей и единиц, где bi – тогда и только тогда, когда в i-й строке число символов * не меньше числа пробелов.

Составим блок-схему алгоритма

Составим программу на языке Pascal

program lr2;

var

a: array [1..20, 1..20] of char;

zvezd,probel,b: array [1..20] of integer;

i,j,n,s:integer;

begin

write('Введите размер матрицы <=20 : ');

readln(n);

writeln('Введите матрицу A');

for i:=1 to n do

for j:=1 to n do read(a[i,j]);

writeln('Полученная матрица:');

for i:=1 to n do

begin

for j:=1 to n do write(a[i,j]:3);

writeln;

end;

for i:=1 to n do

for j:=1 to n do

begin

if a[i,j]=' ' then probel[j]:=probel[j]+1;

if a[i,j]='*' then zvezd[j]:=zvezd[j]+1;

end;

for j:=1 to n do

begin

if zvezd[j]>=probel[j] then b[j]:=1 else b[j]:=0 ;

end;

writeln('Ответ:');

for i:=1 to n do

begin

write(b[i]:3);

writeln;

end;

end.

Результат выполнения программы:

Введите размер матрицы <=20 : 3

Введите матрицу A

[ ****]

Полученная матрица:

*

* * *

Ответ:

0

0

1

Задание 3. Дан символьный файл f. Записать в файл g с сохранением порядка следования те символы файла f

б) вслед за которым в этом файле идет буква а

Составим блок-схему алгоритма

Составим программу на языке Pascal

program lr3;

uses crt;

var

i,k,p:integer;

m,n:char;

f,g:ff;

begin

clrscr;

assign(f,'c:\char.dat');

assign(g,'c:\char.txt');

rewrite(f);

writeln('Введите максимальный размер файла:');

readln(p);

for k:=1 to p do

begin

read(m);

write(f,m);

end;

close(f);

writeln('Содержимое выходного файла :');

reset(f);

rewrite(g);

for k:=1 to p do

begin

n:=m;

read(f,m);

if (m='а') then

begin

write(g,n);

write(n);

end;

end;

close(f);

close(g);

end.

Результат выполнения программы:

Введите максимальный размер файла:

30

привет алиса ароматерапия автобус

Содержимое выходного файла :

[ с мр]

Задание 4. Исследовать область определения и построить графики следующих функций y=3-2/x-3/(x*x)

Составим блок-схему алгоритма

Составим программу на языке Pascal

program lr4;

{ Использует библиотеку _ViewGr }

{$IFNDEF Debug}

{$D-,S-,L-}

{$ENDIF}

{$B-,R-,V-,X+,N+,E-,A-,T-,F-,Q-,P-}

{.$G+}

PROGRAM TestGr;

USES

CRT,

Graph,

_ViewGr;

CONST

PathToBGI : String[80] = 'D:\Tools\BGI';

FUNCTION InitGraphics: Integer;

VAR

grDriver, grMode : Integer;

BEGIN

grDriver:=Detect;

InitGraph(grDriver, grMode, PathToBGI);

InitGraphics:=GraphResult;

END;

FUNCTION MyVeryCoolFunction1(MyVar:Real):Real; Far;

BEGIN

MyVeryCoolFunction1:=3-2/x-3/(x*x);

END;

VAR

a,b : Real;

S : String;

BEGIN

if InitGraphics<>grOK then Exit;

InitVariable;

MainWindow(S);

a:=-1.5*Pi;

b:= 1.5*Pi;

ColorGr:=Yellow;

DrawGraph(@MyVeryCoolFunction1,a,b);

CloseGraph;

END.

{ Содержимое библиотеки _ViewGr }

{$IFNDEF Debug}

{$D-,L-,S-}

{$ENDIF}

{$B-,R-,V-,X+,G+,N+,E-,A-,T-,F-,Q-,P-}

UNIT _ViewGr;

INTERFACE

USES

Graph;

CONST

ArgNumber = 800; {количество интервалов аргумента при построении}

CONST

CalcScale : BOOLEAN = TRUE; {при построении графика пересчитывать масштаб}

CalcFun : BOOLEAN = TRUE; {при построении графика пересчитывать мин. и макс. значение функции}

MinFun : Real = 0.0; {минимальное значение функции на интервале [a; b]}

MaxFun : Real = 0.0; {максимальное значение функции на интервале [a; b]}

ScaleX : Real = 80.0; { Коэффициент увеличения графика по оси X}

ScaleY : Real = 80.0; { Коэффициент увеличения графика по оси Y}

ColorAxis : Word = LightBlue; {цвет осей координат }

ColorGr : Word = Yellow; {цвет линии графика }

ColorLbl : Word = Red; {цвет чисел на сетке координат}

ColorMin : Word = LightRed; {цвет линии "минимум" }

ColorMax : Word = LightRed; {цвет линии "максимум" }

TYPE

{$IFOPT N+}

Real = Extended;

{$ENDIF}

TDrawFunc = function (aX : Real) : Real;

PROCEDURE InitVariable;

PROCEDURE MainWindow(VAR Header:String);

PROCEDURE PlotAxis;

PROCEDURE DrawLegend(Title : String);

PROCEDURE DrawGraph (PF: Pointer; a,b: Real);

IMPLEMENTATION

VAR

HeightM : Integer;

MaxX : Integer;

MaxY : Integer;

PROCEDURE InitVariable;

BEGIN

MaxX := GetMaxX;

MaxY := GetMaxY;

HeightM:=TextHeight('M');

END;

PROCEDURE MainWindow(VAR Header:String);

BEGIN

ClearDevice;

SetTextStyle(DefaultFont, HorizDir, 2);

SetTextJustify(CenterText, TopText);

SetViewPort(0, 0, MaxX, MaxY, ClipOn);

SetColor(White);

OutTextXY(MaxX DIV 2, 4, Header);

(* SetViewPort(0, HeightM+4, MaxX , MaxY-4, ClipOn);

PlotAxis;*)

SetViewPort(100, HeightM+50, MaxX-25, MaxY-(HeightM+50), ClipOn);

PlotAxis;

SetViewPort(1, HeightM+5, MaxX-1, MaxY-(HeightM+5), ClipOn);

END;

PROCEDURE PlotAxis;

VAR

ViewPort : ViewPortType; {}

BEGIN

{ SetLineStyle(SolidLn, 0, NormWidth);

SetColor(ColorAxis);

Rectangle(100, HeightM+50, MaxX-25, MaxY-(HeightM+50));}

SetLineStyle(SolidLn, 0, NormWidth);

SetColor(ColorAxis);

GetViewSettings(ViewPort);

with ViewPort do

Rectangle(0, 0, X2-X1, Y2-Y1);

END;

PROCEDURE DrawLegend(Title : String);

BEGIN

END;

PROCEDURE DrawGraph (PF: Pointer; a,b: Real);

VAR

F : TDrawFunc; {отображаемая функция}

dArg : Real; {шаг изменения аргумента функции}

X : Real; {текущее значение аргумента функции}

Y : Real; {текущее значение функции}

vStr : String; {}

Xs : Integer; {значение координаты X на экране}

Ys : Integer; {значение координаты Y на экране}

ViewPort : ViewPortType; {}

GraphSizeY : Integer; {высота области для рисования графика}

BEGIN

@F:=PF;

dArg:=(b-a)/ArgNumber;

{ Определение минимальноого и максимального значений функции }

if CalcFun

then begin

X:=a;

MinFun:=F(X);

MaxFun:=MinFun;

repeat

Y:=F(X);

if MinFun>Y then MinFun:=Y;

if MaxFun<Y then MaxFun:=Y;

X:=X+dArg;

until ( X > b );

end;

{отобразить значения X и Y на осях координат}

if CalcScale

then begin

SetColor(ColorLbl);

Str(MaxFun :4 :2, vStr);

OutTextXY(50, HeightM+35, vStr);

Str(MinFun :4 :2, vStr);

OutTextXY(50, MaxY-(HeightM+80), vStr);

Str(a :4:2, vStr);

OutTextXY(120, MaxY-(HeightM+40), vStr);

Str(b :4:2, vStr);

OutTextXY(MaxX-60, MaxY-(HeightM+40), vStr);

end;

SetViewPort(100, HeightM+50, MaxX-25, MaxY-(HeightM+50), ClipOn);

GetViewSettings(ViewPort);

GraphSizeY:=ViewPort.Y2-ViewPort.Y1;

if CalcScale

then begin

GetViewSettings(ViewPort);

with ViewPort do begin

ScaleX:=(X2-X1)/(b-a);

ScaleY:=(Y2-Y1)/(MaxFun-MinFun);

end;

end;

SetColor(ColorGr);

X:=a;

Y:=F(X);

Xs:=Trunc((X-a)*ScaleX);

Ys:=GraphSizeY-Trunc((Y-MinFun)*ScaleY);

PutPixel(Xs, Ys, ColorGr);

X:=X+dArg;

while X<b do begin

Y:=F(X);

Xs:=Trunc((X-a)*ScaleX);

Ys:=GraphSizeY-Trunc((Y-MinFun)*ScaleY);

LineTo(Xs, Ys);

X:=X+dArg;

end;

END;

{BEGIN}

END.

Область определения функции y=3-2/x-3/(x*x) вся числовая ось, за исключением x=0.

Задание 5. Получить мультфильм «Круги на воде», используя семь концентрических окружностей. Центры окружностей должны быть совмещены с центром экрана, а радиусы изменятся от 40 до 82 пиксел, увеличиваясь на 7 пиксел с каждой следующей окружностью. Иллюзия движения должна создаваться с последовательной сменой цветов всех окружностей, начиная с внутренней и кончая внешней. Процесс смены цветов следует повторить не менее десяти раз.

Составим блок-схему алгоритма

Составим программу на языке Pascal

program lr5;

uses graph,crt;

var Gd,Gm,i,x,y: integer;

begin

Gd:=Detect;

initgraph(Gd, Gm, '');

randomize;

i:=40;

x:=random(300);

y:=random(300);

k:=0;

while k<=10 do

begin

circle(x,y,i);

setcolor(random(10));

k:=k+1;

i:=i+7;

if i=89 then i:=40;

end;

readkey;

closegraph;

end.

Задание 6. Составить процедуру, результатом работы которой является символ, заданный при обращении к процедуре, если этот символ не является буквой, и соответствующая строчная (малая) буква в противном случае.

Составим блок-схему алгоритма

Составим программу на языке Pascal

program lr6;

uses crt;

var

f:text;

n,i,max:word;

bol:boolean;

xxx:char;

st,st2:string;

function MCase(s: char): char;

var

i: Integer;

begin

MCase := s;

case s of

'A'..'Z','А'..'Я': MCase := Chr(Ord(s) + 32);

'Ё': MCase := 'ё';

end;

end;

begin

clrscr;

writeln('Введи символ:');

readln(xxx);

writeln('Полученный символ:');

writeln(MCase(xxx));

readkey;

end.

Введи символ:

F

Полученный символ:

f

17

Соседние файлы в папке 066536