A1048

Задача. Одним из наиболее часто встречающихся видов списка является стек-список, в котором все включения и исключения элементов делаются только на одном его конце — вершине стека. Механизм функционирования стека хорошо отражен в другом его названии — список типа «LIFO» (last in first out) -«последним вошел — первым вышел»).

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

Составить процедуры, реализующие операции занесения элемента в стек и удаления элемента из его вершины.

Тесты:

Ввод Вывод Комментарий
push 5push 7

pop

push 11

pop

exit

okok

7

ok

11

bye

Пройден
push 1pop

pop

push 15

pop

exit

ok1

error

ok

15

bye

Пройден
poppush 7

push 9

push 9

push 1

pop

pop

pop

pop

exit

errorok

ok

ok

ok

1

9

9

7

bye

Пройден

Решение:

В структуре stack, реализованной с помощью массива, опишем операции добавления элемента в стек и удаления элемента из его вершины.

Данные операции выполняются после получения соответствующих команд.  В программе будем выполнять дополнительную проверку, чтобы избежать удаления элемента из пустого стека.

Программа завершает работу после получения команды exit.

С работой программы можно ознакомиться здесь.

А702б

Задача.  Дана квадратная матрица порядка n. Получить вектор  Ab, где b-вектор, элементы которого вычисляются по формулам:

[latex]b_{i}=\begin{cases}\frac{1}{i^{2}+2} & \text{, if i mod 2=0} \\ \frac{1}{i} & \text{, other case } \end{cases}[/latex]

i=(1,…,n).

Тесты:

Вход Выход Комментарий
4
1 2 1 1
1 3 6 9
1 2 1 1
1 6 3 18
1.72222 4 1.72222 4 Пройден
3
0 0 0
1 1 1
2 2 2
0 1.5 3 Пройден
4
1 2 2 9
3 4 1 18
1 1 1 1
0 0 0 0
2.5 5 1.55556 0 Пройден
Решение:

Согласно условию находим вектор b. По формуле [latex]Ab_{i}=\sum_{j=1}^{n}A_{ij}b_{j}[/latex], i=(0,…,n) находим произведение матрицы на вектор.

С работой программы можно ознакомится здесь.

AA1

Задача.  В заданной строке заменить подряд идущие пробелы на один пробел.

Тесты:

Ввод Вывод Комментарий
as  fg   t as fg t Пройден
   rty g  uio  rty g uio Пройден
Решение:

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

С работой программы можно ознакомиться здесь.

А119б

Задача.  Вычислить бесконечную сумму с заданной точностью [latex]\varepsilon(\varepsilon >0)[/latex]. Считать, что требуемая точность достигнута, если несколько первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем [latex]\varepsilon[/latex], это и все последующие слагаемые можно уже не учитывать. Вычислить:

[latex]\sum_{i=1}^{\infty}{\frac{1}{i(i+1)}}[/latex].

Тесты:

[latex]\varepsilon[/latex] s Комментарий
0.035 0.800 Пройден
0.085 0.667 Пройден
0.025 0.833 Пройден
Решение:

С помощью цикла подсчитываем сумму.

С работой программы можно ознакомиться здесь.

Ю11.6

Задача. Метод прямоугольников. Вычислить определенный интеграл [latex]I=\int_{a}^{b}{f(x)dx}[/latex] методом прямоугольников: [latex]\int^b_a f(x)\,dx \approx h (\frac{y_0}{2} + y_1 + \ldots + y_{n-1}+\frac{y_{n}}{2})[/latex], где [latex]n[/latex] — количество отрезков разбиения;  [latex]y_{0},y_{1},…,y_{n}[/latex] — значения функции на концах отрезков.

Вычислим для функции [latex] f(x)=2x^{3}-7x+4[/latex]:

[latex] \int_{0}^{2}{(2x^{3}-7x+4)dx}=2[/latex] Решение: 

Введена функция, которая подсчитывает значение в точке.  Согласно формуле в условии, вычисляем требуемое значение.

В условии приведена более точная формула, чем в учебнике.

С помощью программы можем наблюдать увеличение точности при увеличении количества отрезков разбиения. Сведем некоторые результаты в таблицу:

Количество отрезков разбиения на [a,b] Результат
50 2.0032
500 2.000032
1000 2.000008
5000 2.00000032

С работой программы можно ознакомиться здесь.

Ю4.23

Латинский квадрат. Латинским квадратом порядка n называется квадратная таблица размером n, каждая строка и каждый столбец которой содержит все числа от 1 до n. Для заданного n в матрице L(n;n) построить латинский квадрат порядка n.

Тесты:

Ввод Вывод Комментарий
5 1 2 3 4 5

2 3 4 5 1

3 4 5 1 2

4 5 1 2 3

5 1 2 3 4

Пройден
4 1 2 3 4

2 3 4 1

3 4 1 2

4 1 2 3

Пройден

Код на С++

Код на Java

 

Решение:

В предложенном варианте заполнения первый элемент строки — это ее номер увеличенный на единицу. Последующий элемент есть увеличенный на единицу предыдущий (если он не равен n), или 1 (в противном случае).

С работой программы на С++ можно ознакомиться здесь, а на Java здесь.