Hatena::Groupgeneration1986

仮想化済み古代魚

 | 

2008-08-22

K&R 演習2-5

22:01

//K&R 演習2-5 関数any(s1, s2)
//文字列s1中で文字列s2の任意の文字と等しい最初の文字の位置を返せ、
//一致しない場合は-1を返せ
//ex, s2が「abc」なら最初にa,b,cのどれかが見つかった場所を返す
#include <stdio.h>

#define MAX 6000
#define eq ==

int any(char s1[], char s2[]);

int main(void)
{
	int i;
	char c;
	char s1[MAX];
	char s2[5] = "abc";
	
	i = 0;
	
	printf("文章 ? ");
	while(i<MAX-1 && (c=getchar()) != EOF){
		s1[i++] = c;
	}
	s1[i] = '\0';

	printf("\n発見したのはs[%d]", any(s1, s2));

	return 0;	
}

//文字列s1中で文字列s2の任意の文字と等しい最初の文字の位置を返せ、
//一致しない場合は-1を返せ
//ex, s2が「abc」なら最初にa,b,cのどれかが見つかった場所を返す
int any(char s1[], char s2[])
{
	int	n;	//s2のカウント用
	int	i;	//s1のカウント用
	int	end;	//終了フラグ
	char	c;

	i = n = end = 0;
	//goto使ったら楽そうだけど使わない
	while (end != 1 && (c=s1[i++]) != '\0')
	{
		for (n = 0; s2[n] != '\0' && c != s2[n]; ++n)
			;
		if (c eq s2[n])
			end = 1;
	}
			
	if (end eq 0)
		i = -1;
	else if (end eq 1)	//44行時点でiが1字分ずれている
		i--;
		
	return i;
}

渋谷で通り魔事件

22:01

朝日新聞デジタル:どんなコンテンツをお探しですか?

だそうです。

犯罪予告検知より犯罪予報システムが必要なんじゃないか、とか思いましたが、それはマイノリティ・リポートみたいなP・K・ディックの世界ですよね。「幸福は義務です! 不満はアルゴリズムへの反逆です!」。うーん、ディストピア

ゲスト



トラックバック - http://generation1986.g.hatena.ne.jp/oldfish/20080822
 |