Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
из 10 + паскаль.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
101.01 Кб
Скачать
  1. В редакторе VBA создайте процедуру, позволяющую организовать самопроверку усвоения материала учащимся по теме «Округление десятичных дробей». Диапазон, из которого случайным образом генерируется число для округления – (0;70).

Dim a, b As Double

Dim c

c = InputBox("Введи свою фамилию и имя")

MsgBox ("Здравствуй, " & c & "! Ты умеешь округлять дроби? Проверим! ")

Dim r

r = Rnd() * (70)

Dim t

t = InputBox ("Введи результат округления числа " & r & " до сотых")

Dim p

p = Format (t, "#.00")

Dim u

u = IIf (t = p, " результат округления правильный ", " результат округления не правильный!")

MsgBox (t & u)

MsgBox ("Верный результат округления числа " & r & " с точностью до сотых равен " & p)

Решение: 1. Находим плотность распределения:

находим производные f’ (x) на каждом участке f’ (0) =0; f’ (х2) =;

f’ (1) =0, т.е. при х <=0 плотность распред. =0, при 0<=х<=1 плотность распред. = 2х и при х>1 плотность распред. =0.

2.Находим вероятность попадания на участок от 0,26 до 0,5:

P = f(0,5) – f(0,25) = 0,52 – 0,252 = 0,18.

3. На языке программирования С#, используя необходимые классы проекта «Планиметрия», решите следующую задачу. Дан массив точек на плоскости. Укажите в нём три такие точки, чтобы треугольник с вершинами в этих точках имел наименьшую площадь и находился в нижней полуплоскости. Если такого треугольника нет, то выдайте соответствующее сообщение.

//тут для наибольшей

double max, pl = 0; int a, b, c = 0;

Triangle tr1 = new Triangle(mas[0],

mas[1], mas[2]); max = tr1.area();

for (i = 0; i < n - 2; i++)

{ for (int j = i + 1; j < n - 1; j++)

{ for (int k = j + 1; k < n; k++)

{ Triangle tr = new Triangle(mas[i], mas[j], mas[k]);

pl = tr.area();

if (tr.Is_Triangle)

{ if (pl > max)

{ if ((mas[i].koord_y < 0) && (mas[j].koord_y < 0)

&& (mas[k].koord_y < 0))

{ max = pl;

a = i; b = j; c = k;

Console.WriteLine("Наибольшая площадь равна

" + max + " при точках:");

mas[i].show_point(); mas[j].show_point();mas[k].show_point();

} } }

else { Console.WriteLine("такого треугольника нет!!!"); }}}}

Тестирование треугольника

Triangle tr1=new Triangle(); if (tr1.Is_Triangle == true)

Console.WriteLine("треугольник существует его периметр = {0:0.####},площадь ={1:0.###}",

tr1.perimetr(),tr1.area());

else Console.WriteLine ("треугольник не существует его периметр = {0:0.####},площадь ={1:0.###}",

tr1.perimetr(), tr1.area());

Triangle tr2 = new Triangle(mas[0], mas[n - 1], mas[n - 2]);

if (tr2.Is_Triangle == true)

Console.WriteLine("треугольник существует его

периметр = {0:0.####},площадь ={1:0.###}",

tr2.perimetr(),tr2.area());

else Console.WriteLine("треугольник не существует его периметр = {0:0.####},площадь ={1:0.###}",tr2.perimetr(), tr2.area());

  1. Используя возможности системы компьютерной математики MathCad, найдите в общем (символьном) виде точки пересечения прямой y k x и параболы y x2 bx c. Выполните графическую иллюстрацию для случая =  1, b = , c = – 4 и укажите точки пересечения графиков функций.

5. Вычислите значение определенного интеграла методом трапеций (число разбиений n = 50). Сравните с точным значением интеграла.

Формула Трапеции (h- шаг, как его выбирать – не знаю),y =f(x)

7. Вычислите значение определенного интеграла методом Симпсона (число разбиений n = 50). Сравните с точным значением интеграла.

Формула Симпсона. 2m=b, 0=a. Чётные и не чётные

  1. На языке программирования С#, используя необходимые классы проекта «Планиметрия», решите следующую задачу. Дан массив точек на плоскости. Укажите в нём такие точки X, Y, Z, чтобы точка X находилась в 1-ом координатном углу, точка Y находилась во 2-ом координатном углу, точка Z находилась в 3-ем координатном углу, и треугольник XYZ имел площадь, не меньшую 7 кв. ед. Если таких точек в массиве нет, то выдайте соответствующее сообщение.

int S, kol; kol = 0; S = 7; for (uint i = 0; i < n - 2; i++)

for (uint j = i + 1; j < n - 1; j++) for (uint z = j + 1; z < n; z++)

{ Triangle tr3 = new Triangle(mas[i], mas[j], mas[z]);

if (mas[i].koord_x > 0 && mas[i].koord_y > 0 && mas[j].koord_x < 0

& mas[j].koord_y > 0 && mas[z].koord_x < 0 && mas[z].koord_y < 0)

{ double a = new Otrezok(mas[i], mas[j]).perimetr();

double b = new Otrezok(mas[i], mas[z]).perimetr();

double c = new Otrezok(mas[j], mas[z]).perimetr();

double p = (a + b + c) / 2;

if (S > Math.Sqrt(p * (p - a) * (p - b) * (p - c)))

{ kol++;

Console.WriteLine(" треугольник существут s<7");

Console.WriteLine("координаты его вершин ");

mas[i].show_point(); mas[j].show_point(); mas[z].show_point();

Console.WriteLine("S=" + Math.Sqrt(p * (p - a) * (p - b) * (p - c)));

}}} if (kol < 1)

Console.WriteLine(" треугольник не существут s<7");

  1. На языке программирования С#, используя необходимые классы проекта «Планиметрия», решите следующую задачу. Дан массив точек на плоскости. Укажите в нём три такие точки, чтобы треугольник с вершинами в этих точках был равнобедренным и располагался в верхней полуплоскости. Если таких точек в массиве нет, то выдайте соответствующее сообщение.

//тут для 3-го координ. угла

uint kol; kol = 0;

for (uint i=0; i<n-2; i++) for (uint j=i+1; j<n-1; j++)

for (uint z = j + 1; z < n; z++)

{ Triangle tr3 = new Triangle(mas[i], mas[j], mas[z]);

if (tr3.Is_Triangle && tr3.Style1() == "Равнобедренный")

{ if (((mas[i].koord_x < 0) && mas[i].koord_y < 0)

* && ((mas[j].koord_x < 0) && (mas[j].koord_y < 0))

* && ((mas[z].koord_x < 0) && (mas[z].koord_y < 0)))

{ Console.WriteLine("Равнобедренный треугольник существут ");

Console.WriteLine("координаты его вершин ");

mas[i].show_point(); mas[j].show_point(); mas[z].show_point();

* }

else Console.WriteLine("такого треугольника нет");

} else Console.WriteLine("Равнобедренного треугольника нет");

1. Дан натуральный отрезок чисел [A,B]. Найти те числа этого отрезка, суммы делителей которых меньше заданного числа Х. Проверку, является ли сумма делителей данного числа меньше заданного числа Х, сделать с помощью процедуры пользователя.

PROGRAM ASC;

Var i, k, a, b, d, x: integer; flag: boolean;

procedure AQ (d,x:integer; var f: boolean);

begin if (d<x) then f:= true

else f:=false; end; begin writeln ('ввести концы отрезка');

readln(a,b); writeln ('ввести число для сравнения');

readln(x); for i:=a to b do

begin k:=0;

for d:=1 to i do if i mod d = 0

then k:=k+d; AQ (k,x, flag );

if flag=true then writeln ('сумма делителей числа ', i ,' меньше заданного числа', x); end; readln; end.

2. Дан натуральный отрезок чисел [A,B]. Найти те числа этого отрезка, суммы цифр которых больше заданного числа Х. Проверку, является ли сумма цифр данного числа больше заданного числа Х, сделать с помощью логической функции пользователя.

program aas; uses crt;

var a,b,i,y, c, x, s: integer;

function sum(s,x:integer):boolean;

begin

if s > x then sum:=true else sum:=false; end;

begin writeln (' ввести концы отрезка'); readln (a, b);

writeln (' ввести число'); readln (x);

for i:=a to b do

begin y:=i; s:=0;

while y<>0 do begin c:=y mod 10;

s:=s+c; y:=y div 10; end;

if sum(s,x) then writeln ('сумма цифр числа ' , i,' > ',x) end; end.

3. Даны три числа а, в, с. Найти наибольший общий делитель этих чисел. Определение наибольшего общего делителя двух чисел оформить в виде функции пользователя.

program nod; uses crt; var a,b,c,n: integer;

function nod(x,y:integer):integer;

begin

while x <> y do if x>y then x:=x-y else y:=y-x;

nod:=x; end; begin

writeln (' ввести числа a,b,c'); readln (a, b, c);

n:=nod(nod(a,b),c);

writeln ('NOD(a,b,c) = ',n); readln; end.

4. Даны координаты вершин некоторого пятиугольника. Разбив его на треугольники вычислить его площадь. Вычисление площади треугольника по формуле Герона оформить в виде процедуры пользователя.

PROGRAM ASC;

Var xa,ya,xb,yb,xc,yc,xd,yd,xe,ye,s1,s2,s3,pls:real;

procedure Plos (x1,y1,x2,y2,x3,y3:real; var s: real); var d1,d2,d3,p:real; begin

d1:= sqrt(sqr(x1-x2)+sqr(y1-y2)); d2:= sqrt(sqr(x2-x3)+sqr(y2-y3));

d3:= sqrt(sqr(x3-x1)+sqr(y3-y1)); p:= d1+d2+d3;

s:=sqrt(p*(p-d1)*(p-d2)*(p-d3)); end;

begin writeln ('введите к-ты точки А'); readln(xa,ya);

writeln ('введите к-ты точки B'); readln(xb,yb);

writeln ('введите к-ты точки C'); readln(xc,yc);

writeln ('введите к-ты точки D'); readln(xd,yd);

writeln ('введите к-ты точки E'); readln(xe,ye);

plos(xa,ya,xb,yb,xc,yc,s1); plos(xa,ya,xc,yc,xd,yd,s2);

plos(xa,ya,xd,yd,xe,ye,s3); pls:=s1+s2+s3;

writeln(площадь пятиугольника = ', pls); readln; end.

5. Даны две простые дроби числитель первой А, знаменатель В, числитель второй дроби С, знаменатель D. Найти их сумму, и если можно сократить полученный результат. Определение наибольшего общего делителя двух чисел оформить в виде функции пользователя.

program drob; uses crt; type zap=record

ch,zn:integer; end; var s,sum,x,y: zap; k:integer;

function nod(x,y:integer):integer;

begin while x <> y do if x>y then x:=x-y else y:=y-x; nod:= x; end; begin

writeln (' ввести числитель и знаменатель первой дроби'); readln (x.ch,x.zn);

writeln (' ввести числитель и знаменатель второй дроби '); readln (y.ch,y.zn);

s.ch:=x.ch*y.zn+y.ch*x.zn; s.zn:=x.zn*y.zn;

k:=nod(s.ch,s.zn); sum.ch:=s.ch div k; sum.zn:=s.zn div k;

writeln (x.ch, '/' , x.zn, ' + ',y.ch, '/' , y.zn,' = ',s.ch, '/' , s.zn,' = ', sum.ch, '/' , sum.zn); readln; end.

6. Дан натуральный отрезок чисел [A,B]. Найти те числа этого отрезка, которые при делении на данное число K, дают в остатке число 4. Проверку, равен ли остаток четырем при делении данного числа на K, сделать с помощью логической функции пользователя.

PROGRAM ost; Var i, k, a, b: integer; flag: boolean;

function ravn (n,k:integer ): boolean; begin

if (n mod k=4) then ravn:= true else ravn:=false; end; begin

writeln ('ввести концы отрезка'); readln(a,b); writeln ('ввести число K');

readln(k); for i:=a to b do begin if ravn(i,k) then writeln ('при деление на число ', k ,' остаток равен 4 у числа ', i);

end; readln; end.

7. Дан числовой неупорядоченный массив, содержащий не более n<=50 целых чисел. Составить новый массив, элементами которого являются суммы цифр каждого числа исходного массива.

Ввод, вывод массива, а также нахождение суммы цифр оформить в виде подпрограмм.

Program Zadacha_3; Uses Crt;

Type mas=array[1 .. 50] of Integer; Var a,b:mas; n,i,S,y:Integer;

Procedure Vvod(n:Integer;Var a:mas);

Var i:Integer; Begin

For i:=1 to n do a[i]:=Random(100); End;

Procedure Vivod(n:Integer;a:mas); Var i:Integer;

Begin For i:=1 to n do Write(a[i]:5); WriteLn; End;

Procedure P_3(y:Integer;Var S:Integer);

Var i,x:Integer; Begin S:=0; Repeat x:=y mod 10; S:=S+x; y:=y div 10;

Until y=0; End; Begin

WriteLn('Введите количество элементов массива');

ReadLn(n); Vvod(n,a); WriteLn('Исходный массив:');

Vivod(n,a);

For i:=1 to n do Begin y:=a[i]; P_3(y,S);

b[i]:=S; End; WriteLn('Новый массив:'); Vivod(n,b); End.

8. Дан одномерный массив А, содержащий не более N<=50 целых чисел.

Циклически сдвинуть элементы массива на К позиций вправо.

Ввод, вывод массива оформить в виде подпрограмм.

Program Zadacha_10;

Uses Crt;

Type mas=array[1 .. 50] of Integer;

Var a:mas; n,k,i,j,x:Integer;

Procedure Vvod(n:Integer;Var a:mas);

Var i:Integer; Begin For i:=1 to n do

a[i]:=Random(100); End;

Procedure Vivod(n:Integer;a:mas);

Var i:Integer; Begin For i:=1 to n do

Write(a[i]:5); WriteLn; End;

Begin WriteLn ('Введите количество элементов в массиве и количество позиций сдвига'); ReadLn(n,k); Vvod(n,a);

WriteLn('Исходный массив:'); Vivod(n,a);

For i:=1 to k do Begin x:=a[n];

For j:=n-1 downto 1 do a[j+1]:=a[j]; a[1]:=x; End; WriteLn('Новый массив:'); Vivod(n,a); End.