誰か教えて〜

このエントリーをはてなブックマークに追加
1七七四
テスト(c言語)で「ある文字列tの中に別の文字列sが含まれているかを調べて、t中のsの出現位置を整数型配列nに格納し、sの出現回数を関数strchknum(t,s,n)を作成せよ。」という問題が出たのですがよくわからなかったので誰か教えてください。
2デフォルトの名無しさん:2005/08/06(土) 03:59:37
はいはい、罵倒レスをする方はこちらですよ〜
3デフォルトの名無しさん:2005/08/06(土) 04:05:29
ここは過保護なインターネッツですね。
4デフォルトの名無しさん:2005/08/06(土) 04:17:43
test
5デフォルトの名無しさん:2005/08/06(土) 07:39:19
>>1
ぼるじょあがC/C++の宿題を片づけますYO! 48代目
http://pc8.2ch.net/test/read.cgi/tech/1121471445/l50
6デフォルトの名無しさん:2005/08/06(土) 07:43:58
とっとこはしるよハム太郎
7デフォルトの名無しさん:2005/08/06(土) 10:31:07
簡単にバッファオーヴァフローしそうな仕様だな。
8デフォルトの名無しさん:2005/08/06(土) 11:03:02
それが教師クオリティー
9デフォルトの名無しさん:2005/08/06(土) 12:06:31
>>1
できたよ〜
#define N_MAX 100

char *check(char *t,char *s)
{
  if(!*s) return t;
  if(!*t) return NULL;
  if(*t != *s) return NULL;

  {
    char *p;
    if(p = check(t+1,s+1)) --p;
    return p;
  }
}

int loop(char *t, char *p, char *s, int *n, int cnt)
{
  if( *p && cnt < N_MAX )
  {
    char *ret = check(p,s);
    if(ret) n[cnt++] = ret - t;
    return loop(t, p+1, s, n, cnt);
  }
  return cnt;
}

int strchknum(char *t,char *s, int *n)
{
  return loop(t, t, s, n, 0);
}
10デフォルトの名無しさん:2005/08/06(土) 12:35:37
ちょっと整理したよ〜

#define N_MAX 100

char *check(char *t,char *s)
{
  if(!*s) return t;
  if(*t && *t==*s && check(t+1,s+1)) return t;
  return NULL;
}

int loop(char *t, char index, char *s, int *n, int cnt)
{
  if( t[index] && cnt < N_MAX )
  {
    char *ret = check(t+index,s);
    if(ret) n[cnt++] = ret - t;
    return loop(t, index+1, s, n, cnt);
  }
  return cnt;
}

int strchknum(char *t,char *s, int *n)
{
  return loop(t, 0, s, n, 0);
}
11デフォルトの名無しさん:2005/08/06(土) 12:36:36
index は char じゃなくintの方がいいかな。意味的に。
12デフォルトの名無しさん
>>1はすでに宿題スレに逝きますたっ!