русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Комбинированная обработка матрицы


Дата добавления: 2015-08-14; просмотров: 1290; Нарушение авторских прав


Напоследок объединим задачи вычисления суммы и поиска максимума с целью определения номера строки, сумма элементов в которой максимальна.

 

//Вычисляем сумму элементов в первой строке

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;

}

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Как представляется матрица в программировании?
  2. Как объявить и инициализировать матрицу?
  3. Как заполнить матрицу случайными числами?
  4. Опишите алгоритм вычисления суммы элементов матрицы.
  5. Опишите алгоритм вычисления суммы элементов в заданном столбце или в заданной строке.

 

 



<== предыдущая лекция | следующая лекция ==>
Обработка строк и столбцов по отдельности | Виконання


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.374 сек.