C言語:名前のスペルをばらばらに並べ替える

Cプログラミング C言語

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;
}

コメント

タイトルとURLをコピーしました