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

Задача: Обробка матриц - C++

Восстановить пароль Регистрация
 
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
27.11.2010, 20:42     Задача: Обробка матриц #1
Дано матрицу А{a i,j},где i,j=1,2,3...n. составить программу формирования вектора B=(b1, b2, b3...bn), элементы которого находятся по формуле bj=(a i,j+a j,i),
значение n=5.

2 1 3 -4 2
-1 3 5 3 -1
1 2 1 4 1 = А{a i,j} значение ел. матрицы
3 4 1 4 1
3 -1 2 4 2

Это матрица 5 на 5( в принципе данные матрицы могут быть разные)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2010, 20:42     Задача: Обробка матриц
Посмотрите здесь:

Класс матриц C++
Сложение матриц C++
Умножение матриц C++
C++ перемножение матриц
C++ Умножение матриц
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
27.11.2010, 20:48     Задача: Обробка матриц #2
какая то странная матрица, что означает А{a i,j} вы точно ничего не напутали в условии?
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
27.11.2010, 20:52  [ТС]     Задача: Обробка матриц #3
Цитата Сообщение от Crudelis Посмотреть сообщение
какая то странная матрица, что означает А{a i,j} вы точно ничего не напутали в условии?
i и j это номер столбца и строчки =))
Vorox
 Аватар для Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
27.11.2010, 20:54     Задача: Обробка матриц #4
Цитата Сообщение от Oscar1209 Посмотреть сообщение
А{a i,j}
Имеется в виду "a" перед i,j.
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
27.11.2010, 21:03  [ТС]     Задача: Обробка матриц #5
Если хотите, то я могу даже скинуть программу которую я писал для этого задания, но она с ошибками=)) может вы сможете их исправить))
Vorox
 Аватар для Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
27.11.2010, 23:27     Задача: Обробка матриц #6
Цитата Сообщение от Oscar1209 Посмотреть сообщение
Если хотите, то я могу даже скинуть программу которую я писал для этого задания, но она с ошибками=)) может вы сможете их исправить))
Отпости тут свои наработки
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
28.11.2010, 09:54  [ТС]     Задача: Обробка матриц #7
Цитата Сообщение от Vorox Посмотреть сообщение
Отпости тут свои наработки
Лови =))
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
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
void vv_ms(int n,int m,float **c)
{int i,j;
puts("\n Vvesti matricu \n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{cout<<"A["<<i<<"]["<<j<<"]=";
 cin>>c[i][j];
}
}
void vd_ms (int n,int m,float **c)
{int i,j;
 puts ("\n Ishodnaya matrica \n");
 for(i=0;i<n;i++)
 {for (j=0;j<m;j++)
  {cout<<"A["<<i<<j<<"]="<<c[i][j];
  }
  }
  }
void vd_vc ( int n, float d[])
{int j;
 puts ("\n Rezultiruyshiy vector \n");
 for (j=0;j<n;j++)
 cout<<"b["<<j<<"]="<<d[j];
 }
float rez_vec (int n,int m , float **c, float d [ ])
{int j,i;
for(j=0;j<m;j++)
{
d[j]=0;
{for (i=0;i<n;i++)
d[j]+=c[i][j]+c[j][i];
}
}
return d[j];
}
void main ()
{int n,m;float a[5][5],b[5],**c;
puts ("\n Vvesti n\n");
cin>> n;
puts ("\n Vvesti m \n");
cin>>m;
**c=a[5][5];
vv_ms (n,m,c);
clrscr();
cout<<"\nLaboratorna robota BC_7\n" << "\nObrobka masiviv\n";
cout<<"\nStudenta grupi EMc-09-1\n";
cout<<"\nAlbu A.A.\n";
b[4]=rez_vec(n,m,c,b);
vd_ms(n,m,c);
vd_vc(n,b);
 }
lutick
5 / 5 / 0
Регистрация: 05.11.2009
Сообщений: 27
28.11.2010, 10:52     Задача: Обробка матриц #8
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
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
using namespace std;
void vv_ms(int n,int m,float **c)
{int i,j;
puts("\n Vvesti matricu \n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{cout<<"A["<<i<<"]["<<j<<"]=";
 cin>>c[i][j];
}
}
void vd_ms (int n,int m,float **c)
{int i,j;
 puts ("\n Ishodnaya matrica \n");
 for(i=0;i<n;i++)
 {for (j=0;j<m;j++)
  {cout<<"A["<<i+1<<j+1<<"]="<<c[i][j]<<endl;
  }
  }
  }
void vd_vc ( int n, float *d)
{int j;
 puts ("Rezultiruyshiy vector\n");
 for (j=0;j<n;j++)
 cout<<"b["<<j<<"]="<<d[j]<<endl;
 }
float* rez_vec (int n,int m , float **c)
{int j,i;
float *d=new float[n];
for(j=0;j<m;j++)
{
d[j]=0;
{for (i=0;i<n;i++)
d[j]+=c[i][j]+c[j][i];
}
}
return d;
}
int main ()
{int n,m;
float *b,**c;
puts ("Vvesti n:");
cin>> n;
puts ("Vvesti m:");
cin>>m;
c=new float*[n];
for(int i=0;i<n;i++)
c[i]=new float[m];
b=new float[n];
vv_ms (n,m,c);
cout<<"\nLaboratorna robota BC_7\n" << "\nObrobka masiviv\n";
cout<<"\nStudenta grupi EMc-09-1\n";
cout<<"\nAlbu A.A.\n";
b=rez_vec(n,m,c);
vd_ms(n,m,c);
vd_vc(n,b);
getch();
for(int i=0;i<n;i++)
delete c[i];
delete []c;
delete []b;
return 0;
 }
вроде работает
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
28.11.2010, 11:08  [ТС]     Задача: Обробка матриц #9
lutick
компиляция пишет
Ошибку в строке __ using namespace std;
что тут должно быть??
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
28.11.2010, 11:20     Задача: Обробка матриц #10
Цитата Сообщение от Oscar1209 Посмотреть сообщение
Ошибку в строке __ using namespace std;
Какой у вас компилятор?
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
28.11.2010, 11:26  [ТС]     Задача: Обробка матриц #11
Цитата Сообщение от MILAN Посмотреть сообщение
Какой у вас компилятор?
Turbo C++ v4.5

а у вас всё работает??
какой вы программой пользуетесь?? =)
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
28.11.2010, 11:41     Задача: Обробка матриц #12
У меня VS 2008, сейчас попробую отредактировать!!!

Добавлено через 12 минут
Вот, работает, только незнаю правильно ли!!!!

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
#include <iostream.h>
#include <conio.h>
#include <malloc.h>
int isprime (int n) //функия определяющая простое число или нет(взято с википедии)
{
    if (n < 2) return 0;
    if (n == 2) return 1;
    if (n % 2 == 0) return 0;
    for (int j = 3; j * j <= n; j += 2)
     if (n % j == 0) return 0;
    return 1;
}
long int PerfectNumber(long int m) //функция возвращающая сумму делителей числа
{
    long int s=1;
    for(int i=2;i<=m/2;i++)
        if(m%i==0) s+=i;
    return s;
}
int main()
{
    cout<<"Enter number elements of array  = ";
    int n;
    cin>>n;
    int i;
    long int *x;
        x=(long int *)malloc(n*sizeof(long int));
    cout<<"Enter lelments via <Enter>:\n";
    int m=0;
    for(i=0;i<n;i++)
    {
        cin>>x[i];
        if(isprime(x[i])) m++; //m - определяем размер массива Y
    }
 
    int *y;
    y=(int *)malloc(n*sizeof(int));
    int k=0;
    for(i=0;i<n;i++)
    {
        if(isprime(x[i]))
        {
            y[k]=i; //присваиваем индекс элемента массива Х содержащий
                    //простое число в массив У
            k++;
        }
    }
    k=0;
    for(i=0;i<n;i++) if(x[i]==PerfectNumber(x[i])) k++;
    cout<<"\nNumber committed elements of array Х = "<<k<<endl;
    if(m==0)
        cout<<"In array X is not prime numbers.";
    else
    {
        cout<<"\nArray Y:\n";
        for( i=0;i<m;i++) cout<<y[i]<<" "; //т.к. нумерация массива идет с 0, то если нужно чтобы
                                                // она была с 1 - y[i]+1
    }
 
    free(x);
    free(y);
    getch();
    return 0;
}
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
28.11.2010, 11:57  [ТС]     Задача: Обробка матриц #13
MILAN
а вы какую програме редактировали ту что я кидал или тут что кинул lutick??
работает ваша прог. неправильно))
но я пост. спс за старание))
lutick
5 / 5 / 0
Регистрация: 05.11.2009
Сообщений: 27
28.11.2010, 12:12     Задача: Обробка матриц #14
поробуй ето
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
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<alloc.h>
#include<math.h>
//using namespace std;
void vv_ms(int n,int m,float **c)
{int i,j;
puts("\n Vvesti matricu \n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{cout<<"A["<<i<<"]["<<j<<"]=";
 cin>>c[i][j];
}
}
void vd_ms (int n,int m,float **c)
{int i,j;
 puts ("\n Ishodnaya matrica \n");
 for(i=0;i<n;i++)
 {for (j=0;j<m;j++)
  {cout<<"A["<<i+1<<j+1<<"]="<<c[i][j]<<endl;
  }
  }
  }
void vd_vc ( int n, float *d)
{int j;
 puts ("Rezultiruyshiy vector\n");
 for (j=0;j<n;j++)
 cout<<"b["<<j<<"]="<<d[j]<<endl;
 }
float* rez_vec (int n,int m , float **c)
{int j,i;
float *d=new float[n];
for(j=0;j<m;j++)
{
d[j]=0;
{for (i=0;i<n;i++)
d[j]+=c[i][j]+c[j][i];
}
}
return d;
}
int main ()
{int n,m;
float *b,**c;
puts ("Vvesti n:");
cin>> n;
puts ("Vvesti m:");
cin>>m;
c=new float*[n];
for(int i=0;i<n;i++)
c[i]=new float[m];
b=new float[n];
vv_ms (n,m,c);
cout<<"\nLaboratorna robota BC_7\n" << "\nObrobka masiviv\n";
cout<<"\nStudenta grupi EMc-09-1\n";
cout<<"\nAlbu A.A.\n";
b=rez_vec(n,m,c);
vd_ms(n,m,c);
vd_vc(n,b);
getch();
for(int i=0;i<n;i++)
delete c[i];
delete []c;
delete []b;
return 0;
 }
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
28.11.2010, 12:33  [ТС]     Задача: Обробка матриц #15
lutick
а какой ты пользуешься программой???
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
28.11.2010, 12:49     Задача: Обробка матриц #16
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
//////////////////////////////////////////////////////////////////////////////////////
//Дано матрицу А{a i,j},где i,j=1,2,3...n. составить программу формирования вектора 
//B=(b1, b2, b3...bn), элементы которого находятся по формуле bj=(a i,j+a j,i),
//значение n=5.
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
typedef int                     T_num;
typedef std::vector<T_num>      T_row_col;
typedef std::vector<T_row_col>  T_matr;
//////////////////////////////////////////////////////////////////////////////////////
void  print_matr(const T_matr&  matr)
{
    for(T_matr::const_iterator  row_cur_it = matr.begin(); 
        row_cur_it != matr.end(); ++row_cur_it)
    {
        std::copy(row_cur_it->begin(), row_cur_it->end(), 
                  std::ostream_iterator<T_num>(std::cout, "\t"));                  
        std::cout << std::endl
                  << std::endl
                  << std::endl;
    }
}
//////////////////////////////////////////////////////////////////////////////////////
T_matr  transp(const T_matr&  matr)
{
    T_matr  matr_res(matr);
    for(size_t  i = 0; i < matr.size(); ++i)
    {
        for(size_t  j = 0; j < matr.size(); ++j)
        {
            matr_res[i][j] = matr[j][i];
        }
    }
    return  matr_res;
}
//////////////////////////////////////////////////////////////////////////////////////
void  print_row_j_and_col_j_sum_from_matr(T_num  j, const T_matr&  matr)
{
    T_row_col  row_j(matr[j]);
    T_row_col  col_j(transp(matr)[j]);    
    std::transform(row_j.begin(), row_j.end(), col_j.begin(), 
                   std::ostream_iterator<T_num>(std::cout, "\t"), 
                   std::plus<T_num>());
 
    std::cout << std::endl
              << std::endl;
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите размерность матрицы: ";
    int  n = 0;
    std::cin >> n;
    T_matr  matr(n, T_row_col(n));
    std::cout << "Введите элементы матрицы размерностью "
              << n
              << ":"
              << std::endl;
 
    for(int i = 0; i < n; ++i)
    {
        for(int j = 0; j < n; ++j)
        {
            std::cout << "a["
                      << i + 1
                      << "]["
                      << j + 1
                      << "] = ";
 
            std::cin >> matr[i][j];
        }
        std::cout << std::endl;
    }
 
    std::cout << "Вы ввели матрицу "
              << std::endl;
 
    print_matr(matr);
 
    for(;;)
    {
        int  j = 0;
        do
        {
            std::cout << "Введите j из диапазона 1.."
                      << n
                      << ": ";
 
            std::cin >> j;        
        }while(j < 1
               || n < j);
        
 
        std::cout << "Сумма "
                  << j
                  << "-й строки и "
                  << j
                  << "-го столбца равна:"
                  << std::endl;
        print_row_j_and_col_j_sum_from_matr(j - 1, matr);
    } 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2010, 13:00     Задача: Обробка матриц
Еще ссылки по теме:

Умножение матриц C++
C++ Обработка матриц
C++ Транспонирование матриц. Произведение транспонированных матриц

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Oscar1209
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 19
28.11.2010, 13:00  [ТС]     Задача: Обробка матриц #17
Всё я разобрался =))
я тыкнул всем спс, кто старался мне помочь=))
тему можно закрыть
/closed
Yandex
Объявления
28.11.2010, 13:00     Задача: Обробка матриц
Ответ Создать тему
Опции темы

Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru