C言語で、アルファベットのつづりをばらばらに並べ替えたいときの処理。
例えば、
YamadaTaro
を
TamaaardYo
などとしたい場合。
実行イメージ(並べ替え結果を5回表示)
spell? YamadaTaro
result:
daTmYraaao
TamaaardYo
aTadaoaYrm
TaodYmaraa
rmdaaTYoaa
ソースコード
randomSpell.c
/*
randomSpell.c: スペルをランダムに並べ替える
*/
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
int i, j, length, r;
char name[256], work;
srand( (unsigned)time(NULL) );
/* スペル入力 */
printf("spell? ");
scanf("%s", name);
/* 入力したスペルの文字数取得 */
length = strlen(name);
/* 5回表示 */
printf("\nresult:\n");
for(i=0; i<5; i++){
/* 並べ替え */
for(j=0; j<length; j++){
r = rand() % length; /* 並べ替え位置をランダムで選択 */
work = name[j]; /* 並べ替え */
name[j] = name[r];
name[r] = work;
}
/* 並べ替え結果表示 */
printf("\t%s\n", name);
}
return 0;
}


コメント