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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gazovik7
1 / 1 / 0
Регистрация: 04.12.2012
Сообщений: 27
#1

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

10.12.2012, 22:02. Просмотров 338. Ответов 2
Метки нет (Все метки)

Вот эта задача:
Заданы матрицы 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++):

Программирование с использованием подпрограмм общего вида типа PROCEDURE - C++
Помогите с задачей, слаб в подпрограммах, относительно недавно начали изучать. Вот задача: Заданы матрицы A= (i=1, 2, 3; j=1, 2, 3), B=...

Дерево общего вида - C++
Задание: Динамическое дерево произвольной размерности(ссылочная часть узла-список) знаю как обращаться с бинарным деревом, но с...

Деревья общего вида - C++
Дан указатель P1 на корень непустого дерева общего вида. Вывести значения всех вершин дерева в инфиксном порядке: вначале выводится...

Ошибка в функции общего вида - C++
Source.cpp: #include &quot;median.h&quot; #include &lt;vector&gt; #include &lt;iostream&gt; using namespace std; int main() ...

Дерево общего вида (да опять я) - C++
Всеравно неработает уже 2 ночь не сплю. одни проблеммы с етой программой, но что то мне подсказывает что вывод на екран надо переделать и...

Построить дерево общего вида по строке - C++
Господа, есть такое задание: Дана строка, описывающая дерево общего вида. Построить дерево по строке. Для каждого из уровней данного...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Issues
430 / 365 / 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2012, 00:22
Привет! Вот еще темы с ответами:

Создание итератора для дерева общего вида - C++
Возникла такая проблема: надо сделать итератор для дерева общего вида. Я не знаю, как его лучше сделать. Если кто-то с этим сталкивался,...

Объект общего вида (Object) в консольном приложении - C++
Всем привет. Не смог понять одной вещи: есть ли возможность создать функцию с аргументом типа Object(Любой объект, чтоб, что я туда не...

Дерево общего вида. Вставить, найти, удалить элемент. - C++
Объясните, пожалуйста, как это реализуется? Простыми словами или кодом. struct Node { int value; Node *Son; Node *Next; }; ...

Программа на С++ с использованием подпрограмм - C++
Здравствуйте, я тут новичек, мне нужно сделать лабораторную работу по С++.Вот мои старания, но моя программа полный провал, она...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru