Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 70 стр.

UptoLike

Составители: 

70
Задача 15: Обнулить элементы тех столбцов, на пересечении которых
с главной диагональю стоит четный элемент.
Рассуждения о решении задачи:
1. Эта задача очень похожа на задачу с номером 14. Различие
заключается в том, что в 14-й задаче мы работали со строками, а в этой
задачесо столбцами.
2. Двухмерный массив можно рассматривать
и как массив столбцов.
Поэтому класс Array1D почти не изменится.
3. Вывод двухмерного массива нельзя реализовать через вывод столбцов.
Из-за этого функция вывода у одномерного массива (который
представляет собой столбец) не подходит.
4. Поэтому основной проблемой будет вывод строки. Пусть нам надо
вывести строку с номером 0, если мы знаем, что в
массиве 7 столбцов.
Тогда нам надо пройтись по каждому столбцу и вывести в текущем
столбце элемент с индексом 0. Логично предположить, что если нам
надо вывести строку с номером K, то следует пройтись по всем
столбцам и вывести из них элемент с номером K.
5. Однако это фраза на естественном языке. Приблизимся к кодам,
реализовав этот алгоритм на псевдокоде.
Получить номер строки для вывода и записать в переменную K
Для каждого столбца
НачалоЦикла
Из текущего столбца вывести элемент с номером K
ОкончаниеЦикла
6. Однако этот алгоритм можно уточнить
Получить номер строки для вывода и записать в переменную K
Для каждого столбца
НачалоЦикла
Из текущего столбца, а именно из массива данных в нем, вывести элемент
с номером K
ОкончаниеЦикла
7. Эта фраза уже готова к материализации в виде кода. Очевидно, что в
ней идет работа со множеством столбцов (т. е. одномерных массивов),
поэтому метод вывода строки должен быть в классе двухмерного
массива. Приведем реализацию в виде кода:
using System;
namespace ConsoleApplication17 {
class Program {
static void Main() {
Console.Write("Введите размер массива: ");
int size = Int32.Parse(Console.ReadLine());