質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

1回答

4881閲覧

Could not run the sketch.とエラーが出ます。対処法を教えてください。

kurappi

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/10/27 12:38

Could not run the sketch.とエラーが出ます。繰り返し処理のところで間違っているのだと思いますが、どうすればいいか分かりません。対処法を教えていただけないでしょうか。

int NUMBER_OF_DATA = 500;
int MAX_VALUE = 500;
int SIZE_X = 1000;
int SIZE_Y = MAX_VALUE;
float rad = 5;
int[] num;
int j = 0;
int kaisu = 0;

void setup() {
size(900,900);
frameRate(70);
textSize(100);
num = new int[NUMBER_OF_DATA];
for(int i = 0;i<NUMBER_OF_DATA;i++) {
num[i] = int(random(1,MAX_VALUE));
}
}

void draw() {
noStroke();
fill(255);
rect(0,0,900,900);
if(j<NUMBER_OF_DATA){
program1(num,left, right);
}
drawGraph();
j++;
}
int l,r;
int left,right;
void program1(int[] num,int left,int right) {
left = 0;
right = NUMBER_OF_DATA - 1;
int pivot = num[(left + right + 1)/ 2];

while(num[left] < num[right]) {
if(num[pivot] < num[left]) {
l = left;
}else{
left++;
}
if(num[pivot] > num[right]) {
r = right;
}else{
right--;
}
swap(num,l,r);

}
program1(num,left,pivot-1);
program1(num,pivot+1,right);
}

void swap(int[] num, int i, int j ){
int tmp;
tmp = num[i];
num[i] = num[j];
num[j] = tmp;
}

void drawGraph() {
for(int i=0;i<NUMBER_OF_DATA;i++){
stroke(i/1,num[i]/3,num[i]-300);
ellipse(i * 2*(500 / NUMBER_OF_DATA),SIZE_Y-num[i],2rad,2rad);
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

私の手元ではエラーメッセージが違うんですけど、どういう環境なのかしら。というか、前の質問ともエラーメッセージが違うのは何なんでしょう?
(私の手元のエラーメッセージは前の質問のエラーと同じ)

このプログラムがどういう結果になることを期待しているのか書いていないので知りませんが、再帰の終了条件が不適切で、再帰から脱出出来ずにスタックを使い尽くしているのだと思われます。

少なくとも、

processing

1void program1(int[] num, int left, int right) { 2 left = 0; 3 right = NUMBER_OF_DATA - 1; 4//中略 5 program1(num, left, pivot-1); 6 program1(num, pivot+1, right);

なんていう構造はあり得ないでしょう。
1.left,rightの引数を渡す意味がない
2.再帰から抜け出す条件がない

プログラムを見直して下さい...としか現時点では言えません。

投稿2020/10/27 12:54

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurappi

2020/10/27 14:03

ご回答ありがとうございます。Processing3.5.4です。前の質問のエラーは自分の方では無くなってました。 クイックソートの可視化をしようとしてました。 駄目なところを教えていただきありがとうございます。勉強し直してきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問