Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ_УМР_Консоль.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

5. Обработка одномерных и двумерных массивов

Подготовка к работе

1. По указанной литературе изучить:

  • способы описания размеров массивов;

  • способы ввода и вывода массивов;

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

2. Разработать алгоритмы решения в соответствии с заданием.

3. Составить программы решения задач.

Контрольные вопросы

  1. Дайте понятие массива.

  2. Как объявляются массивы?

  3. Как осуществляется доступ к элементу массива?

  4. Какому типу принадлежат индексы массива, и его элементы?

  5. Как задаются одномерные и двумерные массивы?

  6. Какие операции можно производить над элементами массива?

  7. Какие способы ввода элементов массива Вы знаете?

  8. Какие инструкции языка С# можно использовать для ввода, вывода и обработки массивов?

  9. Каковы особенности организации цикла при обработке массивов?

  10. Каковы особенности программирования при обработке массивов?

  11. Как производится накопление суммы, произведения элементов массива?

  12. Как вывести на экран монитора одномерный массив в виде строки/столбца?

  13. Как вывести на экран монитора двумерный массив в виде матрицы?

Задание и порядок выполнения работы

  1. Задача1. Составить алгоритм, написать программу и создать проект – консольное приложение, которое позволяет произвести вычисление по заданию 1, приведенному в в табл. 5.1.

По всем вариантам задан одномерный массив из вещественных чисел в диапазоне –20 . . . +20. Необходимо:

  • описать массив (имя массива и его размерность заданы в табл. 5.1);

  • задать элементы массива из заданного диапазона;

  • вывести для контроля на экран элементы исходного массива;

  • выполнить с элементами массива действия, заданные в табл. 5.1;

  • вывести результаты решения задания на экран;

  • сохранить проект решения в своей папке на диске D:\Temp\ …\Prg \Р5\P5_1 под именем Mas1 в папке P5_1.

Таблица 5.1

N

Имя массива

Задание 1

1

А(10)

Вывести на печать подряд все четные положительные элементы массива

А

2

В(12)

Вычислить среднее арифметическое значение отрицательных элементов массива В.

3

G(16)

Вывести последовательность g1, g9, g2, g10, ... , g8, g16 и вычислить произведения образовавшихся пар (g1 g9)…(g8 g16) элементов массива G.

4

С(10)

Найти сумму s элементов массива С. Вычислить (s – c1, s – c2, …, s – c10). Результат вывести в одной строке.

5

H(14)

Вывести последовательность h1, h14, h2, h13, ... , h7, h8 и вычислить суммы образовавшихся пар (h1+ h14)… (h7+ h8) элементов массива H.

6

D(10)

Найти произведение p элементов массива D. Вычислить (p + d1, p + d2, …, p + d10 ). Результат вывести в виде столбца.

7

F(12)

Вычислить максимальный элемент массива сформированных пар (f1+ f12, f2 + f11, ... , f6 + f7 ).

8

L(16)

Переписать в массив L подряд положительные элементы массива M.

9

K(12)

Вычислить минимальный элемент массива сформированных пар ( k1· k7, k2 · k8, ... , k6 · k12 ).

10

P(12)

Переписать в массив Q подряд отрицательные элементы массива P.

11

F(10)

Вычислить среднее арифметическое значение m элементов массива F. Вычислить (f1 + m, f 2 + m, …, f10 + m).

12

N(8)

Вывести на печать подряд все нечетные отрицательные элементы массива N.

  1. Задача2. Составить алгоритм, написать программу и создать консольное приложение для решения задания 2, приведенного в табл. 5.2. Для всех вариантов задана квадратная целочисленная матрица размером 4х4, элементы которой находятся в диапазоне 0 . . . 99. Необходимо:

  • описать двумерный массив;

  • ввести элементы матрицы из заданного диапазона, используя функцию случайных чисел;

  • вывести элементы в виде матрицы 4х4;

  • выполнить с элементами матрицы действия, заданные в табл. 5.2;

  • вывести результаты решения задания на экран;

  • сохранить проект под именем Mas в своей папке на диске D:\Temp\ …\ Prg\ Р5\P5_2 в папке P5_2.

Таблица 5.2

№

Имя массива

Задание 2

1

F

Вычислить произведение элементов второго и третьего столбца матрицы.

2

D

Вывести на печать подряд четные элементы матрицы.

3

C

Вычислить среднее арифметическое матрицы.

4

B

Найти произведение элементов нечетных столбцов матрицы.

5

A

Вычислить произведение элементов двух последних столбцов матрицы.

6

F

Найти сумму элементов главной диагонали матрицы.

7

C

Вывести на печать подряд нечетные элементы матрицы.

8

B

Вычислить сумму элементов, расположенных по периметру матрицы.

9

D

Вычислить произведение элементов двух первых строк матрицы.

10

A

Найти сумму элементов побочной диагонали матрицы.

11

M

Найти сумму элементов четных строк матрицы.

12

D

Найти сумму элементов, расположенных в углах матрицы.

  1. Проекты отладить, исполнить и проверить результат вычисления в соответствии с заданием.

  2. Cкопировать созданные проекты (папки P5_1 и Р5_2 с их содержимым) на свою Flash-память.

  3. Завершить работу и подготовить отчет. В отчете для каждого задание (п.п.2, 3) отразить: условие, алгоритм решения, программу, полученные результаты.

На защите уметь составлять программы по любому варианту заданий, приведенных в табл. 5.1 и 5.2.

Методические указания по выполнению задания

Задача 1. В массиве А из 10 элементов действительных чисел вычислить наименьший элемент массива и его номер.

Рассмотрим вариант, когда одномерный массив инициализирован заранее, например:

Р езультаты выполнения программы:

Рис. 5.1. Блок-схема алгоритма Задачи1

Задача 2. Задана матрица М, размером 44. Получить матрицу T транспонированную по отношению к матрице М, т.е. поменять местами строки и столбцы ( i-я строка матрицы М становится i-м столбцом матрицы T, а j-й столбец матрицы М становится j-й строкой матрицы T).

Рассмотрим вариант, когда массив формируется с помощью генератора случайных чисел Random, например:

Результаты вычисления:

Рис. 5.2. Блок-схема алгоритма Задачи2

Задания дом для самостоятельного решения.

Составить блок-схему и написать программу решения задачи по предложенному варианту таблицы 5.3. По всем вариантам задан массив из целых чисел.

Таблица 5.3

N

Задание 3

1

Переставьте соседние элементы массива (0-й элемент поменять с 1-м, 2-й с 3-м и т.д.) Если элементов нечетное число, то последний остается на своем месте.

2

Дан массив из 20 элементов. Подсчитать сумму положительных чисел, находящихся между максимальным и минимальным значениями.

3

Отсортировать одномерный массив из 10 элементов по возрастанию.

4

Элементы одномерного массива циклически сдвинуть на 2 позиции влево

5

Отсортировать одномерный массив из 16 элементов по убыванию.

6

Элементы одномерного массива циклически сдвинуть на 3 позиции вправо

7

Дан массив из 20 элементов. Подсчитать количество отрицательных чисел, находящихся между максимальным и минимальным значениями.

8

Элементы одномерного массива сдвинуть на 3 позиции вправо

9

Дана квадратная матрица размера 66. Найти номера столбцов, все элементы которых – нули

10

Дана квадратная матрица размера 66. Найти номера столбцов, элементы которых образуют возрастающую последовательность (x1i < x2i < ... < xni ).

11

Дана квадратная матрица размера 66. Найти номера столбцов, элементы в каждом из которых одинаковы

12

Элементы одномерного массива циклически сдвинуть на 3 позиции вправо.

Составить блок-схему и написать программу решения задачи по предложенному варианту таблицы 5.4. По всем вариантам задан массив из символов.

Таблица 5.4

№

Задание 4

1

Элементы одномерного массива A сдвинуть на 3 позиции вправо

2

В заданной строке G заменить последовательность символов (nl)i на символ yi и подсчитать число произведенных замен

3

Элементы одномерного массива B циклически сдвинуть на 3 элемента влево

4

В веденной строке C заменить все символы ki на символы (ab)i и подсчитать число произведенных замен

5

Элементы одномерного массива H циклически сдвинуть на 2 элемента вправо

6

В заданной строке D заменить последовательность символов (xyz)i на символ ti и подсчитать число произведенных замен.

7

Элементы одномерного массива F циклически сдвинуть на 2 элемента влево

8

В заданной строке K заменить все символы xi на ai и подсчитать число произведенных замен

9

Элементы одномерного массива M циклически сдвинуть на 3 элемента вправо.

10

В веденной строке P заменить все символы yi на ki и подсчитать число произведенных замен произведенных замен

11

Элементы одномерного массива N циклически сдвинуть на 3 элемента влево.

12

В заданной строке F заменить последовательность xi на (cd)i и подсчитать число произведенных замен

Проанализировать результат на соответствие поставленной задачи.

Методические указания по выполнению задания

Символьная информация может быть представлена: отдельными символами и строками.

Для отдельных символов используются переменные типа char. Для строк - типа string.

В C# имеется символьный класс char, используемый двухбайтовую кодировку Unicode представления символов. Для этого типа в языке определены символьные константы. Константу можно задавать:

- символом, заключенным в одинарные кавычки;

- escape-последовательностью;

- Unicode-последовательностью, задающей Unicode код символа.

Примеры объявления символьных переменных и работа с ними:

static void Main(string[] args)

{char ch1 = 'A', ch2 = '\x59', ch3 = '\u0058'; //буква A,

//буква Y Escape-последовательность \x59,буква X кодировка Юникода \u0058

char ch = new Char(); //символьный класс, используемый двухбайтовую кодировку

int code; string s;

ch = ch1; // ch объявляется в объектном стиле

code = ch; //преобразование символьного типа в тип int

ch1 = (char)(code + 1); //формирование кода буквы B

//преобразование символьного типа в строку

s = ch1.ToString() + ch2.ToString() + ch3.ToString();

Console.WriteLine("s = {0}, ch = {1}, code = {2}", s, ch, code); Console.ReadKey();}

Массив символов можно преобразовать в строку методом ToString(), но можно выполнить и обратное преобразование. В C# имеется строковый класс string, задающий строки переменной длины. У класса string есть метод ToCharArray, преобразующий строку в массив символов. Строку можно задавать из:

- символа, повторенного заданное число раз;

- массива символов char[];

- части массива символов.

Примеры объявления строковых переменных и работа с ними:

static void Main(string[] args)

{string world = "Мир"; //объявление переменной world

string sssss = new string('s', 5); //строковый класс, с буквой s повторяется 5 раз

char[ ] yes = "Yes".ToCharArray(); //объявление символьного класса для строки Yes

string stryes = new string(yes); //объявление строкового класса stryes

string strye = new string(yes, 0, 2); //объявление строкового класса для символьного

// массива yes с начальной позицией знака = 0 и длиной = 2 символа

Console.WriteLine("world ={0}, sssss ={1}, stryes ={2}"+" strye ={3}", world, sssss, stryes, strye);

Console.ReadKey();}

Над строками определены операции: присваивание = ,

эквивалентности (==) и (!=), конкатенации или объединение строк (+) и взятие индекса ([])

Получить доступ к отдельному символу строки можно, указав его номер в квадратных скобках после имени переменной. Например, s[i], где i – номер строки s.

Рекомендации для решения задач, связанных со сдвигом элементов в массиве, например, Х.

Пусть задан массив из 4 элементов, например х1, х2, х3, х4. Необходимо сдвинуть элементы этого массива на 2 элемента влево. В результате однократного сдвига элементы в массиве распределяются следующем образом: х2, х3, х4, 0. При повторном сдвиге – х3, х4, 0, 0.

При циклическом сдвиге элементы х1, х2, х3, х4 перемещаются по кольцу и однократный циклический сдвиг например, вправо приведет к следующему распределению элементов х4, х1, х2, х3, а повторный циклический сдвиг распределит элементы – х3, х4, х1, х2. Во избежание потери элементов при циклическом сдвиге необходимо выдвигаемый элемент временно поместить в буфер с последующей перезаписью его на соответствующее место массива после сдвига.

Рис. 5.3. Блок-схема

алгоритма Задачи3.