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

Программирование с использованием подпрограмм общего вида типа PROCEDURE - C++

Восстановить пароль Регистрация
 
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 14:17     Программирование с использованием подпрограмм общего вида типа PROCEDURE #1
Помогите с задачей, слаб в подпрограммах, относительно недавно начали изучать.
Вот задача:
Заданы матрицы A=[ai,j] (i=1, 2, 3; j=1, 2, 3), B=[bi,j] (i=1, 2, 3; j=1, 2, 3).
Расставить в порядке возрастания элементы в главных диагоналях каждой матрицы. Затем A и B сложить. Расстановку в порядке возрастания элементов оформить в виде подпрограммы.
Исходные данные:
матрица A (3x3) и матрица B (3х3).
Элементы вводим сами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 14:17     Программирование с использованием подпрограмм общего вида типа PROCEDURE
Посмотрите здесь:

Дерево общего вида. Вставить, найти, удалить элемент. C++
C++ Дерево общего вида
C++ Дерево общего вида (да опять я)
C++ Подпрограммы. Вычисления с использованием подпрограмм
Программирование с использованием подпрограмм общего вида C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.12.2012, 14:44     Программирование с использованием подпрограмм общего вида типа PROCEDURE #2
Gazovik7, на каком языке? procedure в паскале есть, не в C++.
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 14:53  [ТС]     Программирование с использованием подпрограмм общего вида типа PROCEDURE #3
Цитата Сообщение от BumerangSP Посмотреть сообщение
Gazovik7, на каком языке? procedure в паскале есть, не в C++.
На программе Microsoft Visual C++ надо; как в этой программе сделать эту задачу, помогите, пож-та (
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.12.2012, 15:12     Программирование с использованием подпрограмм общего вида типа PROCEDURE #4
Первая часть (упорядочить диагонали), элементы вводятся рандомно, если нужно переделаете:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
     srand(time(NULL));
     const int n=3, m=3;
     int a[n][m], b[n][m];
     std::cout<<"Before:\n";
     for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<(a[i][j]=rand()%10)<<'\t';
       std::cout<<"\n\n";
     }  
    std::cout<<"-----------------"<<'\n';
    for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<(b[i][j]=rand()%10)<<'\t';
       std::cout<<"\n\n";
     }  
     std::cout<<"After:\n";
     for (int i=0; i<n; i++) 
           for (int j=0; j<m; j++)
             if (i==j)
              for (int k=0; k<n; k++) 
                 for (int l=0; l<m; l++)
                if (k==l)
                         {
                          if (a[i][j]<a[k][l])
                             std::swap(a[i][j],a[k][l]);
                         if (b[i][j]<b[k][l])
                             std::swap(b[i][j],b[k][l]);
                         }
     for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<a[i][j]<<'\t';
       std::cout<<"\n\n";
     }   
     std::cout<<"-----------------"<<'\n';
     for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<b[i][j]<<'\t';
       std::cout<<"\n\n";
     }                       
    std::cout<<'\n';
    system("pause");
     return 0;
}
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 16:27  [ТС]     Программирование с использованием подпрограмм общего вида типа PROCEDURE #5
Посмотрите, я написал сумму матриц А и Б:
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
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
float sum(float**x,const int n,const int m);
int n,m,n1,m1;
int main()
{
    int i,j;
    float**a,**b;
    double x1,x2,x;
    
 
    cout<<"Kol-vo strok matrici A n=";
    cin>>n;
    cout<<"Kol-vo stolbcov matrici A m=";
    cin>>m;
    a=new float*[n];
    for(i=0;i<n;i++)
        a[i]=new float[m];
    cout<<"\nVvedi elementi matrici A\n";
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>a[i][j];
    cout<<"\nSformirovannaya Matrica A\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    
    
    cout<<"\nKol-vo strok matrici B n1=";
    cin>>n1;
    cout<<"Kol-vo stolbcov matrici B m1=";
    cin>>m1;
    b=new float*[n1];
    for(i=0;i<n1;i++)
        b[i]=new float[m1];
    cout<<"\nVvedi elementi matrici B\n";
    for(i=0;i<n1;i++)
        for(j=0;j<m1;j++)
            cin>>b[i][j];
    cout<<"\nSformirovannaya Matrica B\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
 
    x1=sum(a,n,m);
    cout<<"\nSumma elementov matrici A ravna "<<x1; 
    x2=sum(b,n1,m1);
    cout<<"\nSumma elementov matrici B ravna "<<x2;
  
    cout<<"\n";
    x=x1+x2;
    cout<<"\nSumma matric A B ravna "<<x;
    cout<<"\n";
return 0;
}
float sum(float**x,const int n,const int m)
{
    int i,j;
    float s;
    s=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            s=s+x[i][j];
return s;
}
Только здесь у меня сперва элементы вводит сам пользователь, затем идёт подсчёт суммы матриц А и Б.
Как связать это с вашим кодом, чтобы сперва расставить в порядке возрастания элементы в главных диагоналях каждой матрицы, а затем сложить матрицы.
Как оформить расстановку в порядке возрастания элементов в виде подпрограммы?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.12.2012, 17:27     Программирование с использованием подпрограмм общего вида типа PROCEDURE #6
Требует проверки:
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
#include <iostream>
#include <math.h>
#include <iomanip>
#include <cstdlib>
using namespace std;
float sum(float**x,const int n,const int m);
int n,m,n1,m1;
 
void diagonal(float**a, float**b,int n, int m, int n1, int m1)
{
      std::cout<<"Before:\n";
     for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<(a[i][j]=rand()%10)<<'\t';
       std::cout<<"\n\n";
     }  
    std::cout<<"-----------------"<<'\n';
    for (int i=0; i<n1; i++)
    { 
           for (int j=0; j<m1; j++)
             std::cout<<(b[i][j]=rand()%10)<<'\t';
       std::cout<<"\n\n";
     }  
     std::cout<<"After:\n";
     for (int i=0; i<n; i++) 
           for (int j=0; j<m; j++)
             if (i==j)
              for (int k=0; k<n; k++) 
                 for (int l=0; l<m; l++)
                if (k==l)
                          if (a[i][j]<a[k][l])
                             std::swap(a[i][j],a[k][l]);
     for (int i=0; i<n1; i++) 
           for (int j=0; j<m1; j++)
             if (i==j)
              for (int k=0; k<n1; k++) 
                 for (int l=0; l<m1; l++)
                if (k==l)
                         if (b[i][j]<b[k][l])
                             std::swap(b[i][j],b[k][l]);
     
     for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<a[i][j]<<'\t';
       std::cout<<"\n\n";
     }   
     std::cout<<"-----------------"<<'\n';
     for (int i=0; i<n1; i++)
    { 
           for (int j=0; j<m1; j++)
             std::cout<<b[i][j]<<'\t';
       std::cout<<"\n\n";
     }                       
    std::cout<<'\n';
}
 
int main()
{
    int i,j;
    float**a,**b;
    double x1,x2,x;
    
 
    cout<<"Kol-vo strok matrici A n=";
    cin>>n;
    cout<<"Kol-vo stolbcov matrici A m=";
    cin>>m;
    a=new float*[n];
    for(i=0;i<n;i++)
        a[i]=new float[m];
    cout<<"\nVvedi elementi matrici A\n";
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>a[i][j];
    cout<<"\nSformirovannaya Matrica A\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    
    
    cout<<"\nKol-vo strok matrici B n1=";
    cin>>n1;
    cout<<"Kol-vo stolbcov matrici B m1=";
    cin>>m1;
    b=new float*[n1];
    for(i=0;i<n1;i++)
        b[i]=new float[m1];
    cout<<"\nVvedi elementi matrici B\n";
    for(i=0;i<n1;i++)
        for(j=0;j<m1;j++)
            cin>>b[i][j];
    cout<<"\nSformirovannaya Matrica B\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
    cout<<'\n';
    diagonal(a,b,n,m,n1,m1);
    
    x1=sum(a,n,m);
    cout<<"\nSumma elementov matrici A ravna "<<x1; 
    x2=sum(b,n1,m1);
    cout<<"\nSumma elementov matrici B ravna "<<x2;
  
    cout<<"\n";
    x=x1+x2;
    cout<<"\nSumma matric A B ravna "<<x;
    cout<<"\n";
return 0;
}
float sum(float**x,const int n,const int m)
{
    int i,j;
    float s;
    s=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            s=s+x[i][j];
return s;
}
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 17:50  [ТС]     Программирование с использованием подпрограмм общего вида типа PROCEDURE #7
Цитата Сообщение от BumerangSP Посмотреть сообщение
Требует проверки:
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
#include <iostream>
#include <math.h>
#include <iomanip>
#include <cstdlib>
using namespace std;
float sum(float**x,const int n,const int m);
int n,m,n1,m1;
 
void diagonal(float**a, float**b,int n, int m, int n1, int m1)
{
      std::cout<<"Before:\n";
     for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<(a[i][j]=rand()%10)<<'\t';
       std::cout<<"\n\n";
     }  
    std::cout<<"-----------------"<<'\n';
    for (int i=0; i<n1; i++)
    { 
           for (int j=0; j<m1; j++)
             std::cout<<(b[i][j]=rand()%10)<<'\t';
       std::cout<<"\n\n";
     }  
     std::cout<<"After:\n";
     for (int i=0; i<n; i++) 
           for (int j=0; j<m; j++)
             if (i==j)
              for (int k=0; k<n; k++) 
                 for (int l=0; l<m; l++)
                if (k==l)
                          if (a[i][j]<a[k][l])
                             std::swap(a[i][j],a[k][l]);
     for (int i=0; i<n1; i++) 
           for (int j=0; j<m1; j++)
             if (i==j)
              for (int k=0; k<n1; k++) 
                 for (int l=0; l<m1; l++)
                if (k==l)
                         if (b[i][j]<b[k][l])
                             std::swap(b[i][j],b[k][l]);
     
     for (int i=0; i<n; i++)
    { 
           for (int j=0; j<m; j++)
             std::cout<<a[i][j]<<'\t';
       std::cout<<"\n\n";
     }   
     std::cout<<"-----------------"<<'\n';
     for (int i=0; i<n1; i++)
    { 
           for (int j=0; j<m1; j++)
             std::cout<<b[i][j]<<'\t';
       std::cout<<"\n\n";
     }                       
    std::cout<<'\n';
}
 
int main()
{
    int i,j;
    float**a,**b;
    double x1,x2,x;
    
 
    cout<<"Kol-vo strok matrici A n=";
    cin>>n;
    cout<<"Kol-vo stolbcov matrici A m=";
    cin>>m;
    a=new float*[n];
    for(i=0;i<n;i++)
        a[i]=new float[m];
    cout<<"\nVvedi elementi matrici A\n";
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>a[i][j];
    cout<<"\nSformirovannaya Matrica A\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    
    
    cout<<"\nKol-vo strok matrici B n1=";
    cin>>n1;
    cout<<"Kol-vo stolbcov matrici B m1=";
    cin>>m1;
    b=new float*[n1];
    for(i=0;i<n1;i++)
        b[i]=new float[m1];
    cout<<"\nVvedi elementi matrici B\n";
    for(i=0;i<n1;i++)
        for(j=0;j<m1;j++)
            cin>>b[i][j];
    cout<<"\nSformirovannaya Matrica B\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
    cout<<'\n';
    diagonal(a,b,n,m,n1,m1);
    
    x1=sum(a,n,m);
    cout<<"\nSumma elementov matrici A ravna "<<x1; 
    x2=sum(b,n1,m1);
    cout<<"\nSumma elementov matrici B ravna "<<x2;
  
    cout<<"\n";
    x=x1+x2;
    cout<<"\nSumma matric A B ravna "<<x;
    cout<<"\n";
return 0;
}
float sum(float**x,const int n,const int m)
{
    int i,j;
    float s;
    s=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            s=s+x[i][j];
return s;
}
Как сделать, если оставить только ручной ввод элементов массивов А и Б (без рандомов)
вот этот код:
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
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
float sum(float**x,const int n,const int m);
int n,m,n1,m1;
int main()
{
    int i,j;
    float**a,**b;
    double x1,x2,x;
    
 
    cout<<"Kol-vo strok matrici A n=";
    cin>>n;
    cout<<"Kol-vo stolbcov matrici A m=";
    cin>>m;
    a=new float*[n];
    for(i=0;i<n;i++)
        a[i]=new float[m];
    cout<<"\nVvedi elementi matrici A\n";
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>a[i][j];
    cout<<"\nSformirovannaya Matrica A\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    
    
    cout<<"\nKol-vo strok matrici B n1=";
    cin>>n1;
    cout<<"Kol-vo stolbcov matrici B m1=";
    cin>>m1;
    b=new float*[n1];
    for(i=0;i<n1;i++)
        b[i]=new float[m1];
    cout<<"\nVvedi elementi matrici B\n";
    for(i=0;i<n1;i++)
        for(j=0;j<m1;j++)
            cin>>b[i][j];
    cout<<"\nSformirovannaya Matrica B\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
    
 
[SIZE="6"]    //Здесь нужна сортировка главных диагоналей по возрастанию[/SIZE]
    
 
[SIZE="6"]    //Здесь подстроить под новые отсортированные массивы[/SIZE]
    x1=sum(a,n,m);
    cout<<"\nSumma elementov matrici A ravna "<<x1; 
    x2=sum(b,n1,m1);
    cout<<"\nSumma elementov matrici B ravna "<<x2;
  
    cout<<"\n";
    x=x1+x2;
    cout<<"\nSumma matric A B ravna "<<x;
    cout<<"\n";
return 0;
}
float sum(float**x,const int n,const int m)
{
    int i,j;
    float s;
    s=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            s=s+x[i][j];
return s;
}
а после этого ввода - сортировать главные диагонали массивов А и Б по возрастанию, а потом уже суммировать А и Б?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.12.2012, 17:54     Программирование с использованием подпрограмм общего вида типа PROCEDURE #8
Gazovik7, я же только что это сделал.
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 19:06  [ТС]     Программирование с использованием подпрограмм общего вида типа PROCEDURE #9
посмотрите, что не так:
ОПИСЫВАЮ, ЧТО В ЭТОЙ ПРОГРАММЕ:
1) сперва я сам ввожу кол-во строк и столбцов массива А, потом ввожу элементы массива А, далее на экран выходит мой массив А
потом я сам ввожу кол-во строк и столбцов массива Б, потом ввожу элементы массива Б, далее на экран выходит мой массив Б
2) потом сортирую главные диагонали массивов А и Б по возрастанию
3) потом суммирую элементы ОТСОРТИРОВАННОГО массива А, далее вывожу на экран
затем суммирую элементы ОТСОРТИРОВАННОГО массива Б, далее вывожу на экран
4) дальше суммирую суммы элементов ОТСОРТИРОВАННЫХ массивов А и Б, далее вывожу на экран.
Всё. Программа не запускается. Где у меня ошибка в коде?
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
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#include <cstdlib>
#include <ctime>
float sum(float**x,const int n,const int m);
int n,m,n1,m1;
int main()
 
{
    int i,j,k,l;
    float**a,**b;
    double x1,x2,x;
    
 
    //RUCHNOY VVOD I VIVOD MATRICI A
    cout<<"Kol-vo strok matrici A n=";
    cin>>n;
    cout<<"Kol-vo stolbcov matrici A m=";
    cin>>m;
    a=new float*[n];
    for(i=0;i<n;i++)
        a[i]=new float[m];
    cout<<"\nVvedi elementi matrici A\n";
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>a[i][j];
    cout<<"\nSformirovannaya Matrica A\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    
    
    //RUCHNOY VVOD I VIVOD MATRICI B
    cout<<"\nKol-vo strok matrici B n1=";
    cin>>n1;
    cout<<"Kol-vo stolbcov matrici B m1=";
    cin>>m1;
    b=new float*[n1];
    for(i=0;i<n1;i++)
        b[i]=new float[m1];
    cout<<"\nVvedi elementi matrici B\n";
    for(i=0;i<n1;i++)
        for(j=0;j<m1;j++)
            cin>>b[i][j];
    cout<<"\nSformirovannaya Matrica B\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
 
 
    //SORTIROVKA GLAVNIH DIAGONALEY MASSIVOV PO VOZRASTANIYU
    cout<<"Otsortirovanniy massiv\n";
    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
            if (i==j)
                for (k=0; k<n; k++) 
                    for (l=0; l<m; l++)
                        if (k==l)
                        {
                            if (a[i][j]<a[k][l])
                                swap(a[i][j],a[k][l]);
                            if (b[i][j]<b[k][l])
                                swap(b[i][j],b[k][l]);
                        }
                        for (i=0; i<n; i++)
                        {
                            for (j=0; j<m; j++)
                                cout<<a[i][j]<<'\t';
                            cout<<"\n\n";
                        }
                        cout<<"-----------------"<<'\n';
                        for (i=0; i<n1; i++)
                        { 
                            for (j=0; j<m1; j++)
                                cout<<b[i][j]<<'\t';
                            cout<<"\n\n";
                        }
                        cout<<'\n';
                        return 0;
    
    
    //SUMMA ELEMENTOV OTSORTIROVANNOGO MASSIVA A
    x1=sum(a,n,m);
    cout<<"\nSumma elementov matrici A ravna "<<x1; 
    
    //SUMMA ELEMENTOV OTSORTIROVANNOGO MASSIVA B
    x2=sum(b,n1,m1);
    cout<<"\nSumma elementov matrici B ravna "<<x2;
  
    //SUMMA OTSORTIROVANNIH MASSIVOV A B
    cout<<"\n";
    x=x1+x2;
    cout<<"\nSumma matric A B ravna "<<x;
    cout<<"\n";
return 0;
}
float sum(float**x,const int n,const int m)
{
    int i,j;
    float s;
    s=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            s=s+x[i][j];
return s;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.12.2012, 19:29     Программирование с использованием подпрограмм общего вида типа PROCEDURE #10
Gazovik7, по плану все верно, а вот в коде не совсем. Во-первых, стоит использовать ту функцию diagonal, которую я описал выше, дело в том, что количество строк и столбцов у обоих матриц могут различаться, а в данном коде с 67 по 70 строчки сортировка идет в одном цикле, надо отдельно вторую матрицу сортировать.
Во-вторых, 86 строку удалить.
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 20:29  [ТС]     Программирование с использованием подпрограмм общего вида типа PROCEDURE #11
Цитата Сообщение от BumerangSP Посмотреть сообщение
Gazovik7, по плану все верно, а вот в коде не совсем. Во-первых, стоит использовать ту функцию diagonal, которую я описал выше, дело в том, что количество строк и столбцов у обоих матриц могут различаться, а в данном коде с 67 по 70 строчки сортировка идет в одном цикле, надо отдельно вторую матрицу сортировать.
Во-вторых, 86 строку удалить.
Помогите правильно вписать вашу функцию, я просто в этом слабо разбираюсь
Вот переделал строки 67-70 и убрал 86 строку, но у меня постоянно выводит ошибку:
--------------------Configuration: 12 - Win32 Debug--------------------
Compiling...
12.cpp
E:\progr\12.cpp(67) : error C2065: 'swap' : undeclared identifier
Error executing cl.exe.

12.obj - 1 error(s), 0 warning(s)
Поправьте меня, пож-та.
Вот код:
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
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#include <cstdlib>
#include <ctime>
float sum(float**x,const int n,const int m);
int n,m,n1,m1;
int main()
 
{
    int i,j,k,l;
    float**a,**b;
    double x1,x2,x;
    
 
    //RUCHNOY VVOD I VIVOD MATRICI A
    cout<<"Kol-vo strok matrici A n=";
    cin>>n;
    cout<<"Kol-vo stolbcov matrici A m=";
    cin>>m;
    a=new float*[n];
    for(i=0;i<n;i++)
        a[i]=new float[m];
    cout<<"\nVvedi elementi matrici A\n";
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>a[i][j];
    cout<<"\nSformirovannaya Matrica A\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    
    
    //RUCHNOY VVOD I VIVOD MATRICI B
    cout<<"\nKol-vo strok matrici B n1=";
    cin>>n1;
    cout<<"Kol-vo stolbcov matrici B m1=";
    cin>>m1;
    b=new float*[n1];
    for(i=0;i<n1;i++)
        b[i]=new float[m1];
    cout<<"\nVvedi elementi matrici B\n";
    for(i=0;i<n1;i++)
        for(j=0;j<m1;j++)
            cin>>b[i][j];
    cout<<"\nSformirovannaya Matrica B\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
 
 
    //SORTIROVKA GLAVNIH DIAGONALEY MASSIVOV PO VOZRASTANIYU
    cout<<"Otsortirovanniy massiv\n";
     for (i=0; i<n; i++) 
           for (j=0; j<m; j++)
             if (i==j)
              for (k=0; k<n; k++) 
                 for (l=0; l<m; l++)
                if (k==l)
                          if (a[i][j]<a[k][l])
                             swap(a[i][j],a[k][l]);
     for (i=0; i<n1; i++) 
           for (j=0; j<m1; j++)
             if (i==j)
              for (k=0; k<n1; k++) 
                 for (l=0; l<m1; l++)
                if (k==l)
                         if (b[i][j]<b[k][l])
                             swap(b[i][j],b[k][l]);
 
 
    //VIVOD OTSORTIROVANNIH MASSIVOV A B
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
    
    //SUMMA ELEMENTOV OTSORTIROVANNOGO MASSIVA A
    x1=sum(a,n,m);
    cout<<"\nSumma elementov matrici A ravna "<<x1; 
    
    //SUMMA ELEMENTOV OTSORTIROVANNOGO MASSIVA B
    x2=sum(b,n1,m1);
    cout<<"\nSumma elementov matrici B ravna "<<x2;
  
    //SUMMA OTSORTIROVANNIH MASSIVOV A B
    cout<<"\n";
    x=x1+x2;
    cout<<"\nSumma matric A B ravna "<<x;
    cout<<"\n";
return 0;
}
float sum(float**x,const int n,const int m)
{
    int i,j;
    float s;
    s=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            s=s+x[i][j];
return s;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.12.2012, 20:47     Программирование с использованием подпрограмм общего вида типа PROCEDURE #12
А так с этого и надо начинать. Видимо, то, в чем Вы пишите не поддерживает стандартную swap. swap - это void функция, которая меняет значениями две переменных. Придется ее самому добавить.
C++
1
2
3
4
5
6
void swap(float &x, float &y)
{
      float temp=x;
      x=y;
      y=temp;
}
И между 84 и 85 строчками добавить что-то типа cout<<'\n', чтобы две матрицы в одну не сливались.
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 21:00  [ТС]     Программирование с использованием подпрограмм общего вида типа PROCEDURE #13
Цитата Сообщение от BumerangSP Посмотреть сообщение
А так с этого и надо начинать. Видимо, то, в чем Вы пишите не поддерживает стандартную swap. swap - это void функция, которая меняет значениями две переменных. Придется ее самому добавить.
C++
1
2
3
4
5
6
void swap(float &x, float &y)
{
      float temp=x;
      x=y;
      y=temp;
}
И между 84 и 85 строчками добавить что-то типа cout<<'\n', чтобы две матрицы в одну не сливались.
Подправьте, пож-та мой код.
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
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#include <cstdlib>
#include <ctime>
float sum(float**x,const int n,const int m);
int n,m,n1,m1;
int main();
 
 
{
    int i,j,k,l;
    float**a,**b;
    double x1,x2,x;
    void swap(float &x, float &y)
{
      float temp=x;
      x=y;
      y=temp;
} 
    void diagonal(float**a, float**b,int n, int m, int n1, int m1){
    //RUCHNOY VVOD I VIVOD MATRICI A
    cout<<"Kol-vo strok matrici A n=";
    cin>>n;
    cout<<"Kol-vo stolbcov matrici A m=";
    cin>>m;
    a=new float*[n];
    for(i=0;i<n;i++)
        a[i]=new float[m];
    cout<<"\nVvedi elementi matrici A\n";
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>a[i][j];
    cout<<"\nSformirovannaya Matrica A\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    
    
    //RUCHNOY VVOD I VIVOD MATRICI B
    cout<<"\nKol-vo strok matrici B n1=";
    cin>>n1;
    cout<<"Kol-vo stolbcov matrici B m1=";
    cin>>m1;
    b=new float*[n1];
    for(i=0;i<n1;i++)
        b[i]=new float[m1];
    cout<<"\nVvedi elementi matrici B\n";
    for(i=0;i<n1;i++)
        for(j=0;j<m1;j++)
            cin>>b[i][j];
    cout<<"\nSformirovannaya Matrica B\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
 
 
    //SORTIROVKA GLAVNIH DIAGONALEY MASSIVOV PO VOZRASTANIYU
    cout<<"Otsortirovanniy massiv\n";
     for (i=0; i<n; i++) 
           for (j=0; j<m; j++)
             if (i==j)
              for (k=0; k<n; k++) 
                 for (l=0; l<m; l++)
                if (k==l)
                          if (a[i][j]<a[k][l])
                             swap(a[i][j],a[k][l]);
     for (i=0; i<n1; i++) 
           for (j=0; j<m1; j++)
             if (i==j)
              for (k=0; k<n1; k++) 
                 for (l=0; l<m1; l++)
                if (k==l)
                         if (b[i][j]<b[k][l])
                             swap(b[i][j],b[k][l]);
 
    
    //VIVOD OTSORTIROVANNIH MASSIVOV A B
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout<<setw(5)<<a[i][j]<<"  ";
            cout<<"\n";
    }
    cout<<"\n";
    for(i=0; i<n1; i++)
    {
        for(j=0; j<m1; j++)
            cout<<setw(5)<<b[i][j]<<"  ";
            cout<<"\n";
    }
    }
             diagonal(a,b,n,m,n1,m1);
 
    //SUMMA ELEMENTOV OTSORTIROVANNOGO MASSIVA A
    x1=sum(a,n,m);
    cout<<"\nSumma elementov matrici A ravna "<<x1; 
    
    //SUMMA ELEMENTOV OTSORTIROVANNOGO MASSIVA B
    x2=sum(b,n1,m1);
    cout<<"\nSumma elementov matrici B ravna "<<x2;
  
    //SUMMA OTSORTIROVANNIH MASSIVOV A B
    cout<<"\n";
    x=x1+x2;
    cout<<"\nSumma matric A B ravna "<<x;
    cout<<"\n";
return 0;
}
float sum(float**x,const int n,const int m)
{
    int i,j;
    float s;
    s=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            s=s+x[i][j];
return s;
}
Выдаёт такую ошибку:
--------------------Configuration: 12 - Win32 Debug--------------------
Compiling...
12.cpp
E:\progr\12.cpp(11) : error C2447: missing function header (old-style formal list?)
Error executing cl.exe.

12.obj - 1 error(s), 0 warning(s)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 21:46     Программирование с использованием подпрограмм общего вида типа PROCEDURE
Еще ссылки по теме:

Деревья общего вида C++
C++ Объект общего вида (Object) в консольном приложении
Программа на С++ с использованием подпрограмм C++

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

Или воспользуйтесь поиском по форуму:
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.12.2012, 21:46     Программирование с использованием подпрограмм общего вида типа PROCEDURE #14
Точно не скажу, но по-моему нужно сделать объявление функции swap, а потом ее описать. Т.е. перед или после 6 строчки добавить:
C++
1
void swap(float &, float &);
Yandex
Объявления
09.12.2012, 21:46     Программирование с использованием подпрограмм общего вида типа PROCEDURE
Ответ Создать тему
Опции темы

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