Основы программирования
Поиск коэффициентов кубического уравнения. Расчет количества итераций для заданной погрешности по реккурентному соотношению. Заполнение матрицы по условию. Поиск наибольшего целочисленного элемента массива, не имеющего себе равных в другом массиве.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 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