質問編集履歴

2

実現したいことを書き忘れていた

2019/11/15 09:00

投稿

likuson
likuson

スコア34

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- processingで最大値を求めるプログラムを作っています。具体的な内容は、まず配列の置き場としてa[]とします。次にランダムに100のなかから10個、数を生成します。配列の最初の値をiとし、最後の値をjとします。つまり、a[i]からa[j]の最大値を求めます。もしiとjが同じ値なら、a[i]を返します。そうでないなら、つぎのようなここからが言葉では説明できるのですが、プログラムが完成できません。まず、kという値を定義します。k=i+(j-i)/2です。つまり、配列のちょうど真ん中です。
5
+ processingで最大値を求めるプログラムを作っています。具体的な内容は、まず配列の置き場としてa[]とします。次にランダムに100のなかから10個、数を生成します。配列の最初の値をiとし、最後の値をjとします。つまり、a[i]からa[j]の最大値を求めます。もしiとjが同じ値なら、a[i]を返します。そうでないなら、つぎのようなここからが言葉では説明できるのですが、プログラムが完成できません。まず、kという値を定義します。k=i+(j-i)/2です。つまり、配列のちょうど真ん中です。そして、⭐kより前(a[i]~a[k])の最大値の値とkより後(a[k]~a[j])の最大値の値をそれぞれ求め⭐、そのそれぞれの値を比較し大きいほうの値を返します(max())。⭐で囲まれた部分が分かりません。プログラムでいうと最後のreturn(max());という部分です。解答お待ちしております。
6
6
 
7
7
 
8
8
 

1

ソースコードを書き忘れていた

2019/11/15 09:00

投稿

likuson
likuson

スコア34

test CHANGED
File without changes
test CHANGED
@@ -24,7 +24,61 @@
24
24
 
25
25
  ```processing
26
26
 
27
+ int D[];
28
+
29
+ int N=10;
30
+
31
+
32
+
33
+ void setup(){
34
+
35
+ D=new int [N];
36
+
37
+ for(int i=0;i<N;i++){ D[i]=(int)random(100); }
38
+
39
+ noLoop();
40
+
41
+ }
42
+
43
+
44
+
45
+ void draw()
46
+
47
+ {
48
+
49
+ println("----- before -----"); println(D);
50
+
51
+ println("Mqx value is "+FindMax(D,0,N-1));
52
+
53
+ }
54
+
55
+
56
+
57
+ int FindMax(int a[], int i, int j){
58
+
27
- ソースコード
59
+ int k;
60
+
61
+ if(i==j){
62
+
63
+ return(a[i]);
64
+
65
+ }else{
66
+
67
+ k=i+(j-i)/2;
68
+
69
+ return(max());
70
+
71
+ }
72
+
73
+
74
+
75
+
76
+
77
+ }
78
+
79
+
80
+
81
+
28
82
 
29
83
  ```
30
84