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

Матрицы. Найти ее ранг и средние значения по столбцам (дописать код) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Засорение памяти http://www.cyberforum.ru/cpp-beginners/thread754138.html
Добрый день, так как я еще школьник и знаю очень мало, прошу не ругать. Написанная мной программа если запускать ее снова и снова(поставить goto в конце) начинает жрать все больше и больше оперативной памяти. Как это исправить? Это началось после добавления ф-ии put. Вот код:// Otd.cpp: ���������� ����� ����� // ��� ����������� ����������. // #include "stdafx.h" #include<iostream>...
C++ Не работает seekp() Здорова господа!!! У меня вообщем проблемка я от отрываю файл для редактирования ios::app курсор в конце файла затем делаю seekp(0) курсор должен как бы переместиться в начало файла затем делаю отступ от начала на n-байт(символов) seekp(3) затем идет запись поверх имеющейся записи в файле ob6ekt <<"blabla" Казалось бы должно работать но почемуто у меня записывается в конец файла, а не в... http://www.cyberforum.ru/cpp-beginners/thread754137.html
build и Debug какя разница? C++
создаю простейшй проект, нажимаю Ф8 (старт Debug) и появляется "Привет" в консоли, то же самое но нажимаю на Ф9 (Build и Run) и опять "Привет" так в чем разница и зачем между билдом и дебгером если реультат тот же?? гуглил!) Code::Blocks
Разложение функции tgx в ряд Тейлора C++
Обыскался везде - не могу найти функцию на c++. которая раскладывала бы функцию tg(x) по ряду Тейлора. Помогите плиз. Сам написать пробовал - не понимаю Биноминальных чисел, хоть убей. Заранее спасибо:)
C++ Поразрядная сортировка и его недостатки http://www.cyberforum.ru/cpp-beginners/thread754081.html
Собствено сабж в "плохости" поразрядной сортировки. Ведь, если она отрабатывает за линейное время и не требует спец. аппаратной поддержки, а так же имеет устойчивую реализацию, то почему вместо неё чаще используют либо быструю сортировку Хоара, либо сортировку слиянием? Какие такие у неё недостатки, из-за которых прирост на logN считается малым?
C++ Используя рекурсивную функцию, выдать первые n элементов последовательности, которые больше заданного числа m Помогите срочно!!!Нужно написать программу рекурсией!!Но я рекурсию вообще не понимаю. Помогите пожалуйста!! Используя рекурсивную функцию, выдать первые n элементов последова- тельности = 5 - 20, = 2 n n-1 0 x ⋅ x x , которые больше заданного числа m. Заранее спасибо!! PS:Если возможно, с краткими комментариями !! подробнее

Показать сообщение отдельно
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
08.01.2013, 01:07  [ТС]     Матрицы. Найти ее ранг и средние значения по столбцам (дописать код)
немного подправил, вроде все правильно работает =) или мне просто несколько раз подряд повезло и все свелось...
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
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <iostream>
#include <iomanip>
#include <conio.h>
 
using namespace std;
 
double rndup(double n)// ОКРУГЛЕННЯ ЧИСЛА З ПЛАВАЮЧОЮ КРАПКОЮ І ВИВІД ОДНОГО ЗНАКА ПІСЛЯ КОМИ
{
      double t;
      t=n-floor(n);
      if (t>=0.5)    
      {
              n*=10;// float n
              ceil(n);
              n/=10;
              }
      else 
      {
              n*=10;// float n
              floor(n);
              n/=10;
              }
      return n;
}     
int main()
{
    //srand(time(NULL));
    setlocale(LC_ALL, "ukr");
    //row =u, col = p
    int const u=5, p=5;
 
    int a[u][p];
 
    for(int i=0;i<u;i++)
    for(int j=0;j<p;j++)
 
        // a[i][j]=rand()%20-6;
    
   { 
            cout<<"введiть "<<(j+1)<<" елемент "<<(i+1)<<" рядка"<<endl;
           cin>>a[i][j];
         } 
 
// ВИВІД МАТРИЦІ
 
    cout<<endl<<"Введена матриця : ";
    cout<<endl<<endl;
 
    for(int i=0;i<u;i++)
{
for(int j=0;j<p;j++) 
cout<<setw(4)<<a[i][j]<<"  ";
cout<<endl;
}
    cout<<endl;
 
    // ПРИВЕДЕННЯ ДО СХІДЧАСТОГО ВИГЛЯДУ
 
    int count = 0;
    int til = 0;
double w[5];
bool key = true;
double i2j = 0;
double mulxmj = 0;
//double mj = 0;
 
if(u <= p)
til = u;
else
til = p;
for (int m = 0; m < til-1; m++)
{
    if (a[m][m] == 0.0)
    {
        key = false;
        for (unsigned i1 = m+1; i1<u; i1++)
        {
            if (a[i1][m] != 0)
            
                break;
            
        }
    }
    if (!key)
    break; 
    
    for (unsigned i2 = m+1; i2<u; i2++)
    {
        double multi = 1.0*a[i2][m] / a[m][m];
        if(multi!=0)
        for (unsigned j = 0; j<p; j++)
        {
            i2j = a[i2][j];
            i2j = rndup(i2j);
//          mj = cmatrix[m][j];
 
            mulxmj = (multi * a[m][j]);
            mulxmj = rndup(mulxmj);
            a[i2][j] = i2j - mulxmj;
        }
    }
}
 
//* Підрахунок рангу
 
int rang = 0;
key = true;
 
for (unsigned i=0; i<u; ++i)
{
    key = false;
    for (unsigned j=0; j<p; ++j)
        if (a[i][j] != 0.0)
            key = true;
        if (!key)
            count++;
}
//*/
// ВИВЕДЕННЯ СХІДЧАСТОЇ МАТРИЦІ 
 
cout <<"Приведена до схiдчастого вигяду матриця:";
    cout <<"\n"<<endl;
    
    for(int i=0;i<u;i++)
    {
        for(int j=0;j<p;j++)
        {
            cout<<setw(4)<< a[i][j]<<"  ";
        }
    cout <<"\n";
    }
cout <<"\n";
 
//  СЕРЕДНЄ ЗНАЧЕННЯ ПО СТОВПЦЯХ
 
 
for(int j=0;j<5;j++) {
    int sum=0;
    
        for(int j=0;j<5;j++)
        {
            sum=0;
            for(int i=0;i<5;i++)
            sum+=a[i][j];
 
        w[j]=sum/5.0;
        
}
}
cout<<" Середнi значення по стовпцях : " << endl; 
 double f;
 int o;
 
for(int i=0;i<5;i++) {
    f=w[i];
    if (f>0)
        o=f+0.5;
    else
        o=f-0.5;
    
    cout<<endl<<i+1<<" стовпець: "<<setiosflags(ios::fixed)<<setprecision(1)<<setw(4)<<o<<"  ";
}
 
cout<<endl;
 
 
// ВИВЕДЕННЯ РАНГУ
    
rang = u - count;
 
cout <<endl<<"Ранг = "<< rang << "\n";
cout <<"\n";
 
//*
 
system("pause");
 
}
Добавлено через 11 минут
ну я тож поработал пока ты писал код, и мой вроде работает и получше уже( 8 из 10 матриц сводит на ура)... щас твой попробую)
 
Текущее время: 18:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru