Ю 4.24

                                                    «Нарастающий итог»

Задача:

В массиве А[n] каждый элемент, кроме первого, заменить суммой всех предыдущих элементов.

 
Вводимые данные Предполагаемый вывод Комментарий
1 1 1 1 1 1 1 1 2 3 4 5 Тест пройден
1 2 3 4 5 6 7 8 9 1 1 3 6 10 15 21 28 36 Тест пройден
3 5 2 9 0 4 65 156 1 3 3 8 10 19 19 23 88 244 Тест пройден
2 -7 3 8 -4 5 -2 4 2 2 2 -5 -2 6 2 7 5 9 Тест пройден

Исходный код:

 Описание:

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

Алгоритм:

  1. Объявление переменной и ввод размерности массива.
  2. Создание массива.
  3. Создание цикла, для записи вводимых данных в массив.
  4. Создание нового  массива.
  5. Создание цикла, для ввода обработанных данных в новый массив.
  6. Создание цикла, для вывода результата.
  7. Окончания работы программы.

Ссылка на Ideone.

Другой вариант:

Вариант без использования второго массива. Если действовать в лоб (последовательно менять значения элементов от первого до последнего на сумму предыдущих) можно получить различные геометрические прогрессии и даже, в некоторых случаях, последовательность Фибаначчи(так как мы меняем предшествующие элементы, и, при обычном подходе нет эффективного способа их запоминать). Подумав некоторое время над этой  проблемой, и осознав бесперспективность своих действий, решил зайти с другой стороны. Да, я не могу менять элементы в начале массива, но я могу менять их в конце, т. к. они не влияют на вычисления. Для этого пришлось создать новый цикл, в котором мы находим сумму всех элементов массива кроме последнего, величина которого (массива) уменьшается с каждым шагом. Далее, в главном цикле, мы последовательно присваиваем элементам массива найденные суммы. И уже после цикла присваиваем нулевому элементу значение первого.

Related Images:

Ю4.28

Задача:
Каждый из элементов [latex]x_{i}[/latex]массива [latex]X(n)[/latex] заменить средним значением первых [latex]i[/latex] элементов этого массива.

Тесты

[latex]n[/latex] Input Output Result
2 11 7 11 9 Пройден
12 7 4 33 56 22 3 22 5 6 7 8 9 7 7 5.5 14.667 24.4 20.833 21 19 17.556 16.5 15.7273 15.1667 Пройден
1 136 136 Пройден
3 -1 1 0 1 0 0 Пройден

Программный код:

Задача достаточно простая, так что стадию анализа можно пропустить и перейти сразу к алгоритму решения.

Алгоритм решения
Заполнение массива происходит последовательно. Следовательно, замену можно производить на лету, сразу же после ввода каждого элемента, что и происходит в программе.

Детали реализации:
Для вывода массива на экран использован цикл в стиле С++11.

Реализация на Java: http://ideone.com/gMXpf6

Related Images:

Ю4.27

Задача Ю4.27. Сессия. Результаты сессии, состоящей из трёх экзаменов, для группы из [latex]n[/latex] студентов представлены матрицей [latex]K \left(n,3 \right)[/latex]. Оценка ставится по четырёхбалльной системе; неявка обозначена единицей. Подсчитать количество неявок, неудовлетворительных, удовлетворительных, хороших и отличных оценок по каждому экзамену.

[latex]n[/latex] Оценки. Результат. Комментарий.
3 5 3 1

4 3 5

5 2 3

1: неявка (1), уд (1), отл (1).

2: уд (1), хор (1), отл (1).

3: неуд (1), уд (1), отл (1).

Тест пройден.
6 5 4 2 1 1 3

3 2 1 4 4 2

5 5 3 4 2 1

1: неявка (2), неуд (1), уд (1), хор (1), отл (1).

2: неявка (1), неуд (2), уд (1), хор (2).

3: неявка (1), неуд (1), уд (1), хор (1), отл (2).

Тест пройден.
2 2 4

1 5

3 3

1: неуд (1), хор (1).

2: неявка (1), отл (1).

3: уд (2).

Тест пройден.

Код программы (C++):

Java:

 

Изначально пользователю предлагается ввести количество студентов [latex]n[/latex]. Затем создаётся массив  [latex]K \left(n,3\right)[/latex], в котором будут храниться оценки студентов, а так же двумерный массив [latex]o \left(5,3 \right)[/latex], который, собственно говоря, и будет хранить статистику по оценкам. Внешний цикл перебирает экзамены (по [latex]j[/latex]), а внутренний — студентов (по [latex]i[/latex]). Затем пользователю предлагается ввести оценки студентов (сначала вводятся все оценки за первый экзамен, затем за второй, а потом уж за третий). В этом цикле находится «счётчик», который подсчитывает количество определённых оценок (или неявок) в зависимости от массива [latex]K \left(n,3\right)[/latex] на данном этапе цикла. Затем на экран выводятся элементы массива (в дальнейшем все элементы сохранятся, то есть с оценками студентов можно будет работать и дальше).

Код программы можно посмотреть тут (C++) и тут (Java).

Related Images: