-6

私の注文は「A < a < B < b ...< Z < z」と定義されています。特定の文字列が範囲内にあるかどうかを確認する必要があります。元。私の範囲が AaA - BaB の場合、AA または AaaB は範囲内ですが、CbAA ではありません。

始めるのに役立つ指針、アイデア、提案を探しています。これをCで実装します。

4

1 に答える 1

2

したがって、実装する必要があるのは、ルールに従って 2 つの文字列を比較する単一の関数だけです。これは、一種の修正された辞書的ソートです。

int compare_letters(char x, char y) {
  char lx = tolower(x);
  char ly = tolower(y);
  if (lx != ly) {
    return lx < ly;
  } else {
    return x < y;
  }
}
int smaller(const char* a, const char* b) {
  .. use the above function ... 
}

上記の関数を使用して、指定された文字列 x が範囲 (a,b) 内にあるかどうかを確認するには、smaller(a, x)およびを確認しsmaller(x, b)ます。それでおしまい。

関数 small に関するヒント - 文字列 char を char ごとに比較し、2 つの文字が異なる場合は、それらのcompare_letter. 文字列の 1 つが文字を使い果たした場合は、それを小さくすることを検討してください。

于 2013-01-11T18:57:38.873 に答える