Контрольная работа: Использование программирования в математике
Содержание
Задание 1. Вычисление значения арифметического выражения
Вычислить значение переменной z, являющейся функцией двух переменных x и y. Для вычисления x и y требуется определить значения арифметических выражений, зависящих от переменных a и b и констант k и m.
Вычислить
Текст программы:
Program pr_1;
var x,y,z,a,b:real;
const k=1; m=2;
begin
writeln('Vvedite a');
readln(a);
writeln('Vvedite b');
readln(b);
x:=a*k-(k*sqr(sqr(b))*b)/(1.2+sqr(sin(a+b)));
y:=(1+sqr(sin(a/2)/cos(a/2))/((a/(a+b)+2.1)*ln(m)/ln(10)));
z:=m*exp(ln(x)*y)+2*k*x*y-0.81;
writeln('x = ',x:5:2);
writeln('y = ',y:5:2);
writeln('z = ',z:5:2);
end.
Результат работы:
Задание 2. Использование условного оператораДаны три целых числа A, B, C. Определить значения переменных X, Y, Z. Вывести их на экран. Пусть D1 и D2 – заштрихованные плоскости, и пусть U определяется как функция X и Y. Вывести U на экран дисплея. Вывод результатов оформить пояснительным тестом.
Текст программы:
Program pr_2;
var
A,B,C,X,Y,Z,U:real;
begin
writeln('Vvedite A');
read(A);
writeln('Vvedite B');
read(B);
writeln('Vvedite C');
read(C);
X:=A+B;
if X>A+C then X:=A+C;
if X>B+C then X:=B+C;
Y:=A;
if Y<2*B then Y:=2*B;
if Y>3*C then Y:=3*C;
Z:=X/Y;
if ((X>=-3) and (X<=-2)) and ((Y<=1) and (Y>=-2)) then
begin
U:=ln(X+Y)/ln(10);
end
else
if X*X+Y*Y<=1*1 then
begin
U:=X-Y+Z;
end
else U:=1;
writeln('U = ',U:5:2);
end.
Результат работы:
Задание 3. Использование циклических структурСоставить программу расчета значений функций двух переменных z=f(x,y) с использованием оператора цикла. Значение переменных x и y изменяются соответственно от xнач. до xкон. с шагом hx и от yнач. до yкон. с шагом hy и вводятся с клавиатуры. Указанные переменные относятся к вещественному типу. Вывести на экран таблицу значений x,y,z.
Вычислить
Внешний цикл – while, внутренний – repeat.
Текст программы:
Program pr_3;
var
i,j:integer;
x,xn,xk,hx,y,yn,yk,hy,z:real;
begin
writeln('Vvedite nachalnoe znachenie x');
read(xn);
writeln('Vvedite konechnoe znachenie x');
read(xk);
writeln('Vvedite shag izmeneniya znacheniya x');
read(hx);
writeln('Vvedite nachalnoe znachenie y');
read(yn);
writeln('Vvedite konechnoe znachenie y');
read(yk);
writeln('Vvedite shag izmeneniya znacheniya y');
read(hy);
writeln('x y z');
x:=xn;
while x<=xk
do
begin
y:=yn;
repeat
z:=(2*sqr(x)*x+cos(y)/sin(y))/sqrt(1+ln(sqr(y))/ln(10));
writeln(x:5:2,' ',y:5:2,' ',z:5:2);
y:=y+hy;
until y>yk;
x:=x+hx;
end;
readln;
end.
Результат работы:
Задание 4. Работа с двумерными массивамиСоставить программу преобразования двумерных массивов.
В целочисленной матрице А(3,4) найти m положительных элементов в четных столбцах. Сформировать матрицу В(3,4) по правилу
(i=1,…,3; j=1,…,4)
В первой строке матрицы А найти максимальный по модулю элемент.
Текст программы:
Program pr_4;
var
i,j,m:integer;
A,B: array [1..3,1..4] of real;
max:real;
begin
writeln('Vvod matrici po strokam');
for i:=1 to 3 do
begin
for j:=1 to 4 do
begin
writeln('Vvedite element matrici');
readln(A[i,j])
end;
end;
m:=0;
j:=2;
while j<=4 do
begin
for i:=1 to 3 do
begin
if A[i,j]>0 then m:=m+1;
end;
j:=j+2;
end;
for i:=1 to 3 do
begin
for j:=1 to 4 do
begin
if m=0 then B[i,j]:=A[i,j]
else B[i,j]:=A[i,j]/m;
end;
end;
max:=abs(A[1,j]);
for j:=1 to 4 do
begin
if max<abs(A[1,j]) then max:=abs(A[1,j]);
end;
writeln('Matrica A');
for i:=1 to 3 do
begin
writeln('');
for j:=1 to 4 do
begin
write(A[i,j]:5:0);
end;
end;
writeln('');
writeln('Matrica B');
for i:=1 to 3 do
begin
writeln('');
for j:=1 to 4 do
begin
write(B[i,j]:5:2);
end;
end;
writeln('');
writeln('m = ',m);
writeln('maksimalniy po modulyu element pervosy stroki ', max:5:0);
readln;
end.
Результат работы:
Задание 5. Использование процедурДаны две вещественные матрицы А(7,7) и В(5,5). Из матрицы А сформировать одномерный массив С по правилу, а из матрицы В сформировать массив D по тому же правилу. Для ввода матрицы, формирования одномерных массивов и вывода одномерных массивов применить три PROCEDURE. При вводе матрицы и выводе одномерных массивов вывести на экран сообщения с указанием соответственно имени вводимой матрицы или имени выводимого одномерного массива.
Правило: Из сумм квадратов элементов четных столбцов.
Текст программы:
Program pr_5;
type mas=array[1..7,1..7] of integer;
mas2=array[1..3] of integer;
var
A,B: mas;
C,D: mas2;
Procedure FillArr(var a:mas; row, col: integer);
var i,j:integer;
begin
for i := 1 to row do
for j := 1 to col do readln(a[i,j]);
end;
Procedure ActArr(var a:mas; count1,count2: integer; b:mas2);
var i,j,S,k:integer;
begin
k:=1;
for j:=2 to count1 do
begin
S:=0;
for i:=1 to count2 do S:=S+sqr(a[i,j*2-2]);
b[k]:=S;
k:=k+1;
end;
end;
Procedure OutputArr(var a:mas2; col: integer);
var i:integer;
begin
for i:=1 to col do write(a[i]:5);
end;
begin
writeln('Vvod matrici A'); fillarr(A, 7, 7);
writeln('Vvod matrici B'); fillarr(B, 5, 5);
ActArr(A,4,7,C);
ActArr(B,3,5,D);
writeln('Massiv C');
OutputArr(C, 3); writeln;
writeln('Massiv D');
OutputArr(D,2);
readln;
end.
Результат работы:
Задание 6. Текстовый файлДан текстовый файл f. Преобразовать строки файла f по правилам. Преобразованные строки переписать в файл g.
Правило: Создать строку из символов, расположенных после первой запятой. Если запятых нет, то записать пустую строку.
Текст программы:
Program pr_6;
var
f,g:text;
s:string;
i,k:integer;
begin
assign(f,'C:\text.txt');
reset(f);
assign(g,'C:\text2.txt');
rewrite(g);
while not eof(f) do
begin
k:=0;
readln(f,s);
for i:=1 to length(s) do
begin
if s[i]=',' then
begin
k:=i+1;
break;
end;
end;
if k<>0 then
begin
for i:=k to length(s) do
begin
write(g,s[i]);
end;
writeln(g,'');
end
else
writeln(g,'');
end;
close(f);
close(g);
readln
end.
Результат работы:
Входной файл
Выходной файл