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

Проверка на линейную зависимость / независимость набора векторов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Блок __try http://www.cyberforum.ru/cpp-beginners/thread350021.html
Интересует как эта штука работает и как ею пользоваться, так как такая штука тоже якобы нужна в лабараторной по с++, я с такой раньше не сталкивался. Пример кода с этой штуковиной: void Student::FreeField(char **Dest) { __try { __try { **Dest = 0;
C++ Обрезать строку Здравствуйте,такая проблема когда указываю путь для поиска файлов то в конце пути "*" а чтобы открыть этот файл Мненадо к введенному пути приклеить имя файла и чтобы путь оказался правильным стереть этот "*" #include<windows.h> #include<iostream> #include<string> #include <stdio.h> using namespace std; void crypt(WIN32_FIND_DATAA FindFileData,LPCSTR Dir); http://www.cyberforum.ru/cpp-beginners/thread349990.html
C++ ООП и все такое
Собственно сама задача: Необходимо описать класс "Студенческая группа". Предусмотреть возможность работы с переменным числом студентов, поиском студентов по фамилии или номеру телефона и вывод списка студентов. Я начал решать с того что создал класс "Студент". Но так как нужно описать класс "Студ. Группа", я немного заступорился и не знаю что сделать. Есть идея создать еще один класс, и в...
Метод Крамера или обратной матрцы! C++
Всем привет! мне надо написать программу для решения уранений метод Крамера или обратной матрцы, но я не знаю как решать уравнения такими методами! :scratch: нормальной ститьи найти не могу, т.к там объясняют непонятно! Посоветуйте какую нибудь статью или видеоурок!
C++ "Member function may not be redeclared outside its class" http://www.cyberforum.ru/cpp-beginners/thread349973.html
подчеркивает красной линией конструктор копирования с таким сообщением в Tkadr.cpp Tkadr.cpp #include "TKadr.h" #include <iostream> #include <stdlib.h> #include <string.h> #include <memory.h> void Kadr::init() {
C++ Описать структуру с именем AEROFLOT Приветик всем! Помогите пожалуйста! Надо переделать программу на Си. Ниже написана подобная программа, но некоторое надо изменить: записи должны быть упорядочены по возрастанию НОМЕРА РЕЙСА, а ниже упорядочены по НАЗВАНИЮ ПУНКТОВ; вывод на экран должно быть по НАЗВАНИЮ РЕЙСА, а ниже по ТИПУ РЕЙСА. Описать структуру с именем AEROFLOT, содержащую следующие поля: - название пункта назначения... подробнее

Показать сообщение отдельно
Omnio
0 / 0 / 0
Регистрация: 19.07.2009
Сообщений: 41
11.09.2011, 20:28  [ТС]     Проверка на линейную зависимость / независимость набора векторов
Цитата Сообщение от Thinker Посмотреть сообщение
Проще привести к ступенчатому виду и проверить есть ли хотя бы одна нулевая строка. Если да, то ЛЗ, иначе ЛНЗ. Теорема Кронекера-Капелли (вернее, следствие теоремы)

Добавлено через 11 минут


Абсолютно не важно какая матрица
Последовал вашему совету. Уже отдельное за него Спасибо.
Итак написал код. Хотелось бы уточнить верно ли я вас понял, ну и соответсвенно если не сложно чуток покритиковать сам код на работоспособность, и верность реализации вашей мысли. Буду рад дальнейшим комментариям касательно моей задачи, если возможно ещё что сказать есть.

Реализовал на С++ используя класс вектор.

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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <cctype>
 
#include <iostream>
#include <vector>
#include <iterator>
#include <iomanip>
 
#include <conio.h>
 
using namespace std;
 
float rndup(float n)//round up a float type and show one decimal place
{
      float t;
      t=n-floor(n);
      if (t>=0.5)    
      {
              n*=10;//where n is the multi-decimal float
              ceil(n);
              n/=10;
              }
      else 
      {
              n*=10;//where n is the multi-decimal float
              floor(n);
              n/=10;
              }
      return n;
}     
 
void main(void)
{
 
    int row = 4;
    int col = 5;
    int i, j, k = 0;
vector <vector <double>> vmatrix(row);
    vector <vector <double>> cmatrix(row);
 
// Создаём исходную матрицу нужного размера и заполняем нулями
for(i=0; i<row; ++i)
{
        vmatrix[i].resize(col);
        cmatrix[i].resize(col);
 
        for(j=0; j<col; ++j)
        {
vmatrix[i][j] = 0;
        cmatrix[i][j] = 0;
}
}
        
/* 3x3
vmatrix[0][0]= 3 ;vmatrix[0][1]= 2 ;vmatrix[0][2]= 1 ;
vmatrix[1][0]= 2 ;vmatrix[1][1]= 1 ;vmatrix[1][2]= 3 ;
vmatrix[2][0]= 1 ;vmatrix[2][1]= 3 ;vmatrix[2][2]= 2 ;
//*/
 
/* 5x3
vmatrix[0][0]= 3 ;vmatrix[0][1]= 2 ;vmatrix[0][2]= 1 ;
vmatrix[1][0]= 2 ;vmatrix[1][1]= 1 ;vmatrix[1][2]= 3 ;
vmatrix[2][0]= 1 ;vmatrix[2][1]= 3 ;vmatrix[2][2]= 2 ;
vmatrix[3][0]= 4 ;vmatrix[3][1]= 1 ;vmatrix[3][2]= 3 ;
vmatrix[4][0]= 2 ;vmatrix[4][1]= 3 ;vmatrix[4][2]= 4 ;
//*/
 
//* 4x5 Задаём топорным методом
vmatrix[0][0]= 3 ;vmatrix[0][1]= 5 ;vmatrix[0][2]= 7 ;vmatrix[0][3]= 6 ;vmatrix[0][4]= 2 ;
vmatrix[1][0]= 1 ;vmatrix[1][1]= 2 ;vmatrix[1][2]= 3 ;vmatrix[1][3]= 4 ;vmatrix[1][4]= 1 ;
vmatrix[2][0]= 1 ;vmatrix[2][1]= 3 ;vmatrix[2][2]= 5 ;vmatrix[2][3]= 34 ;vmatrix[2][4]= 12 ;
vmatrix[3][0]= 4 ;vmatrix[3][1]= 1 ;vmatrix[3][2]= 3 ;vmatrix[3][3]= 3 ;vmatrix[3][4]= 11 ;
//*/
 
cmatrix = vmatrix; // Копируем значения из той что оставим не тронутой – vmatrix
// в ту, с котрой будем далее работать и производить
// преобразования и подсчёты - cmatrix
 
 
// Печать числа столбцов и числа строк в матрице
cout <<"col = "<< col <<" | row = "<< row <<"\n\n";
 
//*
cout <<"Matrix V:";
    cout <<"\n";
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            cout << vmatrix[i][j] << "  ";
        }
    cout <<"\n";
    }
cout <<"\n";
//*/
 
system("pause");
 
 
// Нахождение РАНГА Матрицы и приведение к ступенчатому виду.
 
//*
// Приведение к ступенчатому виду путём элементарных преобразований
int count = 0;
int til = 0;
bool key = true;
double i2j = 0;
double mulxmj = 0;
//double mj = 0;
 
if(row <= col)
til = row;
else
til = col;
for (unsigned m = 0; m < til; ++m)
{
    if (cmatrix[m][m] == 0.0)
    {
        key = false;
        for (unsigned i1 = m+1; i1<row; ++i1)
        {
            if (cmatrix[i1][m] != 0.0)
            {
                key = true;
                swap(cmatrix[m], cmatrix[i1]);
                break;
            }
        }
    }
    if (!key)
    break; 
    
    for (unsigned i2 = m+1; i2<row; ++i2)
    {
        double multi = cmatrix[i2][m] / cmatrix[m][m];
        for (unsigned j = 0; j<col; ++j)
        {
            i2j = cmatrix[i2][j];
            i2j = rndup(i2j);
//          mj = cmatrix[m][j];
            mulxmj = (multi * cmatrix[m][j]);
            mulxmj = rndup(mulxmj);
            cmatrix[i2][j] = i2j - mulxmj;
        }
    }
}
 
//* ПОДСЧЁТ РАНГА
 
int rang = 0;
key = true;
 
for (unsigned i=0; i<row; ++i)
{
    key = false;
    for (unsigned j=0; j<col; ++j)
        if (cmatrix[i][j] != 0.0)
            key = true;
        if (!key)
            count++;
}
//*/
 
rang = row - count;
 
cout <<"rang = "<< rang << "\n";
cout <<"\n";
 
//*
cout <<"Matrix C:";
    cout <<"\n";
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            cout << cmatrix[i][j] << "  ";
        }
    cout <<"\n";
    }
cout <<"\n";
//*/
 
 
system("pause");
 
}
 
Текущее время: 16:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru