質問するログイン新規登録

質問編集履歴

2

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

2019/11/15 09:00

投稿

likuson
likuson

スコア34

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- processingで最大値を求めるプログラムを作っています。具体的な内容は、まず配列の置き場としてa[]とします。次にランダムに100のなかから10個、数を生成します。配列の最初の値をiとし、最後の値をjとします。つまり、a[i]からa[j]の最大値を求めます。もしiとjが同じ値なら、a[i]を返します。そうでないなら、つぎのようなここからが言葉では説明できるのですが、プログラムが完成できません。まず、kという値を定義します。k=i+(j-i)/2です。つまり、配列のちょうど真ん中です。
3
+ 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());という部分です。解答お待ちしております。
4
4
 
5
5
  ### 発生している問題・エラーメッセージ
6
6
 

1

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

2019/11/15 09:00

投稿

likuson
likuson

スコア34

title CHANGED
File without changes
body CHANGED
@@ -11,7 +11,34 @@
11
11
  ### 該当のソースコード
12
12
 
13
13
  ```processing
14
+ int D[];
15
+ int N=10;
16
+
17
+ void setup(){
18
+ D=new int [N];
19
+ for(int i=0;i<N;i++){ D[i]=(int)random(100); }
20
+ noLoop();
21
+ }
22
+
23
+ void draw()
24
+ {
25
+ println("----- before -----"); println(D);
26
+ println("Mqx value is "+FindMax(D,0,N-1));
27
+ }
28
+
29
+ int FindMax(int a[], int i, int j){
14
- ソースコード
30
+ int k;
31
+ if(i==j){
32
+ return(a[i]);
33
+ }else{
34
+ k=i+(j-i)/2;
35
+ return(max());
36
+ }
37
+
38
+
39
+ }
40
+
41
+
15
42
  ```
16
43
 
17
44
  ### 試したこと