Лабораторная работа №5. Обработка массивов

Задание

Разработать программу, обрабатывающую элементы двумерного массива размером n*m в соответствии с вариантом и прилагаемым рисунком. Размерность массива n и его элементы должны вводиться пользователем с клавиатуры. Исходный и преобразованный массивы должны быть выведены на экран после обработки.

Лабораторная работа №5. Обработка массивов - student2.ru Варианты:

1. Обнулить элементы, рис. 3.a;

2. Изменить знак на противоположный, рис. 3.б;

3. Сложить с заданным числом, рис. 3.в;

4. Вычесть заданное число, рис. 3.г;

5. Умножить на заданное число, рис. 3.д;

6. Обнулить элементы, рис. 3.е;

7. Изменить знак на противоположный, рис. 3.а;

8. Сложить с заданным числом, рис. 3.б;

9. Вычесть заданное число, рис. 3.в;

10. Умножить на заданное число, рис. 3.г.

11. Обнулить элементы, рис. 3.д;

12. Изменить знак на противоположный, рис. 3.е;

Методические указания

Исходно программа должна строиться для заранее не определенных значений размерности массива n и m. По правилам построения простых программ на языке Си размерность массива должна определяться сразу. Обычно размерности массива задается определенной величины (например, 10 на 10). Однако, реальные значения n и m (но не более заданной ранее величины – у нас 10) вводятся в качестве исходных данных. Чтобы можно было работать с заранее неопределенными размерностями, будем пользоваться переменными, определяемыми директивой define (подстановкой в программе), например, как показано ниже.

#define n 8

#define m 6

Подстановка позволяет не устанавливать в тексте программы фиксированные (числовые) границы обрабатываемых данных.

Для упрощения проектирования на первом этапе массив для тестирования можно взять, например, размером 4*4 элемента. Подобный подход позволит отладить основные функции программы и не усложнит дальнейшее усовершенствование.

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

int A [10][10] = {{11, 12, 13, 14},{21, 22, 23, 24},{31, 32, 33, 34},{41, 42, 43, 44}};

В приведенном примере в массиве А с размерностью 10 на 10 заполнены фиксированными данными только четыре первых столбца первых четырех строках. Поэтому, если задаться величинами m и n равными 4, то обработке может подвергаться матрица с заранее предопределенными и фиксированными значениями (значение каждого элемента есть номер строки и номер столбца).

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

printf(“вывод массива \n”);

for (i = 1; i < n; i++)

{

for (j= 1; j < m; j++) printf(“%d “, A[i][j]);

printf(“\n”);

}

Алгоритм решения задач данной работы можно представить в виде приведенном ниже.

Лабораторная работа №5. Обработка массивов - student2.ru

Рис. 3. Алгоритм обработки массива.

Как видно из алгоритма, в программе определены два массива одинокого размера: исходный массив (у нас A) и его копия (например, B). Обработке вначале подвергается копия с вычислением нового значения на основе исходного массива и лишь тогда, когда обработка будет закончена, осуществляется требуемая замена значений исходного массива на новые значения. Хотя подобная организация требует удвоения памяти для хранения обрабатываемого массива, выгодой является простота построения алгоритма и программы.

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

Семестр 2

Лабораторная работа №1.

Обработка массивов символов

Задание

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

Варианты:

1. Вывести на экран длины слов в строке;

2. Вывести на экран слова и их длины, содержащие заданный символ;

3. Определить и вывести на экран первое слово в строке с минимальной длиной;

4. Определить и вывести на экран последнее слово в строке с минимальной длиной;

5. Определить и вывести на экран последнее слово в строке с максимальной длиной;

6. Удалить из строки слова, содержащие заданный символ. Исходную и преобразованную строки вывести на экран;

7. Удалить из строки слова, следующие за словами, содержащими заданный символ. Исходную и преобразованную строки вывести на экран;

8. Удалить из строки слова, предшествующие строками, содержащими заданный символ. Исходную и преобразованную строки вывести на экран;

9. Вывести на экран упорядоченные в порядке возрастания числа символов строки;

10. Вывести на экран упорядоченные в порядке убывания числа символов строки;

11. Удалить все русские буквы в строке;

12. Удалить все латинские буквы в строке;

13. Удалить символ предшествующий заданному символу;

14. Удалить символ, следующий за заданным символом;

15. Вставить заданный символ перед символом, совпадающим с другим заданным символом;

16. Вставить заданный символ после символа, совпадающего с другим заданным символом;

17. Зафиксировать и вывести на экран порядковые номера первого вхождения заданного символа в слова;

18. Зафиксировать и вывести на экран порядковые номера последнего вхождения заданного символа в слова;

19. Вставить заданный символ после слова, содержащего другой заданный символ.

Методические указания

При составлении программ следует ориентироваться на соответствующие указания к работе № 5 предыдущего семестра.

Лабораторная работа №2.

Обработка файлов

Задание

Разработать программу, обрабатывающую содержимое текстового файла в соответствии с заданием.

Результат обработки должен быть сохранён в отдельном файле. Имена файлов для чтения и записи должны вводится пользователем с клавиатуры.

Места изменений могут быть зафиксированы на экране терминала (не в файле) по желанию пользователя.

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

Варианты:

1. Удалить слова, содержащие заданный символ;

2. Удалить числа, содержащие заданную цифру;

3. Удалить все строчные русские буквы, а все прописные превратить в строчные;

4. Удалить все прописные латинские буквы, а все строчные превратить в прописные;

5. Удалить все русские буквы;

6. Удалить все латинские буквы;

7. Удалить символ предшествующий заданному символу;

8. Удалить символ, следующий за заданным символом;

9. Вставить заданный символ перед символом, совпадающим с другим заданным символом;

10. Вставить заданный символ после символа, совпадающего с другим заданным символом;

11. Вставить заданный символ после слова, содержащего другой заданный символ.

Методическое указание

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

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

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

Наши рекомендации