編集:グローバルまたは静的でなく、ベクトルまたは動的ベクトルなしでそれを実行しようとするとどうなりますか?
2 つのベクトルを作成し、2 つの配列の各要素の商である新しいベクトルをアドレス渡しする関数を用意しようとしています。つまり、V1 は 1 1 2 2 3 4 V2 は 2 2 1 1 2 2 期待される結果は 2 2 2 2 6 8 です。
私の問題は、乱数を受け取るため、「quoziente」関数から「r」の結果を送信するときです。問題は、関数が実行中にのみ存在することですが、実行を停止すると変数も一緒に死ぬことだと思います。どうすればいいですか?「ris」に正しいアドレスを渡していることは確かです。操作の要素を印刷しようとしましたが、正しい操作を行っていると確信しています。どんな助けでも本当に感謝しています! ありがとう
コードは次のとおりです。
1 #include <iostream>
2 using namespace std;
3
4
5
6 void readarray (int* v, int dim) {
7 for(int i=0; i<dim; i++) {
8 cin >> v[i];
9 }
10 }
11
12 void printarray(int* v, int dim) {
13 for(int i=0; i<dim; i++) {
14 cout << v[i] << " ";
15 }
16 cout << endl;
17 }
18
19 int main() {
20 int v1[7];
21 int v2[7];
22 int *ris;
23
24 cout << "V1";
25 readarray(v1,7);
26 cout << "V2";
27 readarray(v2,7);
28 ris = quoziente(v1,v2,7);
29 cout << "V1";
30 printarray(v1,7);
31 cout << "V2";
32 printarray(v2,7);
33 cout << "ris ";
34 printarray(ris,7);
35
36 return 0;
37 }
38
39 int* quoziente (int* v1, int* v2, int dim) {
40 int r[7];
41
42 for(int i=0; i<dim; i++) {
43 r[i] = v1[i] * v2[i];
44 cout << r[i] << " ";
45 }
46 cout << endl;
47 return r;
48 }