Задача 1. Матрица называется нулевой, если все ее элементы равны нулю. Напишите программу, которая принимает с клавиатуры число N, создает нулевую матрицу размера N на N и выводит ее на экран.
#include "stdafx.h"
#include <iostream>
using namespace std;
int matrix[100][100];
int N;
void fillZeroMatrix() {
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
matrix[i][j] = 0;
}
}
}
void printMatrix() {
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
cout.width(2);
cout << matrix[i][j];
}
cout << endl;
}
}
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите размер матрицы:\n";
cin >> N;
fillZeroMatrix();
printMatrix();
system("pause");
return 0;
}
Задача 2. Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, заполненную случайными числами, и выводит ее на экран. Затем найдите номер строки, в которой расположен максимальный элемент этой матрицы.
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int matrix[100][100];
int N;
int rnd(int min, int max) {
return rand()%(max-min) + min;
}
void randomize() {
srand(time(0));
}
void fillRandomMatrix() {
randomize();
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
matrix[i][j] = rnd(-50, 50);
}
}
}
void printMatrix() {
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
cout.width(4);
cout << matrix[i][j];
}
cout << endl;
}
}
int getRowOfMax() {
int max = matrix[0][0];
int row_max = 0;
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
row_max = i;
}
}
}
return row_max;
}
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите размер матрицы:\n";
cin >> N;
fillRandomMatrix();
printMatrix();
cout << getRowOfMax() << endl;
system("pause");
return 0;
}
Задача 3. Квадратная матрица A называется симметричной, если она симметрична относительно главной диагонали, другими словами, для всех ее элементов выполняется равенство Aij=Aji. Напишите программу, которая принимает с клавиатуры число N, создает симметричную матрицу размера N на N, заполненную случайными числами, и выводит ее на экран.
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int matrix[100][100];
int N;
int rnd(int min, int max) {
return rand()%(max-min) + min;
}
void randomize() {
srand(time(0));
}
void fillSymmetricMatrix() {
randomize();
for (int i=0; i<N; i++) {
for (int j=i; j<N; j++) {
matrix[i][j] = rnd(-50, 50);
}
}
for (int i=0; i<N; i++) {
for (int j=0; j<i; j++) {
matrix[i][j] = matrix[j][i];
}
}
}
void printMatrix() {
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
cout.width(4);
cout << matrix[i][j];
}
cout << endl;
}
}
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите размер матрицы:\n";
cin >> N;
fillSymmetricMatrix();
printMatrix();
system("pause");
return 0;
}
Задача 4. Квадратная матрица называется трехдиагональной, если все ее элементы равны нулю, за исключением тех, которые расположены на главной диагонали и двух соседних с ней диагоналях. Напишите программу, которая принимает с клавиатуры число N и создает трехдиагональную матрицу размера N на N, ненулевые элементы которой заполните случайными числами. Затем выведите матрицу на экран.
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int matrix[100][100];
int N;
int rnd(int min, int max) {
return rand()%(max-min) + min;
}
void randomize() {
srand(time(0));
}
void fill3DiagonalMatrix() {
randomize();
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
matrix[i][j] = abs(i-j)<2 ? rnd(-50, 50) : 0;
}
}
}
void printMatrix() {
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
cout.width(4);
cout << matrix[i][j];
}
cout << endl;
}
}
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите размер матрицы:\n";
cin >> N;
fill3DiagonalMatrix();
printMatrix();
system("pause");
return 0;
}
Задача 5.Норма Фробениуса для матрицы вычисляется как корень квадратный из суммы квадратов элементов матрицы. Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, заполненную случайными числами, и выводит ее на экран. Затем вычислите норму Фробениуса этой матрицы.
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int matrix[100][100];
int N;
int rnd(int min, int max) {
return rand()%(max-min) + min;
}
void randomize() {
srand(time(0));
}
void fillRandomMatrix() {
randomize();
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
matrix[i][j] = rnd(-50, 50);
}
}
}
float getFrobeniusNorm() {
float sum = 0;
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
sum += matrix[i][j]*matrix[i][j];
}
}
return sqrt(sum);
}
void printMatrix() {
for (int i=0; i<N; i++) {
for (int j=0; j<N; j++) {
cout.width(4);
cout << matrix[i][j];
}
cout << endl;
}
}
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите размер матрицы:\n";
cin >> N;
fillRandomMatrix();
printMatrix();
cout << getFrobeniusNorm() << endl;
system("pause");
return 0;
}
КОНТРОЛЬНЫЕ ВОПРОСЫ
Как представляется матрица в программировании?
Как объявить и инициализировать матрицу?
Как заполнить матрицу случайными числами?
Опишите алгоритм вычисления суммы элементов матрицы.
Опишите алгоритм вычисления суммы элементов в заданном столбце или в заданной строке.