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

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

Войти
Регистрация
Восстановить пароль
 
 
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
#1

Сделать так, чтобы функция возвращала параметр - C++

10.03.2013, 21:47. Просмотров 634. Ответов 16
Метки нет (Все метки)

В общем, есть 3 матрицы, выведение их на экран и перемножение, сделанное через класс. Функции mult1 и mult2 умножают и выводят сразу на экран. Как сделать, чтобы оно возвращало параметр, а показывалось в main. Не знаю, нормально ли я объяснил. В общем, вот код всей программы(писал в билдере) :
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <vcl.h>
#include <conio.h>
#define N 4
class mat{
int max,p,m,l[N][N],a[N],fl;
public: 
        void outm();
        mat mult1(mat,mat,mat);
        mat mult2(mat,mat,mat);
        mat();
        mat(int);
        mat(int,int);};
mat::mat()
{
for(int i=0;i<N;i++)
   {
        for(int j=0;j<N;j++)
        {
                l[i][j]=rand()%2;
        }
   }
}
 
mat::mat(int f)
{
for(int i=0;i<N;i++)
  {
        for(int j=0;j<N;j++)
        {
        if(j>i)l[i][j]=0;
        else
          {
                if(rand()%2==0)
                l[i][j]=1;
                else
                l[i][j]=f;
          }
        }
  }
}
 
 
mat::mat(int p, int m)
{
for(int i=0;i<N;i++)
  {
        for(int j=0;j<N;j++)
        {
           if(j<i)l[i][j]=0;
           else
           {
             if(rand()%2==1)
              l[i][j]=p;
              else
              l[i][j]=m;
            }
        }
  }
}
 
mat mat :: mult1(mat x1,mat x2,mat x3)
{
int mm[N][N];
int mm2[N][N];
for(int i=0;i<N;i++)
{
        for(int j=0;j<N;j++)
        {
        mm[i][j]=0;
 
            for(int k=0; k<N; k++)
            {
            mm[i][j]+=x1.l[i][k]*x2.l[k][j];
            }
        }
}
 
for(int i=0;i<N;i++)
{
        for(int j=0;j<N;j++)
{
         mm2[i][j]=0;
         for(int k=0; k<N;k++)
         {
            mm2[i][j]+=mm[i][k]*x3.l[k][j];}}}
 
for(int i=0;i<N;i++)
  {
        for(int j=0;j<N;j++)
        {
           cout<<mm2[i][j]<<"\t ";
        }
           cout<<"\n";
  }
}
mat mat :: mult2(mat x1,mat x2,mat x3){
int mm[N][N];
int mm2[N][N];
for(int i=0;i<N;i++)
{
        for(int j=0;j<N;j++)
        {
          mm[i][j]=0;
            for(int k=0; k<N; k++)
            {
              mm[i][j]+=x3.l[i][k]*x2.l[k][j];
            }
          }
}
 
for(int i=0;i<N;i++)
{
        for(int j=0;j<N;j++)
        {
           mm2[i][j]=0;
           for(int k=0; k<N;k++)
           {
                mm2[i][j]+=mm[i][k]*x1.l[k][j];
           }
        }
}
 
for(int i=0;i<N;i++)
  {
        for(int j=0;j<N;j++)
        {
           cout<<mm2[i][j]<<"\t ";
        }
           cout<<"\n";
  }
}
 
 
void mat :: outm()
{
for(int i=0;i<N;i++)
  {
        for(int j=0;j<N;j++)
        {
            cout<<l[i][j]<<" ";
        }
            cout<<"\n";
   }
};
 
void main()
{
int a,b,c;
cout<<"Vvedite M : ";
cin>>a;
cout<<"Vvedite M1 : ";
cin>>b;
cout<<"Vvedite M2 : ";
cin>>c;
cout<<"matrix 'A' which consist of '0' and '1'  \n";
mat k;
k.outm();
cout<<"\n\n\matrix 'B' which consist of '1' and 'M'\n";
mat p(a);
p.outm();
cout<<"\n\nmatrix 'C' which consist of 'M1' and 'M2'\n";
mat m(c,b);
m.outm();
cout<<"\n";
mat var;
var.mult1(k,p,m);
cout<<"\n\n";
mat var2;
var2.mult2(k,p,m);
cout<<"\n";
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 21:47     Сделать так, чтобы функция возвращала параметр
Посмотрите здесь:

Как сделать так, чтобы функция rand() возвращала разные значения - C++
Добрый вечер, как можно в visual studio в цикле каждый раз задавать новые рандомные значения перменной, к примеру for(int i=0;i&lt;10;i++) ...

Как сделать так что бы функция возвращала строку - C++
Как сделать так что бы функция возвращала строку

Как сделать, чтобы функция возвращала массив? - C++
Доброго времени суток! Есть функция которая находит значения 4х элементов массива. как сделать чтобы она возвращала сразу весь массив?

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

Нужно чтобы функция в зависимости от условий возвращала string или double - C++
Привет, как можно реализовать? Нужно чтобы функция в зависимости от условий возвращала string или double

Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? - C++
Вот пример кода: double gaus(int n, double c, double d) { int k,k1,kn,i,j; vector&lt;double&gt; t; double temp; for (k=1;k&lt;n-1;++k) ...

Какого типа std::endl ? Как сделать так, чтобы функция могла принимать endl в качестве аргумента? - C++
Что надо указать в прототипе функции, чтобы можно передавать std::endl в качестве аргумента? Уже 3 часа голову ломаю! :wall: Помогите,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
10.03.2013, 21:56     Сделать так, чтобы функция возвращала параметр #2
Цитата Сообщение от PEVELASKA Посмотреть сообщение
чтобы оно возвращало
Что - оно?
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
10.03.2013, 21:58  [ТС]     Сделать так, чтобы функция возвращала параметр #3
hofmn, функции mult1 mult2 должны возвращать значения перемноженной матрицы, чтобы в main показывать на экран, а не в самой mult1 mult2
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
10.03.2013, 22:10     Сделать так, чтобы функция возвращала параметр #4
Верните указатель на матрицу. Сама матрица должна размешаться в блоке вызывающей программы или хипе (но не в локальной памяти вызываемой программы).
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
10.03.2013, 22:11     Сделать так, чтобы функция возвращала параметр #5
Используйте std :: vector
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
10.03.2013, 22:14     Сделать так, чтобы функция возвращала параметр #6
Цитата Сообщение от hofmn Посмотреть сообщение
Используйте std :: vector
если даже динамические массивы и указатели не проходили? Лучше не надо. Пусть сначала указатели изучит. С ними проще.
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
10.03.2013, 22:18  [ТС]     Сделать так, чтобы функция возвращала параметр #7
gazlan, звучит дельно, но не совсем понятно.
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
10.03.2013, 22:54     Сделать так, чтобы функция возвращала параметр #8
не совсем понятно
Коротко, аллокируйте вашу результирующую матрицу там же, где у вас находится вызов программы умножения, а не внутри этой программы.

Судя по вашему коду, так и сделано, но установить это оказалось непросто :-)
dzhonrus
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 16
10.03.2013, 22:55     Сделать так, чтобы функция возвращала параметр #9
Result пробовал?
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
10.03.2013, 22:59  [ТС]     Сделать так, чтобы функция возвращала параметр #10
gazlan, спасибо, конечно, что пытаетесь мне, дураку, это всё дело объяснить, но вот от слов аллокируйте я совсем себя неловко чувствую. То есть, я должен из мульт убрать вывод, затем иницализировать в мейне и там же сделать вывод ? Но мне же надо, чтобы функции мульт1 и мульт2 что-то возвращали, а если я перменной mm2 приписываю мат, то нечего не выходит, иными словами, я так и не понял, как сделать так, чтобы функции принимала значение mm2
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
10.03.2013, 23:11     Сделать так, чтобы функция возвращала параметр #11
чтобы функции мульт1 и мульт2 что-то возвращали
А зачем? Пусть ничего не возвращают. Перепишите как

C++
1
2
void mult1(const mat&,const mat&,mat&);
void mult2(const mat&,const mat&,mat&);
Первые два параметра у вам не изменяются (только для чтения), третий - будет меняться в программе.

Опишите все матрицы в вызывающей программе (вероятно либо там же, либо отдельной функцией следует выполнить их инициализацию). Две первых инициализируете так же, как сейчас, третью - нулями (поможет в отладке).

После работы mult() две первых матрицы не изменятся, третья должна содержать результат работы функции.
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
11.03.2013, 00:00  [ТС]     Сделать так, чтобы функция возвращала параметр #12
gazlan, это задание такое, т.е. я принес, а мне сказали, что - нет, надо чтобы возвращало.
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
11.03.2013, 00:22     Сделать так, чтобы функция возвращала параметр #13
Цитата Сообщение от PEVELASKA Посмотреть сообщение
gazlan, это задание такое, т.е. я принес, а мне сказали, что - нет, надо чтобы возвращало.
Признаться, плохо представляю, что можно вернуть в вашем случае - любой вариант (кроме кода ошибки), влечет усложнение программы (динамическое созлание матрицы произведения, например).

Мне кажется, стоит сначала сделать только через передачу параметров, отладить и добиться работоспособности. А потом думать, как все это испортить - в соответствии с заданием. При этом у вас по крайней мере, будет вариант, с которым можно свериться.
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
11.03.2013, 00:57  [ТС]     Сделать так, чтобы функция возвращала параметр #14
gazlan, мне уже просто по-большому счету всё равно на отладку и тд. Учитель сказал, чтобы я просто сделал так, чтобы оно возвращало что-то. А программу он уже смотрел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 01:10     Сделать так, чтобы функция возвращала параметр
Еще ссылки по теме:

Как правильно описать функцию чтобы возвращала двумерный vector - C++
Как правильно написать чтобы результат передался в vec1? #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; const int...

Реализовать процедуру таким образом, чтобы она возвращала 2 значения - C++
Всем привет! Необходимо реализовать процедуру таким образом чтобы она возвращала 2 значения, вместе стандартного 1го.

Как сделать так,чтобы - C++
Собственно,здрасте. Собственно,я новичок в с++. В общем у меня возник вопрос: Сперва приведу пример,иначе не могу объяснить: int...

Организовать меню так, чтобы при каждом варианте выбора выполнялась определённая функция - C++
Подскажите пожалуйста, как правильно организовать такого рода меню с под-менюшками: 1. что-то; 2. что-то; 3. что-то; 4. что-то; ...

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


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

Или воспользуйтесь поиском по форуму:
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
11.03.2013, 01:10     Сделать так, чтобы функция возвращала параметр #15
Ну, если его это устроит, верните что-нибудь попроще - код ошибки, размер матрицы. Константную ссылку на результат (const mat&), в конце концов :-)
Yandex
Объявления
11.03.2013, 01:10     Сделать так, чтобы функция возвращала параметр
Ответ Создать тему
Опции темы

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