Основы программирования

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Задача 1

Условие задачи

Заданы три корня кубического уравнения: X1, X2, X3. Найдите коэффициенты этого уравнения.

Блок-схема

Листинг с комментариями

Program Exercise1;

var X1, X2, X3: Real;

A, B, C, D: Real;

begin

Write ('X1: ');

Readln (X1);

Write ('X2: ');

Readln (X2);

Write ('X3: ');

Readln (X3);

Writeln;

A:= 1; // коэффициент при x в степени 3

B:= - (X1+X2+X3); // коэффициент при x в степени 2

C:= X1*X2+X1*X3+X2*X3; // коэффициент при x в степени 1

D:= - (X1*X2*X3); // свободный член

Writeln ('A = 1');

Writeln ('B = ', B: 0:1);

Writeln ('C = ', C: 0:1);

Writeln ('D = ', D: 0:1);

Readln;

end.

Таблица исполнения

X1

X2

X3

A

B

C

D

1

2

3

1

-6

11

-6

A = 1

B = - (1+2+3) = -6

C = 1*2+1*3+2*3 = 11

D = - (1*2*3) = -6

Таблица тестов

X1

X2

X3

A

B

C

D

5

12

4

1

-21

128

-240

10

1

8

1

-19

98

-80

2. 5

3

17

1

-22. 5

101

-127. 5

-2

4

7

1

-9

6

56

15

-4. 2

-10. 8

1

0

-79. 6

-680. 4

Задача 2

Условие задачи

Пройдет ли кирпич со сторонами a, b и c сквозь прямоугольное отверстие со сторонами r и s? Стороны отверстия должны быть параллельны граням кирпича.

Листинг с комментариями

Program Exercise2;

var

a: array [1. 3] of real;

b: array [1. 2] of real;

i, j: integer;

k: real;

begin

// заполняем 1 массив

for i: =1 to 3 do

begin

case i of

1: Write ('Введите a: ');

2: Write ('Введите b: ');

3: Write ('Введите c: ');

end;

Readln (a[i]);

end;

// заполняем 2 массив

for i: =1 to 2 do

begin

case i of

1: Write ('Введите r: ');

2: Write ('Введите s: ');

end;

Readln (b[i]);

end;

// сортировка 1 массива

for i: =1 to 2 do

for j: =i+1 to 3 do

if a[i]< a[j] then

begin

k: =a[i];

a[i]: =a[j];

a[j]: =k;

end;

// сортировка 2 массива

if b[1]< b[2] then

begin

k: =b[1];

b[1]: =b[2];

b[2]: =k;

end;

// сравнение наиб. элементов массивов

if (a[2]< b[1]) and (a[3]< b[2]) then

Writeln ('Пройдёт')

else

Writeln ('Не пройдёт');

Readln;

end.

Таблица исполнения

a

b

c

r

s

a (1)

a (2)

a (3)

b (1)

b (2)

1 and 2

Вывод

15

3

8

2

5

15

3

8

2

5

8<5 and 3< 2

Не пройдет

15

8

3

5

2

8<5 — ложь и 3<2 — ложь не пройдет

Таблица тестов

a

b

c

r

s

Вывод

2

7

14

6

9

Пройдет

12

5

1

2

8

Пройдет

10

13

8

14

7

Не пройдет

11

4

5

4

5

Не пройдет

7

1

6

8

2

Пройдет

Задача 3

Условие задачи

Для заданных a и p вычислить x = по реккурентному соотношению:

,.

Сколько итераций надо выполнить, чтобы для заданной погрешности выполнялось соотношение: ?

Блок-схема

Листинг с комментариями

Program Exercise3;

const

e=0. 0001;

var

a, x, xn: real;

flag: boolean;

i, p: integer;

function kvadr (chislo: real; stepen: integer):real;

var

k: real;

g: integer;

begin

k: =1;

for g: =1 to stepen do

k: =k*chislo;

kvadr: =k;

end;

begin

flag: =true;

write ('введите а: ');

readln (a);

write ('введите p: ');

readln (p);

x: =a;

i: =0;

while flag do

begin

xn: =(1/p)*((p-1)*x+(a/kvadr (x, p-1)));

if abs (x-xn)<e then

flag: =false

else

x: =xn;

i: =i+1;

end;

writeln ('x = ', x: 3:2);

writeln ('интерации = ', i);

readln;

end.

Таблица исполнения

e

a

p

x

kvadr

xn

i

0. 0001

1

3

1

k

g

x

p-1

kvadr

1

1

1

1

1

2

1

1

2

1

2

1

k=1*1=1, kvadr=1

k=1*1=1, kvadr=1

xn = (1/3)*((3−1)*1+1/1) = 1

|1−1| = 0 < 0. 0001 верно x=1, i=0+1=1

Таблица тестов

a

p

x

i

5

7

1. 26

13

4

9

1. 17

14

12

3

2. 29

8

2

15

1. 05

13

8

10

1. 23

22

Задача 4

Условие задачи

В массиве C (m) каждый третий элемент заменить полусуммой двух предыдущих, а стоящий перед ним — полусуммой соседних с ним элементов. Дополнительный (рабочий) массив не использовать.

Листинг с комментариями

Program Exercise4;

Const

m=15;

var

C: array [1. m] of real;

i: integer;

i3, i4: real;

begin

Randomize;

for i: =1 to m do

C[i]: =Random (9);

for i: =1 to m do

Write (C[i]: 2:0,' '); //: 2:0 ноль это дробная часть

Writeln;

i: =3;

while i< =m do

begin

i3: =(C [i-1]+ C [i-2])/2;

i4: =(C[i]+C [i-2])/2;

C[i]: =i3;

C [i-1]: =i4;

i: =i+3;

end;

for i: =1 to m do

Write (C[i]: 2:0,' '); //: 2:0 ноль это дробнаячасть

Writeln;

readln;

end.

Таблица исполнения

С1(1)

С1(2)

С1(3)

С1(4)

С1(5)

С1(6)

С2(1)

С2(2)

С2(3)

С2(4)

С2(5)

С2(6)

3

5

1

7

0

9

3

2

4

7

8

4

С2(1) = С1(1) = 3 С2(4) = С1(4) = 7

С2(2) = (3+1)/2 = 2 С2(5) = (7+9)/2 = 8

С2(3) = (3+5)/2 = 4 С2(3) = (7+0)/2 = 3,5 4

Таблица тестов

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

С (1)

1

1

7

4

2

3

0

4

8

4

7

4

7

2

4

4

2

7

5

6

3

4

2

8

8

6

4

3

6

4

4

2

1

2

8

0

6

5

8

8

4

8

1

8

4

7

2

2

2

1

5

6

7

6

8

8

6

1

3

5

7

7

3

1

6

8

1

8

8

6

2

0

3

3

3

3

0

3

2

6

4

7

8

7

8

2

3

1

3

3

3

0

4

Задача 5

Условие задачи

Матрицу А (m, n) заполнить следующим образом. Для заданных k и l элементу akl присвоить значение 1; элементам, окаймляющим его (соседним с ним по вертикали, горизонтали и диагоналям) — значение 2; элементам следующего окаймления — значение 3 и так далее до заполнения всей матрицы.

Листинг с комментариями

Program Exercise5;

Const n=10;

m=15;

Var A: array [1. n, 1. m] of Integer;

i, j, r, k, l: Integer;

Begin

Write ('k= ');

Readln (k);

Write ('l= ');

Readln (l);

Writeln;

for i: =1 to n do

for j: =1 to m do

begin

if (abs (i-k)< abs (j-l)) then

r: =abs (j-l)

else r: =abs (i-k);

A [i, j]: =r+1;

end;

Writeln ('Otvet: ');

for i: =1 to n do

begin

for j: =1 to m do

Write (A [i, j]: 3);

Writeln;

end;

readln;

end.

Таблица исполнения

k

l

A [1,1]

A [1,2]

A [1,13]

A [2,3]

A [2,4]

A [2,5]

A [10,15]

2

3

3

2

2

1

2

3

13

Таблица тестов

k

l

Сформированный массив

2

3

3

2

2

2

3

4

5

6

7

8

9

10

11

12

13

3

2

1

2

3

4

5

6

7

8

9

10

11

12

13

3

2

2

2

3

4

5

6

7

8

9

10

11

12

13

3

3

3

3

3

4

5

6

7

8

9

10

11

12

13

4

4

4

4

4

4

5

6

7

8

9

10

11

12

13

5

5

5

5

5

5

5

6

7

8

9

10

11

12

13

6

6

6

6

6

6

6

6

7

8

9

10

11

12

13

7

7

7

7

7

7

7

7

7

8

9

10

11

12

13

8

8

8

8

8

8

8

8

8

8

9

10

11

12

13

9

9

9

9

9

9

9

9

9

9

9

10

11

12

13

Задача 6

Условие задачи

Даны два целочисленных массива К (m) и L (n). Найти наибольший элемент массива K, не имеющий себе равных в массиве L.

Листинг с комментариями

Program Exercise6;

Const m=15;

n=10;

Var k: array [1. m] of Integer;

l: array [1. n] of Integer;

i, j, imax, b, r: Integer;

flag: boolean;

begin

Randomize;

for i:= 1 to m do

k[i]:= -25 + random (75);

Write ('k: ');

for i:= 1 to m do

Write (k[i]: 4);

Writeln;

for i:= 1 to n do

l[i]:= -25 + random (75);

Write ('l: ');

for i:= 1 to n do

Write (l[i]: 4);

Writeln;

// сортировка массива k

for i:= 1 to m-1 do

begin

imax:= i;

for j:= i+1 to m do

if k[j]> k[imax] then

imax: =j;

b: =k[i];

k[i]: =k[imax];

k[imax]: =b;

end;

Writeln ('new_k: ');

for i:= 1 to m do

Write (k[i]: 4);

Writeln;

// Проверяем (с max) элементы k[i] на наличие их в массиве l

r:= 1;

flag: =true;

while flag and not (r=m+1) do // чтобы не выйти за пределы массива

begin

for i: =1 to n do

if k[r]=l[i] then

begin

r: =r+1; // переходим к следующему элементу массива k

break;

end

else flag: =false;

end;

if flag then

writeln ('net takogo');

end;

Writeln;

Writeln ('Otvet: ', k[r]);

Writeln;

Readln;

end.

Таблица исполнения

Массивы

Ответ

k

-6

-10

21

31

1

33

48

-24

34

30

35

32

-2

-5

31

48

new_k

48

35

34

33

32

31

31

30

21

1

-2

-5

-6

-10

-24

l

37

26

33

49

-13

1

9

39

6

9

Таблица тестов

Массивы

Ответ

k

12

-7

49

14

-19

2

24

6

-12

44

20

25

-17

28

16

49

l

-19

43

-8

-9

32

2

10

-7

27

38

k

5

-8

20

-2

-1

-24

39

-22

23

47

15

11

17

-17

-25

47

l

2

30

36

35

36

19

10

-22

-21

24

k

-17

-4

6

49

20

-5

-19

-8

26

21

13

-12

-3

20

-7

49

l

-3

-8

-10

-20

13

36

22

10

8

-14

Задача 7

массив уравнение итерация матрица

Условие задачи

Упорядочить по неубыванию каждую строку матрицы A (m, n), а после этого перестановкой строк упорядочить всю матрицу по неубыванию элементов первого столбца.

Листинг с комментариями

Program Exercise7;

const

m=10;

n=10;

var

a: array [1. m, 1. n] of integer;

b: array [1. m] of integer;

i, j, p, k, t, s: integer;

procedure change (one, two: integer);

var

i1: integer;

begin

for i1:= 1 to n do

begin

s: =a [one, i1];

a [one, i1]: =a [two, i1];

a [two, i1]: =s;

end;

end;

begin

Randomize;

for i:= 1 to m do

for j:= 1 to n do

a [i, j]: =Random (40);

// вывод массива

for i:= 1 to m do

begin

for j:= 1 to n do

Write (a[i, j]: 3);

writeln;

end;

writeln;

// Сортировка

for i:= 1 to m do

for j:= 1 to n-1 do

for t:= 1 to n-j do

if a [i, t]>a [i, t+1] then

begin

s: =a [i, t];

a [i, t]: =a [i, t+1];

a [i, t+1]: =s;

end;

// вывод массива

for i:= 1 to m do

begin

for j:= 1 to n do

Write (a[i, j]: 3);

writeln;

end;

writeln;

// замена

for i:= 1 to m-1 do

for j:= 1 to m-i do

if a [j, 1]>a [j+1,1] then

change (j, j+1);

// вывод массива

for i:= 1 to m do

begin

for j:= 1 to n do

Write (a[i, j]: 3);

writeln;

end;

readln;

end.

Таблица исполнения

Исходный массив

Промежуточный массив

Результат

1

19

6

3

22

1

3

6

19

22

0

15

20

22

33

33

20

15

0

22

0

15

20

22

33

1

3

6

19

22

27

32

6

3

39

3

6

27

32

39

1

15

22

24

24

25

17

2

18

26

2

17

18

25

26

2

17

18

25

26

24

24

15

1

22

1

15

22

24

24

3

6

27

32

39

Таблица тестов

Исходный массив

Результат

18

27

0

20

2

36

5

8

5

19

0

2

5

5

8

18

19

20

27

36

1

13

5

8

39

38

27

36

0

31

0

1

5

8

13

27

31

36

38

39

29

35

32

13

36

2

4

12

7

26

0

5

5

8

8

10

13

19

19

29

24

36

37

29

34

11

22

28

21

35

0

4

5

7

8

8

22

32

34

37

8

19

0

8

5

10

13

5

29

19

0

10

21

23

28

28

29

33

34

35

12

23

3

17

9

19

6

34

29

18

0

6

6

7

16

24

24

28

33

34

34

5

22

7

8

0

37

32

4

8

2

4

7

12

13

26

29

32

35

36

10

33

28

21

28

23

35

29

34

0

3

6

9

12

17

18

19

23

29

34

35

16

26

39

37

11

9

36

15

22

9

11

15

16

22

26

35

36

37

39

7

28

16

34

0

24

24

33

6

6

11

21

22

24

28

29

34

35

36

37

Задача 10

Условие задачи

Даны длины a, b, c сторон некоторого треугольника. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника. (Длина медианы, проведенной к стороне a, равна.

Листинг с комментариями

Program Exercise10;

Var a, b, c: Integer;

a1, b1, c1, m1, m2, m3: Real;

begin

Write ('a = ');

Readln (a);

Write ('b = ');

Readln (b);

Write ('c = ');

Readln (c);

// проверка существования треугольника

if (a> =b+c) or (b> =a+c) or (c> =a+b) then

begin

Writeln ('Net');

readln;

end

else

a1:= 0. 5*sqrt (2*b*b+2*c*c-a*a);

b1:= 0. 5*sqrt (2*a*a+2*c*c-b*b);

c1:= 0. 5*sqrt (2*a*a+2*b*b-c*c);

m1:= 0. 5*sqrt (2*b1*b1+2*c1*c1-a1*a1);

m2:= 0. 5*sqrt (2*a1*a1+2*c1*c1-b1*b1);

m3:= 0. 5*sqrt (2*a1*a1+2*b1*b1-c1*c1);

Writeln ('m1 = ', m1: 3:2);

Writeln ('m2 = ', m2: 3:2);

Writeln ('m3 = ', m3: 3:2);

Readln;

end.

ПоказатьСвернуть
Заполнить форму текущей работой