『バブルの整列関数に必要な関数を付加し,任意個(<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;
}
無題
Re:無題
#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;
}
でコンパイルエラーはでないです。
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;
}
でコンパイルエラーはでないです。