- •Программирование на языке с в среде Borland 3.1
- •Введение
- •Особенности решения вычислительных задач на эвм
- •1. Назначение и общая характеристика языка программирования с
- •2. Пример простейшей программы
- •2.1 Приступим
- •2.2 Расширяем функциональность
- •2.3 Улучшаем интерфейс. Осмысленное проектирование
- •2.4 Итог
- •3.2 Лабораторная работа №2. Решение квадратного уравнения Задание
- •Методические указания
- •3.3 Лабораторная работа №3. Попадание точки в область Задание
- •Методические указания
- •3.4 Лабораторная работа №4. Цикл с неизвестным числом повторений Задание
- •Методические указания
- •3.5 Лабораторная работа №5. Обработка массивов Задание
- •Методические указания
- •3.6 Лабораторная работа №6. Обработка файлов Задание
- •Методическое указание
- •3.7. Лабораторная работа №7. Работа со строками Задание
- •Методическое указание
- •4. Проект программы и функции оболочки Borland c
- •4.1 Создание проекта программы. Borland c и его основные режимы с характерными окнами
- •4.2. Функции оболочки Borland c
- •5.1 Основные символы схем алгоритмов
- •О кончание
- •П роцесс
- •Предопределенный процесс
- •6. Содержание отчета
- •6.1 Требования к оформлению отчёта о лабораторной работе
- •6.2 Требования к защите лабораторных работ
- •О лабораторной работе №1
- •Список литературы
- •Содержание
3.5 Лабораторная работа №5. Обработка массивов Задание
Разработать программу, обрабатывающую элементы двумерного массива размером n*m в соответствии с вариантом и прилагаемым рисунком. Размерность массива n и его элементы должны вводиться пользователем с клавиатуры. Исходный и преобразованный массивы должны быть выведены на экран после обработки.
В арианты:
Обнулить элементы, рис. 3.a;
Изменить знак на противоположный, рис. 3.б;
Сложить с заданным числом, рис. 3.в;
Вычесть заданное число, рис. 3.г;
Умножить на заданное число, рис. 3.д;
Обнулить элементы, рис. 3.е;
Изменить знак на противоположный, рис. 3.а;
Сложить с заданным числом, рис. 3.б;
Вычесть заданное число, рис. 3.в;
Умножить на заданное число, рис. 3.г.
Обнулить элементы, рис. 3.д;
Изменить знак на противоположный, рис. 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”);
}
Алгоритм решения задач данной работы можно представить в виде приведенном ниже.
Рис. 3. Алгоритм обработки массива.
Как видно из алгоритма, в программе определены два массива одинокого размера: исходный массив (у нас A) и его копия (например, B). Обработке вначале подвергается копия с вычислением нового значения на основе исходного массива и лишь тогда, когда обработка будет закончена, осуществляется требуемая замена значений исходного массива на новые значения. Хотя подобная организация требует удвоения памяти для хранения обрабатываемого массива, выгодой является простота построения алгоритма и программы.
Для определения принадлежности элемента условию рекомендуется обратить внимание на порядковый номер элемента в строке и столбце, а так же взаимное соотношение других элементов строк и столбцов.