無題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ryou

無題

#1

投稿記事 by Ryou » 15年前

『バブルの整列関数に必要な関数を付加し,任意個(<100)の正数(0以上100以下)を対象とするバブルの3種の整列プログラムを完成せよ.
整列処理中に交換、並べ替えが起きた場合,交換や並べ替えがおきた要素を文字*で,そうでない要素を文字.で表した文字列を出力せよ.整列対象のデータ(配列)内で,データで移動しているものが*となる』

という課題で、下のようなプログラムでいけると分ったのですが、
「for(k=0;k<n;printf(%s,k==j-1||k==j?*:.);k++);」
では何が起こっているのか分かりません

もっと簡単なプログラムでかけるのなら教えてください



#include <stdio.h>

int BubSort(int x[ ], int n);
void ShowData(int x[ ], int n);
int main(void);

#define NUM_DATA 10
int x[ ] = {9,8,7,6,5,4,3,2,1,0};



int BubSort(int x[ ], int n)
{
int i, j, temp;
int k;

for (i = 0; i < n - 1; i++) {
for (j = n - 1; j > i; j--) {
if (x[j - 1] > x[j]) {
temp = x[j];
x[j] = x[j - 1];
x[j - 1]= temp;


for(k=0;k<n;printf(%s,k==j-1||k==j?*:.);k++);
printf(\n);



}
}
}
}


void ShowData(int x[ ], int n)
{
int i;

for (i = 0; i < n ; i++)
printf(%d, x);
}

int main(void)
{

printf(BeforeSort:\n);
ShowData(x, NUM_DATA);
printf(\n\n);

BubSort(x, NUM_DATA);


printf(\n\nAfterSort:\n);
ShowData(x, NUM_DATA);
printf(\n);
return 0;
}

box

Re:無題

#2

投稿記事 by box » 15年前

コンパイルエラーが出ないソースを載せてください。

Ryou

Re:無題

#3

投稿記事 by Ryou » 15年前

#include <stdio.h>

int BubSort(int x[ ], int n);
void ShowData(int x[ ], int n);
int main(void);

#define NUM_DATA 10
int x[ ] = {9,8,7,6,5,4,3,2,1,0};



int BubSort(int x[ ], int n)
{
int i, j, temp,k;

for (i = 0; i < n - 1; i++) {
for (j = n - 1; j > i; j--) {
if (x[j - 1] > x[j]) {
temp = x[j];
x[j] = x[j - 1];
x[j - 1]= temp;


for(k=0;k<n;printf("%s",k==j-1||k==j?"*":"."),k++);
printf("\n");



}
}
}
}


void ShowData(int x[ ], int n)
{
int i;

for (i = 0; i < n ; i++)
printf("%d", x);
}

int main(void)
{

printf("ソート前:");
ShowData(x, NUM_DATA);
printf("\n\n");

BubSort(x, NUM_DATA);


printf("\n\nソート後:");
ShowData(x, NUM_DATA);
printf("\n");
return 0;
}



でコンパイルエラーはでないです。

asdf

Re:無題

#4

投稿記事 by asdf » 15年前

BubSort関数がおかしいです。

box

Re:無題

#5

投稿記事 by box » 15年前

> for(k=0;k<n;printf("%s",k==j-1||k==j?"*":"."),k++);

三項演算子 ?: についてご存じでなければ、調べてみてください。
if文で置き換えられます。


BubSort関数の戻り値がint型になっていますが、
どこかで使っているわけではないのでvoidでよいのではないでしょうか。


sage

Re:無題

#7

投稿記事 by sage » 15年前

テスト

閉鎖

“C言語何でも質問掲示板” へ戻る