Обработка двумерных массивов
Цель работы: изучить принципы работы различных управляющих структур (while, do… while, for) при работе с массивами данных.
Основное задание
Составить программу работы с матрицей, для этого:
- организовать ввод элементов а[i][j] матрицы M[N][N], где i – номер строки, j- номер столбца, N -размер матрицы (N<6); ввод матрицы осуществить двумя вариантами : вручную с клавиатуры и с помощью датчика случайных чисел;
- выполнить преобразование матрицы, одним из следующих вариантов.
1.Транспонировать матрицу.
2. Возвести матрицу в квадрат.
3. Умножить к-ю строку исходной матрицы на сумму элементов главной диагонали.
4. Прибавить к к- му столбцу i-й столбец, умноженный на заданное число.
5. Прибавить к i-й строке k -ю строку.
6. Поменять местами два заданных столбца.
7. Поменять местами две заданные строки.
8. Поменять местами заданный столбец и заданную строку.
9. Сосчитать сумму элементов матрицы.
10. Сосчитать сумму элементов каждой строки матрицы.
11. Сосчитать сумму элементов каждого столбца матрицы.
12. Рассчитать среднее значение элементов матрицы.
13. Заменить знаки элементов матрицы на противоположные.
14. Сосчитать количество отрицательных элементов матрицы.
15. Рассчитать средние значения отрицательных и положительных элементов матрицы.
16. Сосчитать сумму элементов матрицы, лежащих ниже главной диагонали.
17. Сосчитать сумму элементов матрицы, лежащих выше главной диагонали.
18. Найти обратную матрицу.
19. Вычислить определитель матрицы.
20. Вычислить ij- минор матрицы.
21. Найти след матрицы.
Организовать вывод на экран дисплея сведения об авторе, номер варианта, результаты выполнения работы.
Дополнительное задание
Дополните Вашу программу функциями, определяющими активное текстовое окно.
Рекомендации по программированию
1) В начале программы предусмотрите ввод значений количества строк, столбцов матрицы M[N][N].
Пример:
m1: cprintf ("Введи значение количества строк и столбцов матрицы \n");
cscanf ("%d", &N);
В случае, когда N<2 или N>6, вывести сообщение об этом и повторить ввод N.
Пример:
if (N<2||N>6)
{
cprintf ("Неправильно введено значение N \n");
goto m1;
}
где оператор goto m1 обозначает безусловный переход к оператору с меткой
m1.
Затем определите характер заполнения матрицы: автоматическое или ручное. Это можно сделать с помощью операторов:
printf ( “ Определите характер заполнения: 1- ручное, 2- автоматическое”); и
switch(w), где w равно 1 или 2. Для генерации псевдослучайных чисел в качестве элементов матрицы воспользуйтесь функцией rand(), инициализированной директивой препроцессора
#define RND ((float) rand () /32768.0)
…………………………………………
x[ i ][ j ] =RND*(целое число);
2) Для ввода элементов матрицы M[N][N] следует использовать конструкцию вида:
for (инициализация_1; условное выражение_1; конечное выражение_1)
for (инициализация_2; условное выражение_2; конечное выражение_2)
оператор или блок операторов // двойной цикл.
В круглых скобках содержится три выражения, разделенные символом точка с запятой. Первое из них служит для инициализации счета. Она осуществляется только один раз, когда цикл for начинает выполняться. Второе выражение – для проверки условия (она производится перед каждым возможным выполнением цикла). Когда выражение становится ложным (или в общем случае равным нулю), цикл завершается. Третье выражение вычисляется в конце каждого выполнения тела цикла.
Пример:
for (i=0; i<N; i++)
for(j=0; j<N; j++)
scanf("%f",&M[i][j]);
В операторе цикла можно опустить одно или более выражений (но нельзя опустить символы точка с запятой). Необходимо только включить в тело цикла несколько операторов, которые, в конце концов, приведут к завершению его работы.
Пример:
ans=2;
for(n=3;ans<=15;)
{
ans=ans*n;
cprintf("+ans=%f"\n", ans);
}
3) Для создания диалогового режима в программе можно применить конструкции операторов цикла: while; do- while. Операторы while и do- while рассмотрены в предыдущей работе.
Пример:
Char answer; int N;
do
{
:
/*группа операторов */
printf (“Хотите завершить задачу ?”);
answer= getch();
}
while ( answer != ‘Y’ || answer != ‘y’);
printf (“Сделано %d – раз вычислений \n”,N);
В этом случае выход из цикла будет осуществлен при вводе с клавиатуры (операторы getch) букв Y или y.
4. Для выполнения п.3 основного задания воспользуйтесь частью результатов, полученных в работах 3 и 4.
Содержание отчета
1.Постановка задачи.
2.Схема алгоритмов.
3.Распечатки текстов программы с комментариями.
4.Ответы на контрольные вопросы.
Вывод по работе.
Контрольные вопросы
4. Назовите операторы цикла, использованные Вами в программе.
5. Назовите операторы выхода из цикла и поясните их назначение.
6. Опишите примененный Вами алгоритм преобразования матрицы.
Работа №6