Для реализации алгоритма будут нужны такие переменные.
Матрица представляется в памяти как 2-мерний массив (должен быть размещен в статической памяти): int Ar[S][S];
Переменные для представления текущих номеров строки (l) и столбца (r): short l, r;
Переменные для представления граничных номеров столбцов: short r1,r2;
Переменная — модификатор граничных номеров: short dd;
Переменная — текущий член ЛП: short k;
Всем скалярным переменным назначаем тип short, т.к. их значения никак не могут выходить из диапазона -128 — 128.
Разработка текста программы
Текст программы начинаем с включения файла stdio.h и определения макроконстанты S — размера матрицы (хотя по условию задания можно было бы использовать просто константу 9 в тексте программы, определение размера через макроконстанту более соответствует стилю программирования на языке C).
Массив-матрицу Ar объявляем до открытия тела главной функции, что обеспечивает его размещение в статической памяти.
Открываем тело главной функции и объявляем переменные в соответствии с п.5.2. Присваиваем переменным r1, r2, dd, k начальные значения (это можно было сделать и при их объявлении). Открываем цикл перебора строк с изменением l от 0 до S-1 и цикл перебора столбцов с изменением r от 0 до S-1. Внутренний цикл состоит из одного условного оператора, так что нет необходимости брать его тело в операторные скобки. Тело внешнего цикла берется в скобки.
В условном операторе проверяем сразу оба условия (блоки 5 и 6). Поскольку для выхода за пределы должно выполняться хотя бы одно из них, они соединены операцией ИЛИ.
При выполнении условия значение k записывается в элемент массив с индексами [l,r] и сразу же увеличивается. При невыполнении — в элемент массива записывается 0.
После выхода из внутреннего цикла, но еще в теле внешнего модифицируются значения r1 и r2. Потом условным оператором проверяется условие r1r2 и, если он выполняется знак модификатора dd меняется на противоположный.
Потом открываются два цикла для вывода. В каждой итерации внутреннего цикла выводится значение одного элемента массива. Формат вывода обеспечивает вывод положительного числа из 2 цифр и пробела перед ним. После каждого выхода из внутреннего цикла выводится символ перехода на новую строку. Таким образом, матрица будет выведена в наглядном представлении. Полный текст программы приведен ниже.
#include #define S 9int Ar[S][S]; /* матрица */int main(void) { short l, r; /* текущие индексы */ short r1,r2; /* граничные номера столбцов */ short dd; /* модификатор граничных номеров */ short k; /* текущий член ЛП */ /* начальные значения переменных */ r1=1; r2=S-2; dd=1; k=1; for (l=0; lr2) dd=-dd; } /* конец перебора столбцов */ /* вывод матрицы */ for (l=0; l
Отладка программы
Форма вывода результатов программы столь наглядна, что по результатам можно убедиться в правильном функционировании программы или — при неправильном функционировании — можно делать выводы о том, у реализации какой именно ветви алгоритма сделана ошибка. При наличии ошибок можно в отладке программы также использовать средства пошаговой отладки, при чем следует контролировать текущие индексы граничные номера и текущее значение модификатора. Наиболее вероятные ошибки — неправильное определение граничных номеров или неправильное определение момента перехода в нижнюю часть матрицы.
Содержание отчета:
1. Постановка задачи для конкретного варианта.
2. Текст программы.
3. Блок-схема алгоритма решения задачи.
4. Результаты тестов.
5. Распечатка результатов работы программы.
Статьи к прочтению:
Основы Pascal, Паскаль для начинающих, Определение переменных
Похожие статьи:
-
Определение строковой переменной
Рис. 12. Данные строкового типа в памяти Последовательность \0 называется нулевымсимволом и рассматривается как один символ. Как вы помните, язык Си не…
-
Разработать си — программу содержащую 6 переменных одного типа
Часа Методические материалы Указатели широко применяются в С++ — отчасти потому, что в некоторых случаях без них просто не обойтись, а отчасти потому,…