« 寝過ごしたわけでも無い屈辱 | メイン | 朝起きる事が辛いのは誰でも同じ »

2005年06月02日

某言語某言語ってどこの言語ですか

Cの課題

名前を昇順でソートし、重複した文字を消去せよ

C

#include <stdio>

int main(void){
	char myName[32] = {0},flag,temp;
	int i;
	
	scanf("%s",myName);
	
	while(1){
		i = 1;
		flag = 0;
		while(myName[i] != \0){
			if(myName[i]==myName[i-1]){
				myName[i]=127;	//お茶を濁しているかもしれません……。
			}else if(myName[i]<myName[i-1]){
				temp = myName[i];
				myName[i] = myName[i-1];
				myName[i-1] = temp;
				flag = 1;
			}
			i++;
		}
		if(!flag) break;
		//ここでも。
		for(i=0;myName[i]!=NULL;i++){ if(myName[i] == 127){ myName[i] = \0; break; } }
	}
	for(i=0;myName[i]!=\0;i++){ printf("%c",myName[i]); }
	printf("\n");
	
	return 0;
}

ポインタも構造体も使えない現状では、文字を消去すると言えばこんな手法しか思いつかなかった……。
結局お茶を濁したのが悲しい。

某言語

class NameSort {
	static char myName[] = { 'D','a','r','e','k','a','n','o','N','a','m','a','e','0' };

	public static void main(String args[]) {
		int i;
		char temp;
		
		while(true){
			i = 1;
			boolean flag = false;
			while(myName[i] != '0'){
				if(myName[i]==myName[i-1]){
					myName[i]=127;
				}else if(myName[i]<myName[i-1]){
					temp = myName[i];
					myName[i] = myName[i-1];
					myName[i-1] = temp;
					flag = true;
				}
				i++;
			}
			if(!flag) break;
		}
		for(i=0;myName[i]!='0'&myName[i]!=127;i++){ System.out.print(myName[i]); }
		System.out.print("\n");
	}
}

この程度だと、さすがに何の問題も無いですね。
とりあえずこの言語は文字列は文字列型で一括して扱ってらっしゃるようなので、無理矢理char型の配列にしました。
最後の0はご愛嬌。
お茶を濁すポイントも変わらず。

投稿者 miff : 2005年06月02日 23:57

コメント

Hurricanes goaltender Martin Gerber was rested, ready and relieved to make the most of his second chance in the playoffs http://www.1000links.happyhost.org/ http://www.1000links.happyhost.org/

投稿者 arriarri : 2006年05月30日 01:15



XREAAD