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

как вернуть значение? - C++

Восстановить пароль Регистрация
 
Шмаков Дмитрий
0 / 0 / 0
Регистрация: 30.08.2010
Сообщений: 29
29.11.2011, 20:26     как вернуть значение? #1
Здравствуйте не могу сделать, не знаю как!
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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
#include <cstddef>
using namespace std;
//Прототип функции для ввода матрицы
long** inputm(int n, int m);
//Прототип функции для вывода матрицы
void outputm(long** a, int n, int m);
//Прототип функции для вывода вектора
void outputv(double* S, int k);
//Прототип функции для формирования вектора, в котором будут отображаться значения k
double* znachk(long** a, int n, int m, int k);
//Прототип функции для формирования вектора из нужных сумм
double* summ(long** a, int n, int m, int l);
// Главная функция 
void main()
{
setlocale(LC_ALL,"Russian");
long** a;
double *S1, *S2;
int n, m, k, l;
cout<<"\n Введите кол-во строк матрицы A = \n";
cin>>n;
cout<<"\n Введите кол-во столбцов матрицы A = \n";
cin>>m;
// Ввод матрицы A
cout<<"\n Введите элементы матрицы A\n";
a=inputm(n,m);
// Вывод матрицы А
cout<<"\n *** Матрица А *** \n";
outputm(a,n,m);
cout<<endl;
//Формирование вектора для значений k
S1=znachk(a, n, m, k);
cout<<"\n Вектор 1: \n";
outputv(S1, k);
cout<<endl;
//Формирование вектора для сумм
S2=summ(a, n, m, l);
cout<<"\n Вектор 2: \n";
outputv(S2, l);
cout<<endl;
}
// Ввод матрицы
long** inputm(int n, int m)
{
    long** a;
    int i, j;
    a=new long* [n];
    if (a==NULL)    {
                        cout<<"\n Не хватило ОП \n";
                        exit(1);
                    }
    for(i=0;i<n;i++)
    {
        a[i]=new long [m];
        if(a[i]==NULL)  {
                            cout<<"\n Не хватило ОП \n";
                            exit(1);
                        }
    }
    for(i=0;i<n;i++)
    {
        cout<<"\n Введите "<<i<<" строку \n";
        for(j=0;j<m;j++)
            cin>>a[i][j];
    }
    return a;
}
 
 
// Вывод матрицы
void outputm(long** a, int n, int m)
{
    int i, j;
    for(i=0;i<n;i++)
    {
        cout<<endl;
        for(j=0;j<m;j++)
            cout<<setw(10)<<a[i][j];
    }
}
//Определение функции для вывода вектора
void outputv(double* S,int n)
{
int i;
for(i=0;i<n;i++)
{if(i%5==0) cout<<endl;
cout<<setw(15)<<S[i];
}
}
//Определение функции для формирования вектора, в котором будут отображаться значения k
double* znachk(long** a, int n, int m, int k)
{
int i, j;
k=0;
double* S1;
S1=new double[n];
if(S1==NULL) {
                cout<<"\n Не хватило ОП \n";
                exit(1);
            }
for(i=0, j=0; i<n, j>m; i++, j++)
    {if (a[i]==a[j])    {
                         S1[k]=i;
                         k++;
                        }
    }
return S1;
k--;
}
//Определение функции для формирования вектора из нужных сумм
double* summ(long** a, int n, int m, int l)
{
int i, j;
double* S2;
S2=new double[n];
if(S2==NULL) {
                cout<<"\n Не хватило ОП \n";
                exit(1);
            }
l=0;
for(i=0; i<n; i++)
    {S2[i]=0;
     for(j=0;j<m;j++)
        {if (a[i][j]<0) {
                         S2[l]=S2[l]+a[i][j];
                         l++;
                        }
        }
    }
return S2;
l--;
}
Вопрос заключается в следующем:
Как значения "k" и "l" из определения функции вернуть в главную, чтобы вывести вектор на экран?

Добавлено через 53 минуты
ну что, никто не знает что ли?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 20:26     как вернуть значение?
Посмотрите здесь:

Как вернуть значение функции C++
Как вернуть значение нескольких переменных в точку вызова функции C++
C++ Как вернуть значение результат работы функции в переменную?
как правильно вернуть значение? C++
C++ Как вернуть значение функции в С++
C++ Как вернуть из моей функции значение реестра?
Pthread.h, как вернуть из потоковой функции значение типа double? C++
C++ Функции, как вернуть значение?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
29.11.2011, 20:44     как вернуть значение? #2
Передавайте эти параметры в функцию по ссылке

P.S. строки 112 и 135 в вашем коде никогда не выполнятся, потому что стоят после return
Шмаков Дмитрий
0 / 0 / 0
Регистрация: 30.08.2010
Сообщений: 29
29.11.2011, 22:41  [ТС]     как вернуть значение? #3
сделал, все вроде заработало, но вектор неправильно выводит, точнее вообще не выводит? подскажите, должно получиться:

Вектор 1: вывести такие значения S1, что S1-я строка матрицы совпадает с S1-м столбцом.
Вектор 2: Найти сумму элементов в тех строках, которые содержат хотя бы 1 отрицательный элемент.

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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
#include <cstddef>
using namespace std;
//Прототип функции для ввода матрицы
long** inputm(int n, int m);
//Прототип функции для вывода матрицы
void outputm(long** a, int n, int m);
//Прототип функции для вывода вектора
void outputv(double* S, int k);
//Прототип функции для формирования вектора, в котором будут отображаться значения k
void znachk(long** a, int n, int m, double *S1, int &k);
//Прототип функции для формирования вектора из нужных сумм
void summ(long** a, int n, int m, double *S2, int &l);
// Главная функция 
void main()
{
setlocale(LC_ALL,"Russian");
long** a;
double *S1, *S2;
int n, m, k, l;
cout<<"\n Введите кол-во строк матрицы A = \n";
cin>>n;
cout<<"\n Введите кол-во столбцов матрицы A = \n";
cin>>m;
S1=new double[n];
if(S1==NULL) {
                cout<<"\n Не хватило ОП \n";
                exit(1);
            }
S2=new double[n];
if(S2==NULL) {
                cout<<"\n Не хватило ОП \n";
                exit(1);
            }
// Ввод матрицы A
cout<<"\n Введите элементы матрицы A\n";
a=inputm(n,m);
// Вывод матрицы А
cout<<"\n *** Матрица А *** \n";
outputm(a,n,m);
cout<<endl;
//Формирование вектора для значений k
znachk(a, n, m, S1, k);
cout<<"\n Вектор 1: \n";
outputv(S1, k);
cout<<endl;
//Формирование вектора для сумм
summ(a, n, m, S2, l);
cout<<"\n Вектор 2: \n";
outputv(S2, l);
cout<<endl;
}
// Ввод матрицы
long** inputm(int n, int m)
{
    long** a;
    int i, j;
    a=new long* [n];
    if (a==NULL)    {
                        cout<<"\n Не хватило ОП \n";
                        exit(1);
                    }
    for(i=0;i<n;i++)
    {
        a[i]=new long [m];
        if(a[i]==NULL)  {
                            cout<<"\n Не хватило ОП \n";
                            exit(1);
                        }
    }
    for(i=0;i<n;i++)
    {
        cout<<"\n Введите "<<i<<" строку \n";
        for(j=0;j<m;j++)
            cin>>a[i][j];
    }
    return a;
}
 
 
// Вывод матрицы
void outputm(long** a, int n, int m)
{
    int i, j;
    for(i=0;i<n;i++)
    {
        cout<<endl;
        for(j=0;j<m;j++)
            cout<<setw(10)<<a[i][j];
    }
}
//Определение функции для вывода вектора
void outputv(double* S,int n)
{
int i;
for(i=0;i<n;i++)
{if(i%5==0) cout<<endl;
cout<<setw(15)<<S[i];
}
}
//Определение функции для формирования вектора, в котором будут отображаться значения k
void znachk(long** a, int n, int m,  double *S1, int &k)
{
int i, j;
k=0;
for(i=0, j=0; i<n, j>m; i++, j++)
    {if (a[i]==a[j])    {
                         S1[k]=i;
                         k++;
                        }
    }
k--;
}
//Определение функции для формирования вектора из нужных сумм
void summ(long** a, int n, int m,  double *S2, int &l)
{
int i, j;
l=0;
for(i=0; i<n; i++)
    {S2[i]=0;
     for(j=0;j<m;j++)
        {if (a[i][j]<0) {
                         S2[l]=S2[l]+a[i][j];
                         l++;
                        }
        }
    }
l--;
}
Зараннее спасибо!
Yandex
Объявления
29.11.2011, 22:41     как вернуть значение?
Ответ Создать тему
Опции темы

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