Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Комбинированная обработка матрицы ⇐ ПредыдущаяСтр 6 из 6 Напоследок объединим задачи вычисления суммы и поиска максимума с целью определения номера строки, сумма элементов в которой максимальна.
//Вычисляем сумму элементов в первой строке int i_max=0, sum_max = 0; for (int j=0; j<size; j++) { sum_max += matrix[i_max][j]; }
for (int i=1; i<size; i++) { //Вычисляем сумму в строке номер i int sum = 0; for (int j=0; j<size; j++) { sum += matrix[i][j]; }
//Если сумма в очередной строке больше текущей //максимальной, то текущую максимальную сумму //заменяем новой суммой. if (sum_max < sum) { sum_max = sum; i_max = i; } }
cout << "Максимальная сумма = " << sum_max << endl; cout << "Номер строки = " << i_max << endl;
Программа для определения номера столбца с максимальной суммой:
int j_max=0; int sum_max = 0; for (int i=0; i<size; i++) { sum_max += matrix[i][j_max]; }
for (int j=1; j<size; j++) { int sum = 0; for (int i=0; i<size; i++) { sum += matrix[i][j]; } if (sum_max < sum) { sum_max = sum; j_max = j; } }
cout << "Максимальная сумма = " << sum_max << endl; cout << "Номер столбца = " << j_max << endl;
ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ Задача 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; }
КОНТРОЛЬНЫЕ ВОПРОСЫ
|