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

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

Восстановить пароль Регистрация
 
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
10.12.2012, 22:02     Программирование с использованием подпрограмм общего вида #1
Вот эта задача:
Заданы матрицы A=[ai,j] (i=1, 2, 3; j=1, 2, 3), B=[bi,j] (i=1, 2, 3; j=1, 2, 3), то есть матрицы А и В - 3x3.
Расставить в порядке возрастания элементы в главных диагоналях каждой матрицы. Затем A и B сложить. Расстановку в порядке возрастания элементов оформить в виде подпрограммы.
Вот, что у меня вышло:
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
#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;
}
Выходит ошибка (работаю на MS Visual C++):
--------------------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)

Исправьте, где не так, пож-таа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 22:02     Программирование с использованием подпрограмм общего вида
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
10.12.2012, 23:15     Программирование с использованием подпрограмм общего вида #2
C++
1
2
#include <iostream>
#include <iomanip>

Не по теме:

C++
1
#include <time>

Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
11.12.2012, 00:22  [ТС]     Программирование с использованием подпрограмм общего вида #3
Вот мой код, всё пашет, делаю на MS Visual C++ (вопросики и сами вопросы - не обращайте внимания):
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
#include <iostream>
#include <math.h>
#include <iomanip>
#include <cstdlib>//???????????????????????????????????????????????
#include <ctime>//???????????????????????????????????????????????
using namespace std;//???????????????????????????????????????????????
float sum(float**x,const int n,const int m);//???????????????????????????????????????????????
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)//???????????????????????????????????????????????
{}                             //Почему здесь надо только эти скобки оставить??? Если я их убираю, то ничего не работает. Грамотно ли я поставил? Хотя если их оставить как есть, то программа отлично работает. Объясните, пож-та.
///////////////////////////
 
 
int main()
{
int i,j,k,l,n,m,n1,m1;
float**a,**b;//???????????????????????????????????????????????
float 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";
}
 
/////////////////////////////////////////////////////////Сортировка по главной диагонали матрицы А
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]);
 
/////////////////////////////////////////////////////////Вывод матрицы А после сортировки
cout<<"Otsortirovannaya matrica А\n";
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
cout<<setw(5)<<a[i][j]<<" ";
cout<<"\n";
}
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";
}
 
/////////////////////////////////////////////////////////Сортировка по главной диагонали матрицы В
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]);
 
/////////////////////////////////////////////////////////Вывод матрицы В после сортировки
cout<<"Otsortirovannaya matrica B\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);//???????????????????????????????????????????????
 
 
/////////////////////////////////////////////////////////Сумма элементов отсортированной матрицы А
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;
}
Yandex
Объявления
11.12.2012, 00:22     Программирование с использованием подпрограмм общего вида
Ответ Создать тему
Опции темы

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