Использование программирования в математике

Содержание



Задание 1. Вычисление значения арифметического выражения

Задание 2. Использование условного оператора

Задание 3. Использование циклических структур

Задание 4. Работа с двумерными массивами

Задание 5. Использование процедур

Задание 6. Текстовый файл




Задание 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.



Результат работы:

Входной файл





Выходной файл



 

14