Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Сумма по строкам в матрице и индексы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция http://www.cyberforum.ru/cpp-beginners/thread554580.html
Есть код №1. Он выводить на экран позицию нужного мне слова (только если в середине 1 слово а не 2 и больше например только "privet". А когда "privet kak dela" - он не хочет работать), которое я ищу...
C++ Узнать, есть ли элемент на определенной позиции в экземпляре std::vector Подскажите пожалуйста, как узнать есть ли элемент на определенной позиции в экземпляре std::vector? Например есть: vector<int> intVector; Нужно узнать есть ли что нибудь на позиции i: intVector ... http://www.cyberforum.ru/cpp-beginners/thread554563.html
C++ Консольная программа тестирования [работа с текстовыми файлами]
Здравствуйте. Первый раз программирую на С++. Есть "ТЗ": разработать программу для тестирования знаний учащихся (курсач). Подскажите, есть ли на этом форуме похожие темы? Поиском пользовался, но то...
Метод Милна. Расчет по нескольким уравнениям. C++
Приветствую вас. Очень помощь нужна мне © Йода XD. Нужно модернизировать программку, чтобы можно было производить расчет по нескольким уравнениям, а не по одному, заданному программой. Ниже вложено...
C++ Описаие класса http://www.cyberforum.ru/cpp-beginners/thread554553.html
Задание: Классы Террит единица, область, растение, дерево, цветок,страна. запросы: вывести перечень растений указанного вида, произросшего в террит единице указанного вида; вывести...
C++ Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде исправил, но теперь в выводе мне пишет чтото... подробнее

Показать сообщение отдельно
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127

Сумма по строкам в матрице и индексы - C++

21.04.2012, 20:12. Просмотров 377. Ответов 4
Метки (Все метки)

Есть программа, решение слау, не суть важно, нужно выяснить, есть ли в матрице А диагональное преобладание (а если нет - то вывести номер строки, где оно нарушается), т.е. модуль элементов на гл. диагонали меньше суммы модулей остальных элементов в строке, пример:

2 1 0 0
1 4 -0.5 0
0 1 -5 2
0 0 1 4

Элементы на диагонали: 2>1+0+0; 4>1+0.5+0; |-5|>2+1+0 4>0+0+1, есть
если б вместо 1 в первой строке было 100, не было бы, соотв.

Как-то так Вот что есть:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <iostream.h>
#include <math.h>
void main (void)
{
int N,i,j,k;
cout <<"Enter N: "; // Ввод номера варианта
cin >>N;
double A[4][4]={{2,1,0,0},{1,2*N,-0.5,0},{0,1,-5,2},{0,0,1,4}},
// Матрица А, приведённая к трехдиагональному виду
R[4][1]={{0.2*N+1},{2*N},{-N+5},{0.2*N+8}},
X[4][1]={{0},{0},{0},{0}},
B[4][1]={{0},{0},{0},{0}}, // Элементы ниже главной диагонали
C[4][1]={{0},{0},{0},{0}}, // Элементы из главной диагонали
D[4][1]={{0},{0},{0},{0}}, //Элементы выше главной диагонали
delta[4][1]={{0},{0},{0},{0}},
lambda[4][1]={{0},{0},{0},{0}};
cout <<endl<<"Matrix A"<<endl; // Вывод матрицы А
for (i=0; i<4; i++)
{
for (j=0; j<4; j++)
{
cout<<A[i][j]<<" ";
}
cout <<endl;
}
cout <<endl;
cout <<"Matrix R"<<endl; // Вывод матрицы R
for (i=0; i<4; i++)
{
cout<<R[i][0];
cout<<endl;
}
cout <<endl;
for (i=0; i<4; i++)
{
C[i][0]=A[i][i]; // Заполнение С элементами из главной диагонали матрицы А
}
cout <<"Matrix C"<<endl; // Вывод вектора С
for (i=0; i<4; i++)
{
cout<<C[i][0];
cout<<endl;
}
cout <<endl;
for (i=0; i<3; i++)
{
B[i+1][0]=A[i+1][i];
// Заполнение вектора В элементами, стоящими ниже главной диагонали матрицы А
}
cout <<"Matrix B"<<endl; // Вывод вектора В
for (i=0; i<4; i++)
{
cout<<B[i][0];
cout<<endl;
}
cout <<endl;
for (i=0; i<3; i++)
{
D[i][0]=A[i][i+1];
// Заполнение вектора D элементами, стоящими выше главной диагонали матрицы А
}
cout <<"Matrix D"<<endl; // Вывод вектора D
for (i=0; i<4; i++)
{
cout<<D[i][0];
cout<<endl;
}
cout <<endl;
delta[0][0]=-D[0][0]/C[0][0];
// Первый элемент ?1 равен отрицательному отношению первых элементов векторов D и С
lambda[0][0]=R[0][0]/C[0][0];
// Первый элемент ?1 равен отрицательному отношению первых элементов векторов R и С
// Вычисление коэффициентов ?i и ?i :
for (i=1; i<4; i++)
{
delta[i][0]=-D[i][0]/(C[i][0]+B[i][0]*delta[i-1][0]);
lambda[i][0]=(R[i][0]-B[i][0]*lambda[i-1][0])/(C[i][0]+B[i][0]*delta[i-1][0]);
}
cout <<"Matrix delta"<<endl; // Вывод матрицы ?
for (i=0; i<4; i++)
{
cout<<delta[i][0];
cout<<endl;
}
cout <<endl;
cout <<"Matrix lambda"<<endl; // Вывод матрицы ?
for (i=0; i<4; i++)
{
cout<<lambda[i][0];
cout<<endl;
}
cout <<endl;
X[3][0]=lambda[3][0]; // Старшему элементу Х присваиваем третье значение ?
for (i=2; i>-1; i--)
{
X[i][0]=delta[i][0]*X[i+1][0]+lambda[i][0]; // x(i) = ?(i)*x(i+1) + ?(i)
}
cout <<"Matrix X"<<endl; // Вывод Х (решения)
for (i=0; i<4; i++)
{
cout<<X[i][0];
cout<<endl;
}
cout <<endl;
if ((fabs(A[0][0])>fabs(A[0][1]+A[0][2]+A[0][3])) && (fabs(A[1][1])>fabs(A[1][0]+A[1][2]+A[1][3])) && (fabs(A[2][2])>fabs(A[2][0]+A[2][1]+A[2][3])) && (fabs(A[3][3])>fabs(A[3][0]+A[3][2]+A[3][1])))
    cout<<"Da"<<endl;
else
 
cout<<"Net"<<endl;
 
}
Вопросы: как вывести номер строки, где нарушение и может как-то можно обойтись без кучи условий (для больших матриц, 10х10)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru