РГР по Информатике Сибгути. Дотделанная РГР. Задача
Скачать 0.97 Mb.
|
Федеральное агентство связи Федеральное государственное бюджетное образовательное учреждение высшего образования «Сибирский государственный университет телекоммуникаций и информатики»(СибГУТИ) Кафедра Телекоммуникационных сетей и вычислительных средств (ТСиВС) Разработка приложения для обработки матриц РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА по дисциплине «Информатика» Выполнил: Проверил: преподаватель. каф. ТС и ВС / А.Ю. Голошубов/ «_10_»____12_____ 2020 г. (подпись) Задача № 21: Сформировать матрицу В. Сформировать новую матрицу, увеличив каждый элемент исходной на элемент побочной диагонали, стоящий в этой же строке. Формирование матрицы двумя способами (ввод данных в матрицу с клавиатуры; заполнение матрицы случайными числами). Сформировать новую матрицу, увеличив каждый элемент исходной на элемент побочной диагонали, стоящий в этой же строке. 1 Разработка приложения 1.1 Блок-схема алгоритма решения задачи 1.2 Программная реализация алгоритма решения задачи #include #include #include #include #include #include < windows.h > using namespace std; int main() { HANDLE ouput = GetStdHandle(STD_OUTPUT_HANDLE); /* нужно для красивого ввода [yes/no] *\ setlocale(LC_ALL, "rus"); //для нормального вывода кирилицы в visual studio srand(time(NULL)); /*время для того чтобы каждый новый заруск рандомайзер выдавал разные числа *\ int ss = 1, cc = 0, x[50], v = 0, d = 1, i, j, N, M, a[20][20], b[20][20]; string zxc; const int one = 1; //переменные для дальнейшего использования cout << "Введите размер матрицы NxM" << endl; cout << "N="; cin >> N; cout << "M="; cin >> M; //ввод размеров матрицы cout << endl; int da = M; cout << "Заполнить матрицу " << N << " x " << M << " случайными числами? [yes/no]" << endl; cout << " | "; cin >> zxc; //выбор заполнения матрицы COORD pos = { 29, 5 }; SetConsoleCursorPosition(ouput, pos); //красивый ввод [yes/no] cout << " | "; cout << endl << endl; if (zxc == "yes" || zxc == "no") //if для выбора действия { if (zxc == "yes") { cout << "Случайно сгенерированная матрица " << N << " x " << M << ":" << endl; for (i = 0; i < N; i++) /* заполнения матрицы случайными числами (используется время) *\ for (j = 0; j < M; j++) b[i][j] = rand() % 1000; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) cout << b[i][j] << "\t"; cout << endl; // функция вывода существующей матрицы } cout << endl; } if (zxc == "no") { cout << "Введите матрицу " << N << " x " << M << endl; for (i = 0; i < N; i++) for (j = 0; j < M; j++) { cout << d << "-e число = "; d++; cin >> b[i][j]; /*заполнение матрицы пользователем *\ } cout << "Матрица " << N << " x " << M << " до изменения:" << endl; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) cout << b[i][j] << "\t"; cout << endl; //вывод сформированной матрицы } cout << endl; } for (i = 0; i < N; i++) { for (j = 0; j < M; j++) a[i][j] = b[i][j]; // 2 матрицa для изменения } //изменение матрицы по правилу for (i = 1; i < M + 1; i++) { x[i] = a[i - 1][i - 1]; /* поиск второстепенной диагонали матрицы и вывод её в масив "х" *\ } for (i = 1; i < M*M; i++) /* изменение верхней части матрицы по правилу *\ { a[cc][ss] = a[cc][ss] * x[cc+1]; if (i >= da ) { cc = cc + 1; ss = ss - (M-1); da = da + M; } ss++; } ss = 1; cc = 1; da = 1; int v = 0; int xx = 1; for (i = 0; i < M * M; i++) /* изменение нижней части матрицы по правилу *\ { a[cc][v] = a[cc][v] * x[cc + 1]; v++; if (da == xx) { cc++; v = 0; xx = xx + 1; da = 0; } da = da +1; } cout << "Получившаяся матрица " << N << " x " << M << ":" << endl; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) cout << a[i][j] << "\t"; cout << endl; // вывод изменёной матрицы } } else { cout << "Ошибка ввода данных"; //ошибка при неверном вводе [yes/no] } return 0; } Скриншоты результатов работы разработанного приложения |