С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Шмаков Дмитрий
0 / 0 / 0
Регистрация: 30.08.2010
Сообщений: 29
#1

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

29.11.2011, 20:26. Просмотров 757. Ответов 2
Метки нет (Все метки)

Здравствуйте не могу сделать, не знаю как!
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 минуты
ну что, никто не знает что ли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как вернуть значение? (C++):

Как вернуть значение лямбды? - C++
int someFunc() { return () -&gt; int {return 1;}; // не работает. Как возвращать такие штуки? }

Как правильно вернуть значение? - C++
class Stack { private: myString *st; ... myString getSt() { return st; // не работает }

Как вернуть значение функции в С++ - C++
Помогите с задачей

Функции, как вернуть значение? - C++
Нужно вернуть значение sum и min и вывести их main.cpp Но компилятор пишет, что: &quot;Ошибка : использована неинициализированная локальная...

Как вернуть значение из макроса? - C++
Как сделать стобы из макроса возвращалось значение? #include &quot;stdio.h&quot; int main(void) { #define mac(a,b)\ for (int...

Как вернуть значение функции - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; struct list{ float data; list *next; }; void my(list *p) {

2
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
29.11.2011, 20:44 #2
Передавайте эти параметры в функцию по ссылке

P.S. строки 112 и 135 в вашем коде никогда не выполнятся, потому что стоят после return
0
Шмаков Дмитрий
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--;
}
Зараннее спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 22:41
Привет! Вот еще темы с ответами:

Как вернуть значение из цикла в выражение? - C++
Даны натуральное число n, действительное число х. Вычислить формулу: Как вытащить значение m из цикла, чтоб вписать ее в формулу? ...

Как вернуть значение из фунции в переменную - C++
У меня так получается, что ввод в фу-ции не осуществляется. То есть a=0 b=0 c=0, так это и остаётся, cin в фу-ции вообще не дзаносит...

Как вернуть из моей функции значение реестра? - C++
Здравствуйте.2й день стал изучать работу с реестром.Ничего с мсдн не понял.Случайно нашел рабочий код для получения версии Windows.Все...

Как вернуть значение результат работы функции в переменную? - C++
Как вернуть значение результат работы функции в переменную? К примеру { URLDownloadTofile(1,2,3,4) } Возвращенное значение вернуть...


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

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

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