Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 04.12.2012
Сообщений: 27

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

09.12.2012, 14:17. Показов 1311. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с задачей, слаб в подпрограммах, относительно недавно начали изучать.
Вот задача:
Заданы матрицы 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).
Элементы вводим сами.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.12.2012, 14:17
Ответы с готовыми решениями:

Программирование с использованием подпрограмм общего вида
Вот эта задача: Заданы матрицы A= (i=1, 2, 3; j=1, 2, 3), B= (i=1, 2, 3; j=1, 2, 3), то есть матрицы А и В - 3x3. Расставить в порядке...

Программирование задач с использованием комбинированного типа данных или структур
Написать программу данных задач используя комбинированный тип: Абитуриенты сдают пробные экзамены и получают сумму очков до 100....

Программирование с использованием подпрограмм.
Ноль в delphi! ПОМОГИТЕ составить программу. Вот задание: Из TStringGrid ввести 2 квадратные матрицы. Создать 2 массива: элементами первого...

13
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
09.12.2012, 14:44
Gazovik7, на каком языке? procedure в паскале есть, не в C++.
0
1 / 1 / 1
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 14:53  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
Gazovik7, на каком языке? procedure в паскале есть, не в C++.
На программе Microsoft Visual C++ надо; как в этой программе сделать эту задачу, помогите, пож-та (
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
09.12.2012, 15: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
#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;
}
0
1 / 1 / 1
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 16:27  [ТС]
Посмотрите, я написал сумму матриц А и Б:
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;
}
Только здесь у меня сперва элементы вводит сам пользователь, затем идёт подсчёт суммы матриц А и Б.
Как связать это с вашим кодом, чтобы сперва расставить в порядке возрастания элементы в главных диагоналях каждой матрицы, а затем сложить матрицы.
Как оформить расстановку в порядке возрастания элементов в виде подпрограммы?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
09.12.2012, 17:27
Требует проверки:
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;
}
0
1 / 1 / 1
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 17:50  [ТС]
Цитата Сообщение от 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;
}
а после этого ввода - сортировать главные диагонали массивов А и Б по возрастанию, а потом уже суммировать А и Б?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
09.12.2012, 17:54
Gazovik7, я же только что это сделал.
0
1 / 1 / 1
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 19:06  [ТС]
посмотрите, что не так:
ОПИСЫВАЮ, ЧТО В ЭТОЙ ПРОГРАММЕ:
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;
}
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
09.12.2012, 19:29
Gazovik7, по плану все верно, а вот в коде не совсем. Во-первых, стоит использовать ту функцию diagonal, которую я описал выше, дело в том, что количество строк и столбцов у обоих матриц могут различаться, а в данном коде с 67 по 70 строчки сортировка идет в одном цикле, надо отдельно вторую матрицу сортировать.
Во-вторых, 86 строку удалить.
0
1 / 1 / 1
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 20:29  [ТС]
Цитата Сообщение от 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;
}
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
09.12.2012, 20:47
А так с этого и надо начинать. Видимо, то, в чем Вы пишите не поддерживает стандартную 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', чтобы две матрицы в одну не сливались.
0
1 / 1 / 1
Регистрация: 04.12.2012
Сообщений: 27
09.12.2012, 21:00  [ТС]
Цитата Сообщение от 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)
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
09.12.2012, 21:46
Точно не скажу, но по-моему нужно сделать объявление функции swap, а потом ее описать. Т.е. перед или после 6 строчки добавить:
C++
1
void swap(float &, float &);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2012, 21:46
Помогаю со студенческими работами здесь

Программирование с использованием массивов и подпрограмм
Дана целая прямоугольная матрица размерности NxM. Найти наименьший элемент в каждой строке и упорядочить строки по возрастанию этих...

Программирование с использованием подпрограмм и модулей
Создать программу для расчета суммы из х первых натуральных чисел . Результат имеет исчисляться в подпрограмме с использованием цикла с...

Программирование с использованием подпрограмм - функций,ошибку не найду
24. Заданы три массива: W={w1, w2, w3}, Y={y1, y2, y3,y4}, Z={z1, z2, z3, z4, z5}. Решить уравнение p*x2+d*x+c=0, где p - максимальный...

Программирование арифметических выражений с использованием подпрограмм, размещаемых в модуле без формы
Добрый вечер всем,нужна помощь в написании программы с подпрограммой в делфи.Не понимаю как создать модуль без формы,перечитал много инфы и...

С использованием подпрограмм ввести два вектора размерности по 5 компонентов в каждой, целочисленного типа и вывода их
С использованием подпрограмм ввести два вектора размерности по 5 компонентов в каждой, целочисленного типа и вывода их. Образовать из них 3...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru