Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 3_2.pdf
Скачиваний:
26
Добавлен:
11.02.2016
Размер:
1 Мб
Скачать
☆

var

Myfile: text; st : string; begin

assign (Myfile,'primer.txt');

reset (Myfile); {открывает файл для чтения, устанавливает указатель файла на первую запись}

while not eof(Myfile) do

{функция EOF вырабатывает значение 'истина' при достижении конца файла}

begin

Readln(Myfile,st); { чтение из файла } Writeln(st) { и вывод на экран }

end;

close (file); end.

Эта программа устанавливает связь с файлом primer.txt, открывает его, считывает строка за строкой содержащийся в нем текст, до достижения признака "конец файла", и каждый раз (при каждом повторении цикла) записывает этот текст в строковую переменную с именем st. Затем текст выводится на экран оператором writeln(st). В результате работы этой программы на экране будет отображен текст, который содержится в файле primer.txt.

Необходимо обратить внимание на то, что программа fileex2 работала с файлом, который был создан на диске программой (fileex1).

Примеры задач

Пример №1. Даны три неравных числа a, b, c. Вычислить и отпечатать значение z равное квадрату большего из них .

program Prim1; var

A,B,C,Z: Real; begin

Writeln(‘ Исходные данные ’); Write(‘A = ‘); ReadLn(A); Write(‘B = ‘); ReadLn(B); Write(‘C = ‘); ReadLn(C);

if A>B then Z := A else Z := B;

if C>Z then Z:=C; Z := Sqrt(Z);

Writeln(‘Z= ’,Z:8:3) end.

Пример №2. Найти остаток от деления значения целого выражения С=K*(A+B) на 4 и вывести сообщение о величине остатка.

program Prim2; const

Del = 4; var

A, B, C, K, Ost: Integer; begin

Writeln(‘ Исходные данные ’);

70

Write(‘A = ‘); ReadLn(A); Write(‘B = ‘); ReadLn(B); Write(‘K = ‘); ReadLn(K); C := K*(A+B);

Ost := C mod Del; case Ost of

0: begin

Writeln(‘Остаток равен 0’); Writeln(‘число ’,C,’ кратно 4’);

end;

1..3 : Writeln(‘Остаток равен ‘,Ost); end;{case}

end.

Пример №3. Написать программу вычисления функции

 

4.5

tg(x),2

≤ x ≤ 4;

x

 

 

y =

 

a +b x

,x < 2.

 

 

 

 

 

c +d x

 

 

 

 

program Prim3; var

A, B, C, D, X, Y : Real;

IsExit, IsError : Boolean; ExitChar : Char;

begin

Writeln(‘Ввести коэффициенты’); Write(‘ A = ‘); ReadLn(A); Write(‘ B = ‘); ReadLn(B); Write(‘ D = ‘); ReadLn(D); IsExit := False;

repeat

Write(‘ X = ‘); ReadLn(X); if X<=4 then begin

IsError := False;

if (2<=X) and (X<=4) then begin

if Cos(X) <> 0 then Y := Exp(4.5*Ln(X))*Sin(X)/Cos(X) else IsError := True;

end else begin

if (C+D*X)<>0 then Y := (A+B*X)/(C+D*X) else IsError := True;

end;

if not(IsError) then Writeln(‘X=’,X:10:3,‘ Y=’,Y:10)

else

Writeln(‘Сбойная ситуация’); end else begin

Writeln(‘Y не вычислялся, X >4 ’); end;

Write(‘Продолжить (Y)/(N)’); ReadLn(ExitChar);

if ExitChar in [‘N’,’n’,’Н’,’н’] then IsExit := True; until IsExit;

end.

71

Пример №4. Вычислить степень y = an действительного числа a с натуральным

n

показателем n (для вычисления воспользоваться формулой an = a a a Ka = ∏a ).

1

progrram Prim4; var

A, Y : Real;

I, N : Integer; begin

Write(‘ A = ’); Readln(A); Write(‘ N = ’); Readln(N); Y:=1;

for I := 1 to N do

Y := Y*A;

Writeln(A,‘ в степени ’,N,‘ равно ’,Y); end.

Пример 5.

Пример №5. Написать программу приближенного вычисления суммы ряда

 

x

 

x2

s = 1+

 

+

 

+K с точность до eps. Примечание: значения членов ряда будем вычис-

1!

2!

лять по рекуррентной формуле: Ri = R i−1 x i

program Prim5; uses CRT;

var

X, Eps, Y, S : Real; I : Integer; ExitChar : Char;

begin repeat

Write(‘ X = ’); Readln(X); Write(‘Eps = ’); Readln(Eps); S := 0;

Y := 1;

I := 0;

while Abs(Y) > Eps do begin

S:= S + Y;

I := I + 1;

Y := Y * X/I end;

Writeln(‘При X = ’X:8:3,’ S =’,S:8:4,’вычислено за ‘,I, ‘ итераций’);

Write(‘Продолжить (Y)/(N)’); ReadLn(ExitChar);

until (ExitChar=’N’)or(ExitChar=’n’); end.

Пример №6. Найти сумму положительных элементов массива А, состоящего из N элементов.

72

program Prim6; const

Nmax = 20; var

A : array[1..Nmax] of Real; I, N: Integer;

S : Real; begin

repeat

Write(‘N = ‘); Readln(N);

if N>Nmax then WriteLn(‘Размер массива не должен быть больше’,Nmax);

until N<=Nmax;

for I := 1 to N do {Ввод значений массива А} begin

Write(‘A[‘,I,’]=’);

Readln(A[I]); end;

S := 0;

for I := 1 to N do

if A[I] > 0 then S := S+A[I]; Writeln(‘S=’,S:10:2);

end.

Пример №7. Найти минимальный элемент в массиве A и поменять его местами с максимальным элементом массива B. Массив А имеет N значений; массив В имеет M значений.

program Prim7; const

ArrMax = 100; var

A, B :array[1..ArrMax] of Real; I,J,K,N,M : Integer;

MinA, MaxB: Real; begin

repeat

Write(‘Размерность массива A N = ‘); Readln(N); Write(‘Размерность массива B M = ‘); Readln(M); if (N>ArrMax)or(M>ArrMax) then

WriteLn(‘Размер массива не должен быть больше’,ArrMax); until (N<=ArrMax)and(M<=ArrMax);

for I:=1 to N do {Ввод значений массива А} begin

Write(‘A[‘,I,’]=’);

Readln(A[I]); end;

for I:=1 to M do {Ввод значений массива B} begin

Write(‘B[‘,I,’]=’);

Readln(B[I]); end;

MinA:=A[1];

for I:=1 to N do

if MinA>A[I] then

73

begin

A[I];

 

MinA :=

 

J := I;

 

 

end;

 

 

MaxΒ:=B[1];

 

 

for I:=1 to M do

 

if MaxB<B[I] then

 

begin

B[I];

 

MaxB :=

 

K := I;

 

 

end;

 

 

A[J] := MaxB;

 

 

B[K] := MinA;

= ’,Mina:7:2,’ MaxB = ’,Maxb:7:2);

 

Writeln(‘MinA

’ );

for I := 1 to

N do Write(‘A[‘,I,’]=’,A[I]:7:2,’;

{Вывод Значений

Массива А}

’ );

for I := 1 to

M do Write(‘B[‘,I,’]=’,B[I]:7:2,’;

{Вывод Значений

Массива B}

 

end.

 

 

Пример №8. Написать программу для вычисления значений массива Y по выра-

жению: yi = ai + bi xi , где массивы A и B имеют по десять значений, а xi = xi−1 +∆x . Результаты вывести в табличной форме.

program Prim8; var

A, B, X, Y: array[1..10] of Real; I , N : Integer;

Xn, dX : Real; begin

Write(‘X[1] = ’); Readln(Xn); Write(‘dX = ’); Readln(dX);

Writeln(‘Ввод значений коэффициентов’); for I := 1 to 10 do

begin

Write(‘A[‘,I,’] = ’); Readln(A[I]); Write(‘B[‘,I,’] = ’); Readln(B[I]);

end;

for I := 1 to 10 do begin

X[I] := Xn + dX*(I-1); Y[I] := A[I] + B[I] * X[I];

end;

{Вывод значений в таблице}

Writeln(‘ Таблица’)’ Writeln(‘---------------------------------------------’); Writeln(‘| A | B | X | Y |’); Writeln(‘---------------------------------------------‘); for I := 1 to 10 do

begin

Writeln(‘| ’,A[I]:8:3,’ | ’, B[I]:8:3, ’ | ’, X:8:3, ’ | ’,Y[I]:8:3,’ |’);

74

end;

‘);

Writeln(‘---------------------------------------------

end.

 

Пример №9. Найти количество и сумму положительных элементов матрицы A(n,n) лежащих выше главной диагонали.

program Prim9; const

Nmax = 25; var

A : array[1.. Nmax,1.. Nmax] of Real; I, J, N, K : Integer;

S :Real; begin

repeat

Write(‘N = ‘); Readln(N);

if N>Nmax then WriteLn(‘Размер матрицы не должен быть

until

N<=Nmax;

больше ’,Nmax,’Х’,Nmax);

 

for I

:= 1 to N do {Ввод значений матрицы А}

for J := 1 to N do

 

begin

 

 

Write(‘A[‘,I:2,’,’,J:2,’] = ’);

 

Readln(A[I,J]);

 

end;

 

S:=0;

K:= 0;

 

for I:=1 to N-1 do

 

for J:=I+1 to N do

 

if A[I,J]>0 then

 

 

begin

 

 

S := S + A[I, J];

 

K := K + 1;

 

 

end;

S = ’,S);

Writeln(‘Сумма

Writeln(‘Количество

K = ’,K);

end.

75