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

Поиск коэффициентов кубического уравнения. Расчет количества итераций для заданной погрешности по реккурентному соотношению. Заполнение матрицы по условию. Поиск наибольшего целочисленного элемента массива, не имеющего себе равных в другом массиве.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 20.12.2012
Размер файла 52,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Задача 1

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

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

Блок-схема

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

Program Exercise_1;

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 Exercise_2;

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 Exercise_3;

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 Exercise_4;

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 Exercise_5;

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 Exercise_6;

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 Exercise_7;

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 Exercise_10;

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. Размещено на Allbest.ru


Подобные документы

  • Специфические типы массивов. Составление программы по вычислению произведения матриц. Нахождение наибольшего элемента в массиве. Вывод номера строки и столбца, в котором он содержится, на экран. Создание массива, заполнение его рандомными числами.

    отчет по практике [309,0 K], добавлен 07.01.2014

  • Изучение элементов языка С++, программирование разветвлений и циклов с использованием операторов условного и перехода. Обработка одномерных массивов. Поиск максимального элемента массива с заданной размерностью. Листинги программы и результатов.

    курсовая работа [647,7 K], добавлен 05.02.2013

  • Изучение классов и методов языка программирования C#. Реализация программирования математических задач. Поиск корня на монотонном интервале квадратичного полинома. Ручной подсчёт отладочного варианта. Заполнение массива, хранящего информацию о студентах.

    курсовая работа [752,1 K], добавлен 27.02.2015

  • Поиск в массивах и списках, ключ и произвольные данные. Линейный (последовательный) поиск. Бинарный поиск в упорядоченном массиве. Алгоритм Рабина-Карпа, простая и улучшенная хэш-функция. Алгоритм Бойера-Мура со сдвигом по стоп-символам и по суффиксам.

    презентация [1,5 M], добавлен 19.10.2014

  • Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.

    лабораторная работа [123,5 K], добавлен 15.01.2014

  • Разработка алгоритма и программы для вычисления функции, заданной интервально на различных промежутках. Алгоритм и программа формирования одномерного массива по условию, заданной интервально на различных промежутках. Решение нелинейного уравнения.

    курсовая работа [38,3 K], добавлен 17.11.2010

  • Одномерные числовые массивы, образование элементами целочисленного массива невозрастающей последовательности. Программное нахождение суммы элементов каждой возможной строки матрицы и формирование массива из найденных сумм, вывод массива-результата.

    лабораторная работа [12,8 K], добавлен 09.01.2011

  • Организация поиска информации по заданной теме в сети Интернет. Поиск с помощью поисковых машин. Преимущества и недостатки метода поиска по ключевому слову (фразе). Поиск в каталогах информационных ресурсов. Преимущества и недостатки предметных каталогов.

    курсовая работа [47,5 K], добавлен 03.11.2010

  • Нахождение с заданной погрешностью корней уравнения. Оценка скорости сходимости. Нахождение промежутка, в котором содержится какой-либо корень уравнения для методов итераций и Ньютона. Разработка текста компьютерных программ для решения данных уравнений.

    лабораторная работа [253,9 K], добавлен 19.12.2012

  • Аннотация и инструменты базы BioCyc. Варианты поиска BioCyc. Поиск генов, белков, РНК и соединений. Поиск сайтов ДНК или мРНК, рост Медиа. Анализ поиска в полнотекстовых статьях. Ключевые аспекты данных BioCyc. Поиск кросс-организма и поиск BLAST.

    презентация [5,3 M], добавлен 11.06.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.